]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: rewrite CEPH_STAT_MASK_* as CEPH_STAT_CAP_* (cap masks)
authorSage Weil <sage@newdream.net>
Fri, 2 Jan 2009 22:42:58 +0000 (14:42 -0800)
committerSage Weil <sage@newdream.net>
Fri, 2 Jan 2009 22:42:58 +0000 (14:42 -0800)
src/include/ceph_fs.h
src/mds/Server.cc

index 9f32bd71624635e1a1a574fdaa3922cfde99d591..4be60e957c59830511c017f0dd77b44af242e55c 100644 (file)
@@ -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) {
index f04967206390bee61cf35decdecbc478b662f50f..faa05214bade4b41d5cc43e818c9caffb75516a9 100644 (file)
@@ -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;