#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,
#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) {