Directory cache and SMB2

Jeremy Allison jra at samba.org
Thu Mar 29 21:23:10 UTC 2018


On Thu, Mar 29, 2018 at 07:47:01PM +0200, Ralph Böhme wrote:
> On Thu, Mar 29, 2018 at 10:12:42AM -0700, Jeremy Allison wrote:
> > On Thu, Mar 29, 2018 at 03:43:07PM +0200, Ralph Böhme wrote:
> > > Hi!
> > > 
> > > It seems for SMB2 we still populate the directory cache, but we never use it. Am
> > > I missing something?
> > > 
> > > It gets populated via smbd_smb2_query_directory_send ->
> > > smbd_dirptr_lanman2_entry -> smbd_dirptr_get_entry -> DirCacheAdd for SMB2.
> > > 
> > > But the only point where it's used is via call_trans2findnext -> dptr_SearchDir
> > > -> SearchDir which is SMB1 only.
> > 
> > Yes, that's completely correct. That's because SMB1 uses a name
> > to resume from, wheras SMB2 always continues from the next position
> > (unless it's told to restart or close-and-reopen the listing).
> > 
> > We could make DirCacheAdd a noop for SMB2. Wanna do a patch ?
> 
> yup, I just needed the confirmation before jumping at it. :) Thanks!

Interesting. I just dug a little deeper, and there is indeed
a uint32_t SMB2_QUERY_DIRECTORY index value sent that is supposed
to be consulted if the SMB2_INDEX_SPECIFIED flag is sent, however
there's a Windows behavior note attached that says Windows servers
ignore this value - so this means no one will *ever* implement
this (might as well remove it from the spec. :-) :-).

Jeremy.



More information about the samba-technical mailing list