| From db95fd4b1c38fcd2592258ad09d5e1fee99ef95f Mon Sep 17 00:00:00 2001 |
| From: Tyler Hicks <tyhicks@linux.vnet.ibm.com> |
| Date: Tue, 11 Jan 2011 12:43:42 -0600 |
| Subject: [PATCH] eCryptfs: Copy up lower inode attrs in getattr |
| |
| commit 55f9cf6bbaa682958a7dd2755f883b768270c3ce upstream. |
| |
| The lower filesystem may do some type of inode revalidation during a |
| getattr call. eCryptfs should take advantage of that by copying the |
| lower inode attributes to the eCryptfs inode after a call to |
| vfs_getattr() on the lower inode. |
| |
| I originally wrote this fix while working on eCryptfs on nfsv3 support, |
| but discovered it also fixed an eCryptfs on ext4 nanosecond timestamp |
| bug that was reported. |
| |
| https://bugs.launchpad.net/bugs/613873 |
| |
| Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c |
| index 31c8b2f..b39e46f 100644 |
| --- a/fs/ecryptfs/inode.c |
| +++ b/fs/ecryptfs/inode.c |
| @@ -1034,6 +1034,8 @@ int ecryptfs_getattr(struct vfsmount *mnt, struct dentry *dentry, |
| rc = vfs_getattr(ecryptfs_dentry_to_lower_mnt(dentry), |
| ecryptfs_dentry_to_lower(dentry), &lower_stat); |
| if (!rc) { |
| + fsstack_copy_attr_all(dentry->d_inode, |
| + ecryptfs_inode_to_lower(dentry->d_inode)); |
| generic_fillattr(dentry->d_inode, stat); |
| stat->blocks = lower_stat.blocks; |
| } |
| -- |
| 1.7.4.4 |
| |