ceph主要数据结构解析3-Ceph_fs.h文件
来源:互联网 发布:查看内存软件 编辑:程序博客网 时间:2024/06/11 22:28
(1)集群内部子版本协议类型宏定义:与公共协议保持独立性,以便消息类型和协议升级受影响
#define CEPH_OSDC_PROTOCOL 24 /* server/client */OSD服务器集群与客户端协议版本
#define CEPH_MDSC_PROTOCOL 32 /* server/client */MDS与客户端
#define CEPH_MONC_PROTOCOL 15 /* server/client */监控与客户端
#define CEPH_INO_ROOT 1 //根目录节点的inode号
#define CEPH_INO_CEPH 2 /* hidden .ceph dir */隐藏目录.ceph的inode节点号
/* arbitrary limit on max # of monitors (cluster of 3 is typical) */
#define CEPH_MAX_MON 31 //最大的监控集群数量
(2)文件布局:描述一个文件(inode)的数据布局
struct ceph_file_layout {
/* file -> object mapping */文件到对象的映射
__le32 fl_stripe_unit; /* stripe unit, in bytes. must be multiple
of page size. */条带大小,必须是页的多倍
__le32 fl_stripe_count; /* over this many objects */
__le32 fl_object_size; /* until objects are this big, then move to
new objects */
__le32 fl_cas_hash; /* UNUSED. 0 = none; 1 = sha256 */
/* pg -> disk layout */PG到磁盘的布局
__le32 fl_object_stripe_unit; /* UNUSED. for per-object parity, if any */
/* object -> pg layout */对象到PG的布局
__le32 fl_pg_preferred; /* preferred primary for pg (-1 for none) */
__le32 fl_pg_pool; /* namespace, crush ruleset, rep level */
} __attribute__ ((packed));
#define CEPH_MIN_STRIPE_UNIT 65536//最小的条带单位
//判断文件布局是否有效的函数
int ceph_file_layout_is_valid(const struct ceph_file_layout *layout)
{
__u32 su = le32_to_cpu(layout->fl_stripe_unit);//大小端转换
__u32 sc = le32_to_cpu(layout->fl_stripe_count);
__u32 os = le32_to_cpu(layout->fl_object_size);
/* stripe unit, object size must be non-zero, 64k increment */条带单元和对象大小非零
if (!su || (su & (CEPH_MIN_STRIPE_UNIT-1)))
return 0;
if (!os || (os & (CEPH_MIN_STRIPE_UNIT-1)))
return 0;
/* object size must be a multiple of stripe unit */对象大小必须是条带的整数倍
if (os < su || os % su)
return 0;
/* stripe count must be non-zero */条带数量非零
if (!sc)
return 0;
return 1;
}
struct ceph_dir_layout {//目录的布局
__u8 dl_dir_hash; /* see ceph_hash.h for ids */
__u8 dl_unused1;
__u16 dl_unused2;
__u32 dl_unused3;
} __attribute__ ((packed));
(3)加密算法和安全权限协议宏定义:
#define CEPH_CRYPTO_NONE 0x0 //没有加密
#define CEPH_CRYPTO_AES 0x1 //AES加密
#define CEPH_AES_IV "cephsageyudagreg"
#define CEPH_AUTH_UNKNOWN 0x0 //不知道的权限
#define CEPH_AUTH_NONE 0x1 //没有权限
#define CEPH_AUTH_CEPHX 0x2 // CEPHX
#define CEPH_AUTH_UID_DEFAULT ((__u64) -1)
- ceph主要数据结构解析3-Ceph_fs.h文件
- ceph主要数据结构解析2-Rados.h文件
- ceph主要数据结构解析2-Rados.h
- ceph主要数据结构解析1
- emmintrin.h文件解析
- xmmintrin.h文件解析
- jni.h文件解析
- MFC主要类文件解析
- Tomcat主要目录文件解析
- libnids中主要数据结构和函数“nids.h”
- Nginx 代码解析(2) : 主要数据结构解析
- stdafx.h头文件解析
- string.h头文件解析
- xxxx.h头文件解析
- 使用"JSONKit.h"解析文件
- .h和.c文件解析
- time.h头文件解析
- stm32f10x.h 头文件解析
- linux crontab 定时命令
- 回文字符串数量
- 线程池的简单使用
- HDU 3339 In Action 最短路(dijkstra) + 裸01背包
- extjs grid 从json 获取动态列
- ceph主要数据结构解析3-Ceph_fs.h文件
- 项目中遇到的问题
- mysql数据类型详解
- 遍历聚合对象中的元素——迭代器模式(四)
- [数据结构]顺序二叉树的实现
- LayoutInflater作用及使用
- 喵星战争(六):子弹的实现
- 重写basename函数,man 3 basename说明与实际函数不一致?
- [leetcode刷题系列]String to Integer (atoi)