Re: [PATCH] cifs: fix dentry hash calculation for case-insensitive mounts
Shirish Pargaonkar <[email protected]>
| Newsgroups | gmane.linux.file-systems.cifs |
|---|---|
| Message-ID | <[email protected]> |
On Fri, Feb 5, 2010 at 12:30 PM, Jeff Layton <[email protected]> wrote: > case-insensitive mounts shouldn't use full_name_hash(). Make sure we > use the parent dentry's d_hash routine when one is set. > > Reported-by: Dave Kleikamp <[email protected]> > Signed-off-by: Jeff Layton <[email protected]> > --- > fs/cifs/readdir.c | 7 +++++-- > 1 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c > index f5618f8..c343b14 100644 > --- a/fs/cifs/readdir.c > +++ b/fs/cifs/readdir.c > @@ -77,6 +77,11 @@ cifs_readdir_lookup(struct dentry *parent, struct qstr *name, > > cFYI(1, ("For %s", name->name)); > > + if (parent->d_op && parent->d_op->d_hash) > + parent->d_op->d_hash(parent, name); > + else > + name->hash = full_name_hash(name->name, name->len); > + > dentry = d_lookup(parent, name); > if (dentry) { > /* FIXME: check for inode number changes? */ > @@ -671,8 +676,6 @@ static int cifs_get_name_from_search_buf(struct qstr *pqst, > pqst->name = filename; > pqst->len = len; > } > - pqst->hash = full_name_hash(pqst->name, pqst->len); > -/* cFYI(1, ("filldir on %s",pqst->name)); */ > return rc; > } > > -- > 1.6.6 > > _______________________________________________ > linux-cifs-client mailing list > [email protected] > https://lists.samba.org/mailman/listinfo/linux-cifs-client > Jeff, these are functions, full_name_hash etc. treat name->name and name->len as character names strings and character name string lenghts, is that correct? There is not unicode consideration while generating hash values at this point?