On Wed, Apr 02, 2008 at 04:25:12PM +1000, Barry Naujok wrote: ... > + /* > + * Directory with a 'disconnected' dentry; get a reference to the > + * 'disconnected' dentry. > + */ > + dentry = list_entry(inode->i_dentry.next, struct dentry, d_alias); list_first_entry does the .next for you. ... > --- kern_ci.orig/fs/xfs/xfs_da_btree.c > +++ kern_ci/fs/xfs/xfs_da_btree.c > @@ -2176,6 +2176,22 @@ xfs_da_reada_buf( > return rval; > } > > + > +kmem_zone_t *xfs_da_name_zone; > + > +uchar_t * > +xfs_da_name_alloc(void) > +{ > + return kmem_zone_zalloc(xfs_da_name_zone, KM_SLEEP); > +} > + > +void > +xfs_da_name_free(const uchar_t *name) Since you don't care about the type anyway, you might want to make it void*, and remove the cast from the lookup_ci code. > +{ > + kmem_zone_free(xfs_da_name_zone, (void *)name); No need for the cast. > --- kern_ci.orig/fs/xfs/xfs_dir2_leaf.c > +++ kern_ci/fs/xfs/xfs_dir2_leaf.c > @@ -1301,6 +1301,15 @@ xfs_dir2_leaf_lookup( > * Return the found inode number. > */ > args->inumber = be64_to_cpu(dep->inumber); > + /* > + * If a case-insensitive match, allocate a buffer and copy the actual > + * name into the buffer. Return it via args->value. > + */ > + if (args->cmpresult == XFS_CMP_CASE) { > + args->value = xfs_da_name_alloc(); > + memcpy(args->value, dep->name, dep->namelen); > + args->valuelen = dep->namelen; Perhaps having a static inline xfs_da_name_dup(...) would be useful... ... > --- kern_ci.orig/fs/xfs/xfs_vnodeops.c > +++ kern_ci/fs/xfs/xfs_vnodeops.c > @@ -1762,24 +1762,33 @@ xfs_inactive( > int > xfs_lookup( > xfs_inode_t *dp, > - bhv_vname_t *dentry, > - xfs_inode_t **ipp) > + bhv_vstr_t *d_name, > + xfs_inode_t **ipp, > + bhv_vstr_t *ci_name) > { > xfs_inode_t *ip; > xfs_ino_t e_inum; > int error; > uint lock_mode; > + xfs_name_t name, rname; > > xfs_itrace_entry(dp); > > if (XFS_FORCED_SHUTDOWN(dp->i_mount)) > return XFS_ERROR(EIO); > > + name.name = (uchar_t *)d_name->name; d_name->name is: const unsigned char* name.name is: const uchar_t* Is there any reason why you use uchar_t - beyond the other parts of XFS use it? (I guess this is the same question that I asked before - coding style.) xfs_types.h defines uchar_t as unsigned char... Josef 'Jeff' Sipek. -- Defenestration n. (formal or joc.): The act of removing Windows from your computer in disgust, usually followed by the installation of Linux or some other Unix-like operating system. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html