}
int idx = pd - dir->readdir_cache.begin();
- if (dn->inode->is_dir()) {
+ if (dn->inode->is_dir() && cct->_conf->client_dirsize_rbytes) {
mask |= CEPH_STAT_RSTAT;
}
int r = _getattr(dn->inode, mask, dirp->perms);
bool bypass_cache)
{
int caps = statx_to_mask(flags, want);
+ int rstat_on_dir = cct->_conf->client_dirsize_rbytes ? CEPH_STAT_RSTAT : 0;
RWRef_t mref_reader(mount_state, CLIENT_MOUNTING);
if (!mref_reader.is_state_satisfied())
uint64_t next_off = 1;
int r;
- r = _getattr(diri, caps | CEPH_STAT_RSTAT, dirp->perms);
+ r = _getattr(diri, caps | rstat_on_dir, dirp->perms);
if (r < 0)
return r;
in = diri->get_first_parent()->dir->parent_inode;
int r;
- r = _getattr(in, caps | CEPH_STAT_RSTAT, dirp->perms);
+ r = _getattr(in, caps | rstat_on_dir, dirp->perms);
if (r < 0)
return r;
if (check_caps) {
int mask = caps;
if(entry.inode->is_dir()){
- mask |= CEPH_STAT_RSTAT;
+ mask |= rstat_on_dir;
}
r = _getattr(entry.inode, mask, dirp->perms);
if (r < 0)