We messed up smbc_readdirplus :-(

Puran Chand puran157 at gmail.com
Mon Jan 21 10:26:48 UTC 2019


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().
>>
>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-s3-Move-generate_inode-and-setup_stat-to-util.c.patch
Type: text/x-patch
Size: 6253 bytes
Desc: not available
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20190121/4a5ab801/0001-s3-Move-generate_inode-and-setup_stat-to-util.c.bin>


More information about the samba-technical mailing list