}
bool Client::is_reserved_vino(vinodeno_t &vino) {
- if (vino.ino < MDS_INO_SYSTEM_BASE && vino.ino != MDS_INO_ROOT) {
+ if (vino.ino < MDS_INO_SYSTEM_BASE && vino.ino != CEPH_INO_ROOT) {
ldout(cct, -1) << __func__ << "attempt to access reserved inode number " << vino << dendl;
return true;
}
++q;
if (dn->lru_is_expireable()) {
if (can_invalidate_dentries &&
- dn->dir->parent_inode->ino == MDS_INO_ROOT) {
+ dn->dir->parent_inode->ino == CEPH_INO_ROOT) {
// Only issue one of these per DN for inodes in root: handle
// others more efficiently by calling for root-child DNs at
// the end of this function.
all = false;
}
}
- if (in->ll_ref == 1 && in->ino != MDS_INO_ROOT) {
+ if (in->ll_ref == 1 && in->ino != CEPH_INO_ROOT) {
_schedule_ino_release_callback(in.get());
}
- if (all && in->ino != MDS_INO_ROOT) {
+ if (all && in->ino != CEPH_INO_ROOT) {
ldout(cct, 20) << __func__ << " counting as trimmed: " << *in << dendl;
trimmed++;
}
bool fscrypt = false; // fscrypt enabled ?
- bool is_root() const { return ino == MDS_INO_ROOT; }
+ bool is_root() const { return ino == CEPH_INO_ROOT; }
bool is_symlink() const { return (mode & S_IFMT) == S_IFLNK; }
bool is_dir() const { return (mode & S_IFMT) == S_IFDIR; }
bool is_file() const { return (mode & S_IFMT) == S_IFREG; }
#define CEPH_MONC_PROTOCOL 15 /* server/client */
-#define CEPH_INO_ROOT 1
-#define CEPH_INO_CEPH 2 /* hidden .ceph dir */
-#define CEPH_INO_LOST_AND_FOUND 4 /* reserved ino for use in recovery */
+#define CEPH_INO_ROOT 1
+/*
+ * hidden .ceph dir, which is no longer created but
+ * recognised in existing filesystems so that we
+ * don't try to fragment it.
+ */
+#define CEPH_INO_CEPH 2
+#define CEPH_INO_GLOBAL_SNAPREALM 3
+#define CEPH_INO_LOST_AND_FOUND 4 /* reserved ino for use in recovery */
/* arbitrary limit on max # of monitors (cluster of 3 is typical) */
#define CEPH_MAX_MON 31
inodeno_t ino() const { return get_inode()->ino; }
vinodeno_t vino() const { return vinodeno_t(ino(), last); }
int d_type() const { return IFTODT(get_inode()->mode); }
- bool is_root() const { return ino() == MDS_INO_ROOT; }
+ bool is_root() const { return ino() == CEPH_INO_ROOT; }
bool is_stray() const { return MDS_INO_IS_STRAY(ino()); }
mds_rank_t get_stray_owner() const {
return (mds_rank_t)MDS_INO_STRAY_OWNER(ino());
{
// Special cases: damage to these dirfrags is considered fatal to
// the MDS rank that owns them.
- if (
- (MDS_INO_IS_STRAY(ino) && MDS_INO_STRAY_OWNER(ino) == rank)
- ||
- (ino == MDS_INO_ROOT)
- ) {
+ if ((MDS_INO_IS_STRAY(ino) && MDS_INO_STRAY_OWNER(ino) == rank)
+ || (ino == CEPH_INO_ROOT)) {
derr << "Damage to fragment " << frag << " of ino " << ino
<< " is fatal because it is a system directory for this rank" << dendl;
return true;
}
if (in->ino() < MDS_INO_SYSTEM_BASE) {
- if (in->ino() == MDS_INO_ROOT)
+ if (in->ino() == CEPH_INO_ROOT)
root = in;
else if (in->ino() == MDS_INO_MDSDIR(mds->get_nodeid()))
myin = in;
CInode *MDCache::create_root_inode()
{
- CInode *in = create_system_inode(MDS_INO_ROOT, S_IFDIR|0755);
+ CInode *in = create_system_inode(CEPH_INO_ROOT, S_IFDIR|0755);
auto _inode = in->_get_inode();
_inode->uid = g_conf()->mds_root_ino_uid;
_inode->gid = g_conf()->mds_root_ino_gid;
{
if (mds->get_nodeid() == mds->mdsmap->get_root()) {
CInode *in;
- in = create_system_inode(MDS_INO_ROOT, S_IFDIR|0755); // initially inaccurate!
+ in = create_system_inode(CEPH_INO_ROOT, S_IFDIR|0755); // initially inaccurate!
in->fetch(c);
} else {
- discover_base_ino(MDS_INO_ROOT, c, mds->mdsmap->get_root());
+ discover_base_ino(CEPH_INO_ROOT, c, mds->mdsmap->get_root());
}
}
show_subtrees();
CDir *root;
- if (dir->ino() == MDS_INO_ROOT) {
+ if (dir->ino() == CEPH_INO_ROOT) {
root = dir; // bootstrap hack.
if (subtrees.count(root) == 0) {
subtrees[root];
void MDCache::create_global_snaprealm()
{
CInode *in = new CInode(this); // dummy inode
- create_unlinked_system_inode(in, MDS_INO_GLOBAL_SNAPREALM, S_IFDIR|0755);
+ create_unlinked_system_inode(in, CEPH_INO_GLOBAL_SNAPREALM, S_IFDIR|0755);
add_inode(in);
global_snaprealm = in->snaprealm;
}
in->_decode_base(p);
in->_decode_locks_state_for_replica(p, true);
add_inode(in);
- if (in->ino() == MDS_INO_ROOT)
+ if (in->ino() == CEPH_INO_ROOT)
in->inode_auth.first = 0;
else if (in->is_mdsdir())
in->inode_auth.first = in->ino() - MDS_INO_MDSDIR_OFFSET;
dout(7) << "can_fragment: i won't merge|split anything in stray" << dendl;
return false;
}
- if (diri->is_mdsdir() || diri->ino() == MDS_INO_CEPH) {
+ if (diri->is_mdsdir() || diri->ino() == CEPH_INO_CEPH) {
dout(7) << "can_fragment: i won't fragment mdsdir or .ceph" << dendl;
return false;
}
dout(ceph::dout::need_dynamic(dbl)) << indent << "|_" << pad << s
<< " " << auth << *dir << dendl;
- if (dir->ino() == MDS_INO_ROOT)
+ if (dir->ino() == CEPH_INO_ROOT)
ceph_assert(dir->inode == root);
if (dir->ino() == MDS_INO_MDSDIR(mds->get_nodeid()))
ceph_assert(dir->inode == myin);
*
* [1] https://tracker.ceph.com/issues/49922
*/
- if (_ino < MDS_INO_SYSTEM_BASE && _ino != MDS_INO_ROOT) {
+ if (_ino < MDS_INO_SYSTEM_BASE && _ino != CEPH_INO_ROOT) {
respond_to_request(mdr, -CEPHFS_ESTALE);
return;
}
SnapRealm::SnapRealm(MDCache *c, CInode *in) :
mdcache(c), inode(in), inodes_with_caps(member_offset(CInode, item_caps))
{
- global = (inode->ino() == MDS_INO_GLOBAL_SNAPREALM);
+ global = (inode->ino() == CEPH_INO_GLOBAL_SNAPREALM);
}
/*
#include "include/interval_set.h"
#include "include/compact_set.h"
#include "include/fs_types.h"
+#include "include/ceph_fs.h"
#include "inode_backtrace.h"
#define MAX_MDS 0x100
#define NUM_STRAY 10
-#define MDS_INO_ROOT 1
-
-// No longer created but recognised in existing filesystems
-// so that we don't try to fragment it.
-#define MDS_INO_CEPH 2
-
-#define MDS_INO_GLOBAL_SNAPREALM 3
+// Inode numbers 1,2 and 4 please see CEPH_INO_* in include/ceph_fs.h
#define MDS_INO_MDSDIR_OFFSET (1*MAX_MDS)
#define MDS_INO_STRAY_OFFSET (6*MAX_MDS)
#define MDS_INO_IS_STRAY(i) ((i) >= MDS_INO_STRAY_OFFSET && (i) < (MDS_INO_STRAY_OFFSET+(MAX_MDS*NUM_STRAY)))
#define MDS_INO_IS_MDSDIR(i) ((i) >= MDS_INO_MDSDIR_OFFSET && (i) < (MDS_INO_MDSDIR_OFFSET+MAX_MDS))
#define MDS_INO_MDSDIR_OWNER(i) (signed ((unsigned (i)) - MDS_INO_MDSDIR_OFFSET))
-#define MDS_INO_IS_BASE(i) ((i) == MDS_INO_ROOT || (i) == MDS_INO_GLOBAL_SNAPREALM || MDS_INO_IS_MDSDIR(i))
+#define MDS_INO_IS_BASE(i) ((i) == CEPH_INO_ROOT || (i) == CEPH_INO_GLOBAL_SNAPREALM || MDS_INO_IS_MDSDIR(i))
#define MDS_INO_STRAY_OWNER(i) (signed (((unsigned (i)) - MDS_INO_STRAY_OFFSET) / NUM_STRAY))
#define MDS_INO_STRAY_INDEX(i) (((unsigned (i)) - MDS_INO_STRAY_OFFSET) % NUM_STRAY)
#include "common/ceph_argparse.h"
#include <fstream>
#include "include/util.h"
+#include "include/ceph_fs.h"
#include "mds/CDentry.h"
#include "mds/CInode.h"
// be ignoring dirfrags that exist
inode_data.damage_flags |= (DAMAGE_STATS | DAMAGE_RSTATS | DAMAGE_FRAGTREE);
- if (inono == MDS_INO_ROOT || MDS_INO_IS_MDSDIR(inono)) {
+ if (inono == CEPH_INO_ROOT || MDS_INO_IS_MDSDIR(inono)) {
sr_t srnode;
srnode.seq = 1;
encode(srnode, inode_data.snap_blob);
int MetadataDriver::init_roots(int64_t data_pool_id)
{
int r = 0;
- r = inject_unlinked_inode(MDS_INO_ROOT, S_IFDIR|0755, data_pool_id);
+ r = inject_unlinked_inode(CEPH_INO_ROOT, S_IFDIR|0755, data_pool_id);
if (r != 0) {
return r;
}
int MetadataDriver::check_roots(bool *result)
{
int r;
- r = root_exists(MDS_INO_ROOT, result);
+ r = root_exists(CEPH_INO_ROOT, result);
if (r != 0) {
return r;
}
return (ino >= inodeno_t((1ull << 40)))
|| (MDS_INO_IS_STRAY(ino))
|| (MDS_INO_IS_MDSDIR(ino))
- || ino == MDS_INO_ROOT
- || ino == MDS_INO_CEPH;
+ || ino == CEPH_INO_ROOT
+ || ino == CEPH_INO_CEPH;
}
int DataScan::scan_links()