vino.ino = ino;
vino.snap = CEPH_NOSNAP;
- if (ceph_vino_is_reserved(vino))
+ if (ceph_vino_warn_reserved(vino))
return ERR_PTR(-ESTALE);
inode = ceph_find_inode(sb, vino);
vino.snap = sfh->snapid;
}
- if (ceph_vino_is_reserved(vino))
+ if (ceph_vino_warn_reserved(vino))
return ERR_PTR(-ESTALE);
inode = ceph_find_inode(sb, vino);
{
struct inode *inode;
- if (ceph_vino_is_reserved(vino))
+ if (ceph_vino_warn_reserved(vino))
return ERR_PTR(-EREMOTEIO);
inode = iget5_locked(sb, (unsigned long)vino.ino, ceph_ino_compare,
/* if root is the real CephFS root, we don't have quota realms */
if (root && ceph_ino(root) == CEPH_INO_ROOT)
return false;
+ /* MDS stray dirs have no quota realms */
+ if (ceph_vino_is_reserved(ceph_inode(inode)->i_vino))
+ return false;
/* otherwise, we can't know for sure */
return true;
}
static inline bool ceph_vino_is_reserved(const struct ceph_vino vino)
{
- if (vino.ino < CEPH_INO_SYSTEM_BASE &&
- vino.ino >= CEPH_MDS_INO_MDSDIR_OFFSET) {
- WARN_RATELIMIT(1, "Attempt to access reserved inode number 0x%llx", vino.ino);
- return true;
- }
- return false;
+ return vino.ino < CEPH_INO_SYSTEM_BASE &&
+ vino.ino >= CEPH_MDS_INO_MDSDIR_OFFSET;
+}
+
+static inline bool ceph_vino_warn_reserved(const struct ceph_vino vino)
+{
+ return WARN_RATELIMIT(ceph_vino_is_reserved(vino),
+ "Attempt to access reserved inode number 0x%llx",
+ vino.ino);
}
static inline struct inode *ceph_find_inode(struct super_block *sb,
struct ceph_vino vino)
{
- if (ceph_vino_is_reserved(vino))
+ if (ceph_vino_warn_reserved(vino))
return NULL;
/*