Hi Phil,

Good idea to look at the other file systems. My (admittedly limited) understanding of disconnected dentries is based on the Documentation/ filesystems/Exporting doc, which may be a bit outdated. It suggests that lookup should return whatever d_splice_alias returns (assuming the inode exists), which may return NULL when the dentry is disconnected?

Also, it seems clear that ENOENT cases require returning NULL.

-sam

Ok, I think we are converging on something here :) Your latest namei3 patch seems to do what you describe, except for the part about returning whatever d_splice_alias() returns. I experimented by modifying line 213 of namei.c after applying your patch, so that rather than returning "NULL", it returns "res".

On 2.6 kernels, this still passes all LTP tests and handles deleting renamed directories without complaint. On 2.4 kernels it causes a kernel crash when deleting renamed directories. I think both of these results confirm what we see from other file systems: on 2.6 we should pass along the return code of d_splice_alias(), while on 2.4 we should always return NULL.

I doubt that there is a feature test for this- kinda hard to tell when there is a semantic change to the vfs lookup function.

Do you think that we should go with your patch plus a "#ifdef PVFS2_LINUX_KERNEL_2_4" wrapper to control whether it returns NULL or res on that one line?

-Phil
_______________________________________________
Pvfs2-developers mailing list
Pvfs2-developers@beowulf-underground.org
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to