CurveFs 用户权限系统调研在这种情况下,内核执行 ACL 和标准的 unix 权限检查 疑问:协商期间do_init()中的启用ACL的flags如何设置? 初始化时的 通过 : 功能协商 init()函数实现© XXX Page 9 of 33 // libfuse lib/fuse_lowlevel.c static void do_init(fuse_req_t req, fuse_ino_t nodeid, const struct fuse_init_in *arg = (struct fuse_init_in *) inarg; struct fuse_session *se = req->se; ... if (arg->flags & FUSE_POSIX_ACL) se->conn.capable |= FUSE_CAP_POSIX_ACL; ... se->op.init(se->userdata daemon. It is used to negotiate the protocol version and other filesystem parameters. struct fuse_init_in { uint32_t major; uint32_t minor; uint32_t max_readahead; uint32_t flags; }; // libfuse include/fuse0 码力 | 33 页 | 732.13 KB | 6 月前3
CurveFS对接S3方案设计细化write和read流程 整体架构 整体思路 接口和关键数据结构 mds.proto client端数据结构 metaserver.proto space相关数据结构和proto 关键流程 init流程 write流程 read流程 整体架构 S3ClientAdaptor模块:负责将文件数据进行chunk,以及block的拆分为s3的object,并写入/读取s3的object。 S3 client端数据结构© XXX Page 5 of 11 // clients3 class S3ClientAdaptor { public: S3ClientAdaptor() {} void Init(const S3ClientAdaptorOption option, S3Client *client); int write(Inode *inode, uint64_t offset }; //s3 class S3Client { public: S3Client() {} virtual ~S3Client() {} virtual void Init(curve::common::S3AdapterOption option) = 0; virtual int Upload(std::string name, const char* buf0 码力 | 11 页 | 145.77 KB | 6 月前3
CurveFS Client 概要设计© XXX Page 1 of 11 CurveFS Client 概要设计(已实现)© XXX Page 2 of 11 背景 概述 关键接口分析 init destroy lookup write read open create & mknod mkdir forget unlink rmdir opendir readdir getattr & setattr access rename 根据讨论,我们首先对接fuse的lowlevel operators,对于数据库的lib库接口,后续可以在此基础上再做一层对接。lowlevel operators接口一共45个,如下: +init +destroy +lookup +forget +getattr +setattr +readlink +mknod© XXX Page 4 of 11 +fallocate© XXX Page 5 of 11 +readdirplus +copy_file_range +lseek 关键接口分析 init void (*init) (void *userdata, struct fuse_conn_info *conn); 根据挂载信息,从mds获取文件系统信息(或superblock),块分配器(bitmap)和root0 码力 | 11 页 | 487.92 KB | 6 月前3
NJSD eBPF 技术文档 - 0924版本12之前 initial RTO是⼀个常数1s • 应⽤类型BPF_PROG_TYPE_SOCK_OPS • HOOK BPF_SOCK_OPS_TIMEOUT_INIT • 内核中调⽤栈 • tcp_timeout_init • tcp_call_bpf(BPF_SOCK_OPS_TIMEOUT_INI T) • bpf_cgrougp_run_sock_ops • …0 码力 | 20 页 | 7.40 MB | 6 月前3
CurveFS ChunkID持久化ChunkIDGenerator 类对象,方法 AllocateS3Chunk 调用 ChunkIDGenerator对象的GenChunkID方法; ChunkIDGenerator 类 构造函数 初始化 init 函数:用于初始化或者更改 ChunkIdAllocatorImpl 的一些配置。但是这些配置不会立即生效,而是等到当前 chunkId池枯竭时才会生效。 析构函数 GenChunkID 申请的chunkID池是否枯竭?0 码力 | 3 页 | 79.38 KB | 6 月前3
CurveFS S3本地缓存盘方案DiskCacheManagerImpl(); virtual ~DiskCacheManagerImpl() { TrimStop(); } int Init(const std::string cacheDir); int Write(std::string name, const char* buf, uint64_t length);0 码力 | 9 页 | 150.46 KB | 6 月前3
Curve文件系统元数据持久化方案设计braft::StateMachine { public: enum class OP_TYPE { OP_TYPE_SET, OP_TYPE_DEL, }; public: bool Init(); int Set(const std::string& key, const std::string& value); int Get(const std::string&0 码力 | 12 页 | 384.47 KB | 6 月前3
Curve支持S3 数据缓存方案optional uint64 version = 15; } class ClientS3Adaptor { public: ClientS3Adaptor () {} void Init(const S3ClientAdaptorOption option, S3Client *client, std::shared_ptr inodeManager);©0 码力 | 9 页 | 179.72 KB | 6 月前3
Raft在Curve存储中的工程实践了一种通用的基础库。基 于braft,可以基于自己的业务逻辑构建自己的分布式系统。 • braft本身不提供server功能,需要业务自己实现状态机。 Node(一个raft实例) int init(const NodeOptions& options); void apply(const Task& task); void add_peer(const PeerId& peer, Closure*0 码力 | 29 页 | 2.20 MB | 6 月前3
共 9 条
- 1













