Lucien168
作者Lucien168·2019-01-03 09:31
存储工程师·地平线机器人

CephFS MDS内部锁介绍

字数 1798阅读 1922评论 1赞 2

MDS锁类型

/*
 * metadata lock types.
 *  - these are bitmasks.. we can compose them
 *  - they also define the lock ordering by the MDS
 *  - a few of these are internal to the mds
 */
#define CEPH_LOCK_DVERSION    1
#define CEPH_LOCK_DN          2
#define CEPH_LOCK_IVERSION    16    /* mds internal */
#define CEPH_LOCK_ISNAP       32
#define CEPH_LOCK_IFILE       64
#define CEPH_LOCK_IAUTH       128
#define CEPH_LOCK_ILINK       256
#define CEPH_LOCK_IDFT        512   /* dir frag tree */
#define CEPH_LOCK_INEST       1024  /* mds internal */
#define CEPH_LOCK_IXATTR      2048
#define CEPH_LOCK_IFLOCK      4096  /* advisory file locks */
#define CEPH_LOCK_INO         8192  /* immutable inode bits; not a lock */
#define CEPH_LOCK_IPOLICY     16384 /* policy lock on dirs. MDS internal */
// -- lock types --
// see CEPH_LOCK_*

inline const char *get_lock_type_name(int t) {
  switch (t) {
  case CEPH_LOCK_DN: return "dn";
  case CEPH_LOCK_DVERSION: return "dversion";
  case CEPH_LOCK_IVERSION: return "iversion";
  case CEPH_LOCK_IFILE: return "ifile";
  case CEPH_LOCK_IAUTH: return "iauth";
  case CEPH_LOCK_ILINK: return "ilink";
  case CEPH_LOCK_IDFT: return "idft";
  case CEPH_LOCK_INEST: return "inest";
  case CEPH_LOCK_IXATTR: return "ixattr";
  case CEPH_LOCK_ISNAP: return "isnap";
  case CEPH_LOCK_INO: return "ino";
  case CEPH_LOCK_IFLOCK: return "iflock";
  case CEPH_LOCK_IPOLICY: return "ipolicy";
  default: ceph_abort(); return 0;
  }
}
  bool acquire_locks(MDRequestRef& mdr,
             set<SimpleLock*> &rdlocks,
             set<SimpleLock*> &wrlocks,
             set<SimpleLock*> &xlocks,
             map<SimpleLock*,mds_rank_t> *remote_wrlocks=NULL,
             CInode *auth_pin_freeze=NULL,
             bool auth_pin_nonblock=false);

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论1 条评论

匿名用户
2021-09-15 17:44
能不能写点非技术人员看的懂的
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广