|
@@ -1006,6 +1006,21 @@ out:
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
+int ecryptfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
|
|
|
+ struct kstat *stat)
|
|
|
+{
|
|
|
+ struct kstat lower_stat;
|
|
|
+ int rc;
|
|
|
+
|
|
|
+ rc = vfs_getattr(ecryptfs_dentry_to_lower_mnt(dentry),
|
|
|
+ ecryptfs_dentry_to_lower(dentry), &lower_stat);
|
|
|
+ if (!rc) {
|
|
|
+ generic_fillattr(dentry->d_inode, stat);
|
|
|
+ stat->blocks = lower_stat.blocks;
|
|
|
+ }
|
|
|
+ return rc;
|
|
|
+}
|
|
|
+
|
|
|
int
|
|
|
ecryptfs_setxattr(struct dentry *dentry, const char *name, const void *value,
|
|
|
size_t size, int flags)
|
|
@@ -1135,6 +1150,7 @@ const struct inode_operations ecryptfs_dir_iops = {
|
|
|
const struct inode_operations ecryptfs_main_iops = {
|
|
|
.permission = ecryptfs_permission,
|
|
|
.setattr = ecryptfs_setattr,
|
|
|
+ .getattr = ecryptfs_getattr,
|
|
|
.setxattr = ecryptfs_setxattr,
|
|
|
.getxattr = ecryptfs_getxattr,
|
|
|
.listxattr = ecryptfs_listxattr,
|