We messed up smbc_readdirplus :-(

Puran Chand puran157 at gmail.com
Tue Feb 26 08:46:40 UTC 2019


Gentle reminder.
Please review.

On Mon, Jan 21, 2019 at 3:56 PM Puran Chand <puran157 at gmail.com> wrote:

> Hi,
>
> Here is another patch over previous one.
> This one moves generate_inode() and setup_stat() functions from
> libsmb_stat.c to util.c so that the same can be used to create stat struct
> from file_info struct for smbc_readdirplus2 (Work in Progress).
> Also, removed SMBCCTX * from arguments for above both function as it
> doesn't seem to serve any purpose.
>
> GitLab Link <https://gitlab.com/samba-team/samba/merge_requests/202/>
>
> -Puran
>
> On Thu, Jan 17, 2019 at 2:28 PM Puran Chand <puran157 at gmail.com> wrote:
>
>>
>> Hi,
>>
>> Created a patch to capture fileID as ino_t which was not captured earlier.
>>
>> I intend to move 'setup_stat()' and 'generate_inode()' from
>> 'source3/libsmb/libsmb_stat.c' to util.c.
>> This will help in converting 'struct libsmb_file_info' to 'struct stat'
>> while retrieving 'struct stat' as part of new API smbc_readdirplus2()
>> Also this will get us remaining missing information as well (st_dev,
>> st_mode and st_blocks)
>>
>> GitLab Link <https://gitlab.com/samba-team/samba/merge_requests/199>
>>
>> -Puran
>>
>> On Wed, Jan 9, 2019 at 1:20 AM Jeremy Allison via samba-technical <
>> samba-technical at lists.samba.org> wrote:
>>
>>> On Tue, Jan 08, 2019 at 06:38:52AM +0100, Andreas Schneider wrote:
>>> > On Monday, 7 January 2019 23:20:30 CET Jeremy Allison wrote:
>>> > > Hi Puran,
>>> > >
>>> > > I'm looking at Red Hat bug:
>>> > >
>>> > > https://bugzilla.redhat.com/show_bug.cgi?id=1569868
>>> > >
>>> > > and realized we made a mistake in the
>>> > > implementation of smbc_readdirplus().
>>> > >
>>> > > struct libsmb_file_info
>>> > >
>>> > > should have been defined as a *superset*
>>> > > of the stat struct that smbc_stat
>>> > > returns, but currently it is missing
>>> > > the st_ino, st_dev, st_mode and st_blocks
>>> > > fields in order to be a superset of struct stat.
>>> > >
>>> > > We actually *have* this data as returned
>>> > > from the SMB2_FIND_ID_BOTH_DIRECTORY_INFO
>>> > > call when enumerating the directory, but
>>> > > then throw it away when populating the
>>> > > struct libsmb_file_info struct.
>>> > >
>>> > > I think the best way forward is to
>>> > > add a smbc_readdirplus_ex() call that
>>> > > returns a new 'struct libsmb_file_info_ex'
>>> > > struct that includes these extra fields.
>>> > >
>>> > > Comments from other Samba Team members ?
>>> >
>>> > I would name it smbc_readdirplus2(), than you can implement 3 if we
>>> still do
>>> > something stupid (which I don't expect) but who knows :-)
>>>
>>> What I'll do is create a struct that contains
>>> everything we can get back from SMB2_FIND_ID_BOTH_DIRECTORY_INFO,
>>> and have it returned from smbc_readdirplus2().
>>>
>>> Internally I'll store this struct and then translate
>>> to a returned struct libsmb_file_info for the
>>> return from smbc_readdirplus().
>>>
>>>


More information about the samba-technical mailing list