exportfs: untangle ISDIR logic in find_exported_dentry
Subsystems (3)
PATCH 5/8 exportfs: untangle ISDIR logic in find_exported_dentry
Rework some logic in find_exported_dentry so that we only have a single S_ISDIR check and logic that makes clear to the reader what we're really doing here.
Signed-off-by Christoph Hellwig <[email protected]>
fs/exportfs/expfs.c +10 -16
@@ -118,30 +118,23 @@if (IS_ERR (result))return result; -if (S_ISDIR (result->d_inode->i_mode) && - (result->d_flags &DCACHE_DISCONNECTED )) { -/* it is an unconnected directory, we must connect it */ - ; - }else { -if (acceptable (context, result)) -return result; -if (S_ISDIR (result->d_inode->i_mode)) { +if (S_ISDIR (result->d_inode->i_mode)) { +if (!(result->d_flags &DCACHE_DISCONNECTED )) { +if (acceptable (context, result)) +return result; err = -EACCES ; goto err_result; } + target_dir =dget (result); + }else { +if (acceptable (context, result)) +return result; + alias =find_acceptable_alias (result, acceptable, context);if (alias)return alias; - } -/* It's a directory, or we are required to confirm the file's -* location in the tree based on the parent information -*/ -dprintk ("find_exported_dentry: need to look harder for %s/%d\n" ,sb->s_id,*(int *)obj); -if (S_ISDIR (result->d_inode->i_mode)) - target_dir =dget (result); -else {if (parent ==NULL ) goto err_result;
@@ -151,6 +144,7 @@ goto err_result; } } +/* * Now we need to make sure that target_dir is properly connected. * It may already be, as the flag isn't always updated when connection
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs