摘要:
内核源码分析 1. kernel-code-comment https://github.com/dongzhiyan-stack/kernel-code-comment 2. async_memory_reclaim_for_cold_file_area https://github.com/do
阅读全文
posted @ 2018-05-17 15:21
苏格拉底的落泪
阅读(635)
推荐(0)
摘要:
moosefs架构 1. 如图所示: 参考资料 1. moosefs官网
阅读全文
posted @ 2025-12-24 10:21
苏格拉底的落泪
阅读(2)
推荐(0)
posted @ 2025-12-24 10:19
苏格拉底的落泪
阅读(3)
推荐(0)
摘要:
fuse回写 static const struct address_space_operations fuse_file_aops = { .readpage = fuse_readpage, .readahead = fuse_readahead, .writepage = fuse_write
阅读全文
posted @ 2025-12-22 16:10
苏格拉底的落泪
阅读(3)
推荐(0)
摘要:
参考资料 1. Linux内核的同步机制 2. 内核基础设施——读写信号量
阅读全文
posted @ 2025-12-21 20:38
苏格拉底的落泪
阅读(5)
推荐(0)
摘要:
struct nfs_pageio_descriptor { struct inode *pg_inode; // const struct nfs_pageio_ops nfs_pgio_rw_ops const struct nfs_pageio_ops *pg_ops; // const st
阅读全文
posted @ 2025-12-19 11:03
苏格拉底的落泪
阅读(6)
推荐(0)
摘要:
cephfs内核客户端回写 cephfs内核客户端回写: const struct address_space_operations ceph_aops = { .readpage = ceph_readpage, .readpages = ceph_readpages, .writepage =
阅读全文
posted @ 2025-12-18 20:28
苏格拉底的落泪
阅读(4)
推荐(0)
摘要:
nfs协议版本 结构体接口定义 v2 const struct nfs_rpc_ops nfs_v2_clientops v3 const struct nfs_rpc_ops nfs_v3_clientops v4 const struct nfs_rpc_ops nfs_v4_clientops
阅读全文
posted @ 2025-12-17 13:52
苏格拉底的落泪
阅读(3)
推荐(0)
摘要:
nfs客户端回写 const struct address_space_operations nfs_file_aops = { .readpage = nfs_readpage, .readpages = nfs_readpages, .set_page_dirty = __set_page_di
阅读全文
posted @ 2025-12-17 11:38
苏格拉底的落泪
阅读(4)
推荐(0)
摘要:
用户写和后台写回writeback竞争关系 问题本质:文件正在被写入 page cache(脏页变更多)与此同时后台 flusher 正在把同一文件的脏页写回。那内核如何并发处理?不会互相覆盖?不会 crash?不会写错数据? 如果两者同时操作,竞争如何解决? Case 1:用户写入时 page 正
阅读全文
posted @ 2025-12-16 16:41
苏格拉底的落泪
阅读(6)
推荐(0)
摘要:
结构体address_space_operations接口分析 struct address_space_operations { int (*writepage)(struct page *page, struct writeback_control *wbc); int (*readpage)(
阅读全文
posted @ 2025-12-16 10:09
苏格拉底的落泪
阅读(7)
推荐(0)
摘要:
参考资料 1. Page Cache Writeback脏页回写机制 2. linux内存回收 之 File page的 lru list算法原理 3. VFS源码分析-Page Cache Writeback脏页回写机制 4. writeback bdi脏页回写原理linux内核源码解析
阅读全文
posted @ 2025-12-16 09:16
苏格拉底的落泪
阅读(4)
推荐(0)
摘要:
源码解读Linux等待队列 参考资料 1. 源码解读Linux等待队列 2. 内核基础设施wait queue 3. 理解 Linux 等待队列 4. Linux等待队列(Wait Queue)
阅读全文
posted @ 2025-12-15 14:37
苏格拉底的落泪
阅读(6)
推荐(0)
摘要:
rust编译安装 1. rust编译器离线安装
阅读全文
posted @ 2025-12-13 13:20
苏格拉底的落泪
阅读(5)
推荐(0)
摘要:
#include <folly/EvictingCacheMap.h> #include <iostream> class CacheMgr { public: CacheMgr(size_t cap): cache_( cap, // 淘汰回调函数(在构造函数初始化列表中) [](const in
阅读全文
posted @ 2025-12-09 10:44
苏格拉底的落泪
阅读(5)
推荐(0)
摘要:
条带化 假设: chainCnt = 12 stripeSize = 4 初始 iter->second = 0 计算: 文件序号 iter->second res = (x % 12) + 1 新 iter->second 1 0 1 (0 + 4) % 12 = 4 2 4 5 (4 + 4)
阅读全文
posted @ 2025-12-07 20:32
苏格拉底的落泪
阅读(2)
推荐(0)
摘要:
结构体赋值 例如: #include <stdio.h> #include <string.h> struct Inner { int x; char name[20]; }; struct Outer { int id; struct Inner inner; }; 初始化赋值(定义时): str
阅读全文
posted @ 2025-11-03 21:52
苏格拉底的落泪
阅读(31)
推荐(0)
摘要:
static用法 1. 在 C语言 中,static 关键字用于控制变量或函数的作用域和生命周期。当它修饰函数时,含义如下: static int add(int a, int b) { return a + b; } 上面的函数前加了 static,表示这是一个 静态函数(static funct
阅读全文
posted @ 2025-11-03 20:37
苏格拉底的落泪
阅读(29)
推荐(0)
摘要:
struct page /* * 系统中的每一个物理页(physical page)都对应一个 struct page 结构, * 用于追踪该页当前的用途。注意,我们无法追踪哪些任务(task) * 正在使用这个页;但如果该页是一个 pagecache 页面, * 我们可以通过 rmap(rever
阅读全文
posted @ 2025-11-02 22:04
苏格拉底的落泪
阅读(16)
推荐(0)
摘要:
结构体struct file struct file 是内核中用于表示 一个已经打开的文件实例 的数据结构。系统中每当有文件被打开时,内核都会在内核空间创建一个对应的 struct file 对象,并在后续所有针对该文件的操作中传递它的指针。struct file 保存了文件会话级的状态,例如当前读
阅读全文
posted @ 2025-10-29 11:31
苏格拉底的落泪
阅读(20)
推荐(0)
摘要:
数据类型 在 Linux 内核中,用户空间常见的 int32_t 并不直接使用,而是用内核自己的类型名来表示。 内核类型 C标准类型 说明 u8 uint8_t 无符号 8 位 u16 uint16_t 无符号 16 位 u32 uint32_t 无符号 32 位 u64 uint64_t 无符号
阅读全文
posted @ 2025-10-27 15:46
苏格拉底的落泪
阅读(28)
推荐(0)
摘要:
struct super_block { struct list_head s_list; /* Keep this first */ dev_t s_dev; /* search index; _not_ kdev_t */ unsigned char s_blocksize_bits; unsi
阅读全文
posted @ 2025-10-24 10:27
苏格拉底的落泪
阅读(9)
推荐(0)
摘要:
内核类型 无符号类型: 内核类型 C标准类型 说明 u8 uint8_t 无符号8位 u16 uin16_t 无符号8位无符号8位 u32 uint32_t 无符号8位 u64 uint64_t 无符号8位
阅读全文
posted @ 2025-10-16 11:27
苏格拉底的落泪
阅读(10)
推荐(0)
摘要:
linux 同步机制之complete 用户线程(提交请求) Ceph 内核通信线程(网络回调) ─────────────────────────────── ─────────────────────────────── 1. init_completion(&req->completion)
阅读全文
posted @ 2025-10-15 10:14
苏格拉底的落泪
阅读(16)
推荐(0)
摘要:
网卡命令 ifup / ifdown 功能:启用或关闭网络接口。 依赖配置文件:在 RHEL/CentOS 系统,读取 /etc/sysconfig/network-scripts/ifcfg-*。 用法: ifup eth0 # 启用 eth0 ifdown eth0 # 关闭 eth0 限制:如
阅读全文
posted @ 2025-09-17 09:21
苏格拉底的落泪
阅读(37)
推荐(0)
摘要:
设计模式之PIMPL模式 参考资料 1. 设计模式之PIMPL模式
阅读全文
posted @ 2025-09-15 20:30
苏格拉底的落泪
阅读(4)
推荐(0)
摘要:
配置笔记本电脑安装centos7关闭盖子不休眠 struct workqueue_struct *my_wq; my_wq = alloc_workqueue("my_wq", WQ_UNBOUND | WQ_MEM_RECLAIM, 1); INIT_WORK(&my_work, my_work_
阅读全文
posted @ 2025-09-10 19:27
苏格拉底的落泪
阅读(34)
推荐(0)
摘要:
RDMA简介 目前有三种RDMA网络,分别是Infiniband、RoCE(RDMA over Converged Ethernet)、iWARP。其中,Infiniband是一种专为RDMA设计的网络,从硬件级别保证可靠传输 ,技术先进,但是成本高昂。 而RoCE 和 iWARP都是基于以太网的R
阅读全文
posted @ 2025-09-10 19:13
苏格拉底的落泪
阅读(284)
推荐(0)
摘要:
参考资料 1. beegfs集群部署
阅读全文
posted @ 2025-08-28 21:10
苏格拉底的落泪
阅读(67)
推荐(0)
摘要:
调试方法 用 c++filt 还原符号名: echo "_ZN5hf3fsfuseRC..." | c++filt 这样能看到它到底是 hf3fs::fuse::RC::something,还是一个全局对象。 然后你就能判断: 如果它是一个类方法 → 确认实现文件是否编进了 .so。 如果它是个全局
阅读全文
posted @ 2025-08-20 09:25
苏格拉底的落泪
阅读(25)
推荐(0)
摘要:
share reservation原理 背景 在 NFS v4 协议中,每个 OPEN 操作除了指定读写权限外,还可以指定 share reservation(共享保留),告诉服务器:这个客户端打算 如何访问文件(读/写/读写);以及它 希望其他客户端是否被允许访问。这样做的目的是:避免多个客户端同
阅读全文
posted @ 2025-08-17 22:04
苏格拉底的落泪
阅读(13)
推荐(0)
摘要:
编译安装lizardfs 1. 编译fmt: git clone https://github.com/fmtlib/fmt.git cd fmt mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc)
阅读全文
posted @ 2025-08-14 21:56
苏格拉底的落泪
阅读(7)
推荐(0)
摘要:
利用iso镜像文件文件配置本地yum源 首先,创建一个目录,用于挂载 ISO 文件。例如,创建一个名为 /mnt/iso 的目录: sudo mkdir /mnt/iso 使用 mount 命令将 ISO 文件挂载到刚创建的目录中。假设 ISO 文件的路径为 /path/to/your.iso,执行
阅读全文
posted @ 2025-08-14 21:35
苏格拉底的落泪
阅读(180)
推荐(0)
摘要:
C++中只用指针而无需完整类型定义教程 在 C++ 里,如果你只用指针来引用一个类型,而不直接使用这个类型的成员或实例,是可以不需要完整定义该类型的,这叫做前向声明(forward declaration)。 1. 例子: #include <iostream> // 前向声明(不需要包含完整头文件
阅读全文
posted @ 2025-08-12 21:59
苏格拉底的落泪
阅读(11)
推荐(0)
摘要:
移动多个主机到root-default: # 将指定主机移动到default根节点下 ceph osd crush move <hostname> root=default # 示例:将node1主机移动到default根节点 ceph osd crush move node1 root=defau
阅读全文
posted @ 2025-08-08 11:25
苏格拉底的落泪
阅读(10)
推荐(0)
摘要:
函数nfs4_op_open解析 typedef enum { CLAIM_NULL = 0, CLAIM_PREVIOUS = 1, CLAIM_DELEGATE_CUR = 2, CLAIM_DELEGATE_PREV = 3, CLAIM_FH = 4, CLAIM_DELEG_PREV_FH
阅读全文
posted @ 2025-08-07 22:16
苏格拉底的落泪
阅读(13)
推荐(0)
摘要:
struct fuse_lowlevel_ops解析-① void (*setattr)( fuse_req_t req, fuse_ino_t ino, struct stat *attr, int to_set, struct fuse_file_info *fi ); setattr 的 to
阅读全文
posted @ 2025-08-06 20:54
苏格拉底的落泪
阅读(30)
推荐(0)
摘要:
folly::atomic_shared_ptr folly::atomic_shared_ptr<T> 是 Facebook 的 Folly 库提供的一个 线程安全的 std::shared_ptr 原子封装器。它弥补了标准 C++ 中 std::shared_ptr 不能直接进行原子读写的缺陷(
阅读全文
posted @ 2025-07-28 11:16
苏格拉底的落泪
阅读(58)
推荐(0)
摘要:
folly::partial #include <folly/Functional.h> #include <iostream> void print(int a, int b, int c) { std::cout << a << ", " << b << ", " << c << std::en
阅读全文
posted @ 2025-07-25 09:39
苏格拉底的落泪
阅读(9)
推荐(0)
摘要:
RDMA基础 参考资料 1. RDMA基本元素
阅读全文
posted @ 2025-07-16 15:48
苏格拉底的落泪
阅读(13)
推荐(0)
摘要:
函数posix_memalign 函数posix_memalign原型: #include <stdlib.h> int posix_memalign(void **memptr, size_t alignment, size_t size); 参数说明 memptr: 双重指针,用于存储分配的内存
阅读全文
posted @ 2025-07-16 10:20
苏格拉底的落泪
阅读(211)
推荐(0)