From b4561ba15f57f00b8bc86fc1847157719fa91292 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 2 Jan 2009 14:42:58 -0800 Subject: [PATCH] mds: rewrite CEPH_STAT_MASK_* as CEPH_STAT_CAP_* (cap masks) --- src/include/ceph_fs.h | 55 ++++++++++++++++++++++++++----------------- src/mds/Server.cc | 2 +- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/src/include/ceph_fs.h b/src/include/ceph_fs.h index 9f32bd7162463..4be60e957c598 100644 --- a/src/include/ceph_fs.h +++ b/src/include/ceph_fs.h @@ -608,24 +608,6 @@ struct ceph_mds_getmap { #define CEPH_LOCK_IXATTR 512 #define CEPH_LOCK_INO 2048 /* immutable inode bits; not a lock */ -/* - * stat masks are defined in terms of the locks that cover inode fields. - */ -#define CEPH_STAT_MASK_INODE CEPH_LOCK_INO -#define CEPH_STAT_MASK_TYPE CEPH_LOCK_INO /* mode >> 12 */ -#define CEPH_STAT_MASK_SYMLINK CEPH_LOCK_INO -#define CEPH_STAT_MASK_UID CEPH_LOCK_IAUTH -#define CEPH_STAT_MASK_GID CEPH_LOCK_IAUTH -#define CEPH_STAT_MASK_MODE CEPH_LOCK_IAUTH -#define CEPH_STAT_MASK_NLINK CEPH_LOCK_ILINK -#define CEPH_STAT_MASK_LAYOUT CEPH_LOCK_IFILE -#define CEPH_STAT_MASK_MTIME CEPH_LOCK_IFILE -#define CEPH_STAT_MASK_SIZE CEPH_LOCK_IFILE -#define CEPH_STAT_MASK_ATIME CEPH_LOCK_IFILE /* fixme */ -#define CEPH_STAT_MASK_XATTR CEPH_LOCK_IXATTR -#define CEPH_STAT_MASK_INODE_ALL (CEPH_LOCK_IFILE | CEPH_LOCK_IAUTH | \ - CEPH_LOCK_ILINK | CEPH_LOCK_INO) - /* client_session ops */ enum { CEPH_SESSION_REQUEST_OPEN, @@ -917,13 +899,42 @@ static inline int ceph_flags_to_mode(int flags) #define CEPH_CAP_SXATTR 6 #define CEPH_CAP_SFILE 8 -#define CEPH_CAP_ANY_EXCL ((CEPH_CAP_GEXCL << CEPH_CAP_SAUTH) | \ - (CEPH_CAP_GEXCL << CEPH_CAP_SLINK) | \ - (CEPH_CAP_GEXCL << CEPH_CAP_SXATTR) | \ - (CEPH_CAP_GEXCL << CEPH_CAP_SFILE)) +/* composed values */ +#define CEPH_CAP_AUTH_RDCACHE (CEPH_CAP_GRDCACHE << CEPH_CAP_SAUTH) +#define CEPH_CAP_AUTH_EXCL (CEPH_CAP_GEXCL << CEPH_CAP_SAUTH) +#define CEPH_CAP_LINK_RDCACHE (CEPH_CAP_GRDCACHE << CEPH_CAP_SLINK) +#define CEPH_CAP_LINK_EXCL (CEPH_CAP_GEXCL << CEPH_CAP_SLINK) +#define CEPH_CAP_XATTR_RDCACHE (CEPH_CAP_GRDCACHE << CEPH_CAP_SXATTR) +#define CEPH_CAP_XATTR_EXCL (CEPH_CAP_GEXCL << CEPH_CAP_SXATTR) +#define CEPH_CAP_FILE_RDCACHE (CEPH_CAP_GRDCACHE << CEPH_CAP_SFILE) +#define CEPH_CAP_FILE_EXCL (CEPH_CAP_GEXCL << CEPH_CAP_SFILE) + +#define CEPH_CAP_ANY_EXCL (CEPH_CAP_AUTH_EXCL | \ + CEPH_CAP_LINK_EXCL | \ + CEPH_CAP_XATTR_EXCL | \ + CEPH_CAP_FILE_EXCL) #define CEPH_CAP_ANY_FILE_WR ((CEPH_CAP_GWR|CEPH_CAP_GWRBUFFER) << CEPH_CAP_SFILE) #define CEPH_CAP_ANY_WR (CEPH_CAP_ANY_EXCL | CEPH_CAP_ANY_FILE_WR) +/* cap masks (for stat/getattr) */ +#define CEPH_STAT_CAP_INODE CEPH_CAP_PIN +#define CEPH_STAT_CAP_TYPE CEPH_CAP_PIN /* mode >> 12 */ +#define CEPH_STAT_CAP_SYMLINK CEPH_CAP_PIN +#define CEPH_STAT_CAP_UID CEPH_CAP_AUTH_RDCACHE +#define CEPH_STAT_CAP_GID CEPH_CAP_AUTH_RDCACHE +#define CEPH_STAT_CAP_MODE CEPH_CAP_AUTH_RDCACHE +#define CEPH_STAT_CAP_NLINK CEPH_CAP_LINK_RDCACHE +#define CEPH_STAT_CAP_LAYOUT CEPH_CAP_FILE_RDCACHE +#define CEPH_STAT_CAP_MTIME CEPH_CAP_FILE_RDCACHE +#define CEPH_STAT_CAP_SIZE CEPH_CAP_FILE_RDCACHE +#define CEPH_STAT_CAP_ATIME CEPH_CAP_FILE_RDCACHE /* fixme */ +#define CEPH_STAT_CAP_XATTR CEPH_CAP_XATTR_RDCACHE +#define CEPH_STAT_CAP_INODE_ALL (CEPH_CAP_PIN | \ + CEPH_CAP_AUTH_RDCACHE | \ + CEPH_CAP_LINK_RDCACHE | \ + CEPH_CAP_FILE_RDCACHE | \ + CEPH_CAP_XATTR_RDCACHE) + static inline int ceph_caps_for_mode(int mode) { switch (mode) { diff --git a/src/mds/Server.cc b/src/mds/Server.cc index f04967206390b..faa05214bade4 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -712,7 +712,7 @@ void Server::set_trace_dist(Session *session, MClientReply *reply, CInode *in, C if (in->encode_inodestat(bl, snapid, projected)) lmask = mds->locker->issue_client_lease(in, client, bl, now, session); else { - lmask = CEPH_STAT_MASK_INODE; // immutable bits + lmask = CEPH_STAT_CAP_INODE; // immutable bits encode_null_lease(bl); } dout(20) << " trace added " << lmask << " snapid " << snapid << " " << *in << dendl; -- 2.39.5