Andrew Morton wrote: > On Tue, 13 Jan 2009 15:20:21 +0900 > hooanon05@xxxxxxxxxxx wrote: > >> Here are several fixes for linux-2.6.27/fs/ecryptfs. >> >> - The ecryptfs inode holds a reference to the lower inode, but doesn't >> increment the reference counter. When a user sets inotify to the >> ecryptfs inode, it may live without the corresponding dentry. In this >> case the referecen to the lower inode may be broken. >> This patch maintains the reference of the lower inode. >> >> - follow the VFS unlink sequence in ecryptfs_unlink() which is >> inrementing and decrementing the inode->i_count and the reference >> counter for the dentry. >> >> - maintain the link count and ctime in ecryptfs_rmdir() because a user >> may issue fstat(2) later. >> >> - remove the unnecessary d_drop()s in ecryptfs_link(). >> >> And I have experienced a strange behaviour. When ecryptfs gets -ENOSPC >> from the lower fs, it converts and returns EINVAL to the userspace. Is >> this an intended behaviour? >> > > I am puzzled by the current ecryptfs maintenance situation. > http://article.gmane.org/gmane.linux.kernel/768122 The torch has been passed to me. :) > I queued this for 2.6.30. It could be bumped up for 2.6.29 (and even > backported to 2.6.28 and earlier) with suitable acks from the > maintainer(?) > The changes to ecryptfs_rmdir() are valid, but not the rest of the patch. >> ... >> >> + atomic_inc_return(&lower_dentry->d_inode->i_count); >> + atomic_inc_return(&lower_inode->i_count); > > atomic_inc() would suffice here, yes? > > From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > > s/atomic_inc_return/atomic_inc/ > > Cc: Dave Kleikamp <shaggy@xxxxxxxxxxxxxxxxxx> > Cc: J. R. Okajima <hooanon05@xxxxxxxxxxx> > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > --- > > fs/ecryptfs/inode.c | 2 +- > fs/ecryptfs/super.c | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff -puN fs/ecryptfs/inode.c~ecryptfs-some-inode-attr-fixes-fix fs/ecryptfs/inode.c > --- a/fs/ecryptfs/inode.c~ecryptfs-some-inode-attr-fixes-fix > +++ a/fs/ecryptfs/inode.c > @@ -479,7 +479,7 @@ static int ecryptfs_unlink(struct inode > > lower_dir_dentry = lock_parent(lower_dentry); > dget(lower_dentry); > - atomic_inc_return(&lower_dentry->d_inode->i_count); > + atomic_inc(&lower_dentry->d_inode->i_count); > rc = vfs_unlink(lower_dir_inode, lower_dentry); > dput(lower_dentry); > if (rc) { > diff -puN fs/ecryptfs/super.c~ecryptfs-some-inode-attr-fixes-fix fs/ecryptfs/super.c > --- a/fs/ecryptfs/super.c~ecryptfs-some-inode-attr-fixes-fix > +++ a/fs/ecryptfs/super.c > @@ -102,7 +102,7 @@ static void ecryptfs_destroy_inode(struc > */ > void ecryptfs_init_inode(struct inode *inode, struct inode *lower_inode) > { > - atomic_inc_return(&lower_inode->i_count); > + atomic_inc(&lower_inode->i_count); > ecryptfs_set_inode_lower(inode, lower_inode); > inode->i_ino = lower_inode->i_ino; > inode->i_version++; > _ > > > _______________________________________________ > Mailing list: https://launchpad.net/~ecryptfs-devel > Post to : ecryptfs-devel@xxxxxxxxxxxxxxxxxxx > Unsubscribe : https://launchpad.net/~ecryptfs-devel > More help : https://help.launchpad.net/ListHelp
Attachment:
signature.asc
Description: OpenPGP digital signature