文档章节

cephfs kernel client针对inode的相关操作

linuxhunter
 linuxhunter
发布于 2016/08/12 10:43
字数 564
阅读 243
收藏 0

针对文件的inode的操作体现在数据结构struct inode_operations中,具体内容如下:

const struct inode_operations ceph_file_iops = {

        .permission = ceph_permission,

        .setattr = ceph_setattr,

        .getattr = ceph_getattr,

        .setxattr = generic_setxattr,

        .getxattr = generic_getxattr,

        .listxattr = ceph_listxattr,

        .removexattr = generic_removexattr,

        .get_acl = ceph_get_acl,

        .set_acl = ceph_set_acl,

};

 

ceph_permission(struct inode *inode, int mask)        检查inode是否有mask指定的访问权限

|__调用ceph_do_getattr()函数从本地缓存或mds集群中得到CEPH_CAP_AUTH_SHARED对应的权限

|__调用generic_permission()函数做常规的权限检查

 

ceph_setattr(struct dentry *dentry, struct iattr *attr)        设置文件属性时调用该函数

|__调用__ceph_setattr()函数

    |__调用ceph_mdsc_create_request()函数创建mds集群请求

    |__根据设置具体属性的内容如:ATTR_UID/ATTR_GID/ATTR_MODE/ATTR_ATIME/ATTR_MTIME/ATTR_SIZE/ATTR_CTIME设置请求数据结构中的具体项

    |__调用ceph_mdsc_do_reqeust()函数将请求同步发送给mds进程

 

ceph_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat)        获取文件属性时调用该函数

|__调用ceph_do_getattr(CEPH_STAT_CAP_INODE_ALL)函数从mds集群中读取inode的所有属性值

|__调用generic_fillattr()函数设置通用的属性值到stat中

|__将cephfs相关的属性值设置到stat中

 

ceph_listxattr(struct dentry *dentry, char *names, size_t size)        列出inode的xattrs时该函数被调用

|__若xattrs的version为0

    |__调用ceph_do_getattr(CEPH_STAT_CAP_XATTR)函数从mds集群中读取xattr信息

|__调用__build_xattrs()函数创建xattr属性

|__调用__copy_xattr_names()函数将xattr属性的所有名字信息复制到names数组中

 

ceph_get_acl(struct inode *inode, int type)    读取inode的acl信息时调用该函数

|__调用__ceph_getxattr()函数从mds集群中读取XATTR_NAME_POSIX_ACL_ACCESS或XATTR_NAME_POSIX_ACL_DEFUALT的属性值

|__调用posix_acl_from_xattr()函数将acl信息读取到内存中的struct posix_acl数据结构中

|__调用ceph_set_cache_acl()函数将内存中的struct posix_acl数据结构写入到cache中

 

ceph_set_acl(struct inode *inode, struct posix_acl *acl, int type)    设置inode的acl信息时调用该函数

|__调用posix_acl_xattr_size()函数得到xattr的大小

|__调用posix_acl_to_xattr()函数将acl转换成xattr格式

|__调用__ceph_setxattr()函数将acl转换的xattr数据写入到mds集群

|__调用ceph_set_cached_acl()函数将新的acl信息写入到cache中

 

© 著作权归作者所有

linuxhunter
粉丝 72
博文 144
码字总数 93264
作品 0
沈阳
高级程序员
私信 提问
ceph的数据存储之路(11)----- cephfs 文件系统

cephfs 文件系统 cephfs 文件系统的使用: 1.首先你要搭建一个ceph集群。如何搭建ceph集群在前面已经介绍过了。如果要使用cephfs文件系统,则必须要有管理文件元数据的mds节点。 2.在集群上创...

一只小江
2016/07/04
9.1K
4
cephfs linux kernel client针对superblock操作流程的分析

init_caches() 初始化如下几个cache: cephinodecachep cephcapcachep cephcapflush_cachep cephdentrycachep cephfilecachep cephfs cache ceph_mount() |解析mount options |创建fs client......

linuxhunter
2016/08/10
237
0
cephfs kernel client针对dir的inode操作

cephfs kernel client针对dir的inode操作 const struct inodeoperations cephdir_iops = { .lookup = ceph_lookup, .permission = ceph_permission, .getattr = ceph_getattr, .setattr = ce......

linuxhunter
2016/08/12
433
0
cephfs linux kernel client针对fscache的操作

针对inode在fscache中操作主要集中在数据结构struct fscachecookiedef中,具体的数据结构及其操作如下: static const struct fscachecookiedef cephfscacheinodeobjectdef = { .name = "CE......

linuxhunter
2016/08/16
265
0
cephfs kernel client针对dentry的操作

cephfs kernel client针对dentry的操作 const struct dentryoperations cephdentry_ops = { .drevalidate = cephd_revalidate, .drelease = cephd_release, .dprune = cephd_prune, }; cephd......

linuxhunter
2016/08/12
173
0

没有更多内容

加载失败,请刷新页面

加载更多

IT兄弟连 HTML5教程 HTML5表单 新增的表单属性1

HTML5 Input表单为<form>和<input>标签添加了几个新属性,属性如表1。 1 autocomplete属性 autocomplete属性规定form或input域应该拥有自动完成功能,当用户在自动完成域中开始输入时,浏览器...

老码农的一亩三分地
52分钟前
5
0
OSChina 周五乱弹 —— 葛优理论+1

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享米津玄師的单曲《LOSER》: mv中的舞蹈诡异却又美丽,如此随性怕是难再跳出第二次…… 《LOSER》-...

小小编辑
今天
1K
18
nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
15
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部