CurveFs 用户权限系统调研and userspace submits a large * direct I/O request. In this case the kernel will internally * split it up into multiple smaller requests and submit them * to the filesystem concurrently. * * Note posix_acl { refcount_t a_refcount; struct rcu_head a_rcu; unsigned int a_count; struct posix_acl_entry a_entries[0]; }; 内存中的ACL 是如何与具体的 Inode 相关联 acl 属性是用于访问控制的,对一个文件读写执行都要通过这个 ext4_xattr_header { __le32 h_magic; /* magic number for identification */ __le32 h_refcount; /* reference count */ __le32 h_blocks; /* number of disk blocks used */ __le32 h_hash; /* hash value of all attributes0 码力 | 33 页 | 732.13 KB | 6 月前3
curvefs client删除文件和目录功能设计Session机制: 遗留问题 工作量评估 背景 目前curvefs client版本对删除unlink和rmdir的设计只有简单的删除inode和dentry结构,遗留了nlink和lookup count相关的内容还未实现,是不完备的。本文首先调研moosefs,chubaofs等分布式系统,参考并设计解决上述遗留问题。 当前删除接口代码如下:© XXX Page 3 of 15 CURVEFS_ERROR 并且在目录下, , 删除目录nlink相应的减1。 目录的nlink字段初始值为2 每创建一个新目录,nlink字段也会+1 目录不支持硬链接。 二是删除时lookup count未考虑: lookup count 指的是文件的访问计数。当文件/目录被打开时, ,该文件/目录仍然可以被打开的进程访问,不会造成崩溃或报错,我们的curvefs也需要实现 即使文件/目录已经被另一个进程删除了(nlink==0) * * The inode's lookup count increases by one for every call to * fuse_reply_entry and fuse_reply_create. The nlookup parameter * indicates by how much the lookup count should be decreased. *0 码力 | 15 页 | 325.42 KB | 6 月前3
CurveFS Client 概要设计ookup count值减少nlookup。 ( ) 这里涉及到一个lookup count 存在哪里的问题 unlink void (*unlink) (fuse_req_t req, fuse_ino_t parent, const char *name); 根据parent inode id 和 name找到当前文件的inode和denty结构 根据lookup count 值,如果非 req, fuse_ino_t parent, const char *name); 根据parent inode id 和 name找到当前文件的inode和denty结构 根据lookup count 值,如果非0,则需要延迟删除目录,如果为0,则删除目录。 删除时需要从缓存或mds查询删除inode和dentry的位置,并去metaserver删除,然后清除本地缓存 opendir0 码力 | 11 页 | 487.92 KB | 6 月前3
Curve文件系统元数据管理uint32_t gid; /* group id */ uint32_t mode; /* file mode */ int nlink; /* ref count for hard link */ int64_t size; FileType type; SpaceList std::mapCount(); private: // Inodefsid + inodeid key std::unordered_map inodeMap_; Update(const Dentry &dentry); DentryKey GetKey(InodeId parentId, std::string &name); int Count(); private: // dentryfsid + parentid + namekey std::unordered_map 0 码力 | 24 页 | 204.67 KB | 6 月前3
PFS SPDK: Storage Performance Development KitIOPortal实现读对齐支持 ●ssize_t IOPortal::pappend_from_dev_descriptor(int fd, off_t offset, size_t max_count) ●这个函数的实现是按PRP的规定来做的 ●IOPortal就是IOBuf,是BRPC存放数据的类 ●CurveBS 使用brpc::Controller 的attachment 发送数据0 码力 | 23 页 | 4.21 MB | 6 月前3
Curve文件系统元数据Proto(接口定义)= 1; required uint64 dirInodeId = 2; optional uint64 last = 3; // optional uint64 count = 4; // } message ListDentryResponse { required MetaStatusCode statusCode = 1; repeated0 码力 | 15 页 | 80.33 KB | 6 月前3
CurveBS IO Processing Flowdata Iobuf structure is used to store user data, and user space data is transferred through reference of data address, avoiding user space data copy.0 码力 | 13 页 | 2.03 MB | 6 月前3
共 7 条
- 1













