diff options
author | Sage Weil <sage@newdream.net> | 2011-03-15 15:53:40 -0700 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2011-11-03 09:23:49 -0700 |
commit | b58dc4100b9190f2cb437f1f67ffcb9f9acc4923 (patch) | |
tree | 5956065af3d9b126b8ae4a37551837c389f12702 /fs/ceph/super.h | |
parent | 3f8ddb032afa729d4bad1bf2965d3ec068de6b72 (diff) | |
download | linux-stable-b58dc4100b9190f2cb437f1f67ffcb9f9acc4923.tar.gz linux-stable-b58dc4100b9190f2cb437f1f67ffcb9f9acc4923.tar.bz2 linux-stable-b58dc4100b9190f2cb437f1f67ffcb9f9acc4923.zip |
ceph: clear parent D_COMPLETE flag when on dentry prune
When the VFS prunes a dentry from the cache, clear the D_COMPLETE flag
on the parent dentry. Do this for the live and snapshotted namespaces. Do
not bother for the .snap dir contents, since we do not cache that.
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/super.h')
-rw-r--r-- | fs/ceph/super.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/ceph/super.h b/fs/ceph/super.h index b01442aaf278..98e60693c9a1 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -203,6 +203,7 @@ struct ceph_inode_xattr { * Ceph dentry state */ struct ceph_dentry_info { + unsigned long flags; struct ceph_mds_session *lease_session; u32 lease_gen, lease_shared_gen; u32 lease_seq; @@ -213,6 +214,18 @@ struct ceph_dentry_info { u64 offset; }; +/* + * dentry flags + * + * The locking for D_COMPLETE is a bit odd: + * - we can clear it at almost any time (see ceph_d_prune) + * - it is only meaningful if: + * - we hold dir inode i_lock + * - we hold dir FILE_SHARED caps + * - the dentry D_COMPLETE is set + */ +#define CEPH_D_COMPLETE 1 /* if set, d_u.d_subdirs is complete directory */ + struct ceph_inode_xattrs_info { /* * (still encoded) xattr blob. we avoid the overhead of parsing |