if (vxattr->flags & VXATTR_RSTAT) {
flags |= CEPH_STAT_RSTAT;
}
+ if (vxattr->flags & VXATTR_DIRSTAT) {
+ flags |= CEPH_CAP_FILE_SHARED;
+ }
r = _getattr(in, flags, perms, true);
if (r != 0) {
// Error from getattr!
#define CEPH_XATTR_NAME(_type, _name) "ceph." #_type "." #_name
#define CEPH_XATTR_NAME2(_type, _name, _name2) "ceph." #_type "." #_name "." #_name2
-#define XATTR_NAME_CEPH(_type, _name) \
-{ \
- name: CEPH_XATTR_NAME(_type, _name), \
- getxattr_cb: &Client::_vxattrcb_ ## _type ## _ ## _name, \
- readonly: true, \
- hidden: false, \
- exists_cb: NULL, \
- flags: 0, \
-}
-#define XATTR_NAME_CEPH2(_type, _name, _flags) \
+#define XATTR_NAME_CEPH(_type, _name, _flags) \
{ \
name: CEPH_XATTR_NAME(_type, _name), \
getxattr_cb: &Client::_vxattrcb_ ## _type ## _ ## _name, \
XATTR_LAYOUT_FIELD(dir, layout, object_size),
XATTR_LAYOUT_FIELD(dir, layout, pool),
XATTR_LAYOUT_FIELD(dir, layout, pool_namespace),
- XATTR_NAME_CEPH(dir, entries),
- XATTR_NAME_CEPH(dir, files),
- XATTR_NAME_CEPH(dir, subdirs),
- XATTR_NAME_CEPH2(dir, rentries, VXATTR_RSTAT),
- XATTR_NAME_CEPH2(dir, rfiles, VXATTR_RSTAT),
- XATTR_NAME_CEPH2(dir, rsubdirs, VXATTR_RSTAT),
- XATTR_NAME_CEPH2(dir, rbytes, VXATTR_RSTAT),
- XATTR_NAME_CEPH2(dir, rctime, VXATTR_RSTAT),
+ XATTR_NAME_CEPH(dir, entries, VXATTR_DIRSTAT),
+ XATTR_NAME_CEPH(dir, files, VXATTR_DIRSTAT),
+ XATTR_NAME_CEPH(dir, subdirs, VXATTR_DIRSTAT),
+ XATTR_NAME_CEPH(dir, rentries, VXATTR_RSTAT),
+ XATTR_NAME_CEPH(dir, rfiles, VXATTR_RSTAT),
+ XATTR_NAME_CEPH(dir, rsubdirs, VXATTR_RSTAT),
+ XATTR_NAME_CEPH(dir, rbytes, VXATTR_RSTAT),
+ XATTR_NAME_CEPH(dir, rctime, VXATTR_RSTAT),
{
name: "ceph.quota",
getxattr_cb: &Client::_vxattrcb_quota,