Re: [PATCH] ecryptfs: remove unnecessary d_drop calls in ecryptfs_link

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun Dec 06, 2009 at 06:05:30PM -0500, Erez Zadok (ezk@xxxxxxxxxxxxx) was quoted:
> Tyler/Dustin,
> 
> We found three unnecessary calls to d_drop inside ecryptfs_link().  They are
> called unconditionally whether ->link succeeds or not.  They are unnecessary
> because they often remove valid objects from the dcache, which forces these
> objects to be re-looked up the next time they're needed.  Presumably the
> user process which called link(2) is likely to use those newly created
> hardlinks right afterwards.  So removing them from the dcache hurts
> performance.
> 
> We've tested the following patch in ecryptfs by successfully hard-linking a
> few files, looking them up, deleting them, etc.  Nothing too intensive
> thou.n However, we don't have those d_drop calls in unionfs, and it's been
> working fine for years.  Moreover, we've tested with and without those three
> d_drop calls in our wrapfs "pass-through" stackable file system with the
> full ltp/racer/etc. suites and all's well.  Therefore, we're reasonably
> certain that this patch is good.  Bug discovered by Aseem Rastogi during
> code review.
> 
> Still, perhaps someone can recall some history and how come these d_drop
> calls showed up in ecryptfs_link()?

git blame points out commits 45ec4aba and ae56fb16, but you aren't the
first person to point out these seemingly pointless d_drop's.  I think
I'll go ahead and commit this to the next branch and give it plenty of
testing.

Applied to
git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6.git#next

> 
> Cheers,
> Erez.
> 
> ------------------------------------------------------------------------------
> 
> ecryptfs: remove unnecessary d_drop calls in wrapfs_link
> 
> Unnecessary because it would unhash perfectly valid dentries, causing them
> to have to be re-looked up the next time they're needed, which presumably is
> right after.
> 
> Signed-off-by: Aseem Rastogi <arastogi@xxxxxxxxxxxxx>
> Signed-off-by: Shrikar archak <shrikar84@xxxxxxxxx>
> Signed-off-by: Erez Zadok <ezk@xxxxxxxxxxxxx>
> diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c
> index 186d744..2dc0bdb 100644
> --- a/fs/ecryptfs/inode.c
> +++ b/fs/ecryptfs/inode.c
> @@ -463,9 +463,6 @@ out_lock:
>  	unlock_dir(lower_dir_dentry);
>  	dput(lower_new_dentry);
>  	dput(lower_old_dentry);
> -	d_drop(lower_old_dentry);
> -	d_drop(new_dentry);
> -	d_drop(old_dentry);
>  	return rc;
>  }
> 
--
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

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux