[Pvfs2-developers] patch: namei bug fixes

Sam Lang slang at mcs.anl.gov
Mon Apr 2 13:27:47 EDT 2007


On Apr 2, 2007, at 12:03 PM, Phil Carns wrote:

>
>> It looks like if a non-null dentry is returned from lookup, dput  
>> is  called on that dentry, which decrements the usage count.  If  
>> null is  returned dput isn't called.  Could it be that we're  
>> actually leaking  entries in the dcache with these patches?
>> -sam
>
> Maybe?  I'm not sure what's supposed to happen here.  Just doing a  
> very quick survey, for example:
>
> 2.4.28: ext3_lookup() always returns NULL on success
>
> 2.4.28: nfs_lookup() always returns NULL on success
>
> 2.4.28: smb_lookup() always returns NULL on success
>
> 2.6.20: ext3_lookup() relies on d_splice_alias to determine non- 
> error return codes.  Returns NULL for some cases, but not all.
>
> 2.6.20: nfs_lookup() relies on d_materialize_unique to indirectly  
> determine non-error return codes.  Returns NULL for some cases, but  
> not all.
>
> 2.6.20: smb_lookup() always returns NULL on success
>
> So by rather dubious "what is everyone else doing?" methodology, it  
> would seem that on 2.4 we can always return NULL, but on 2.6 we  
> need to figure out why some file systems sometimes don't return  
> NULL and see if it applies to PVFS2?  It doesn't seem as cut and  
> dry as always doing one or the other on 2.6 - maybe there is a  
> little more going on here.

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

>
> -Phil
>



More information about the Pvfs2-developers mailing list