随笔分类 -  【23】linux内核

1
摘要: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 苏格拉底的落泪 阅读(4) 评论(0) 推荐(0)
摘要:参考资料 1. Linux内核的同步机制 2. 内核基础设施——读写信号量 阅读全文
posted @ 2025-12-21 20:38 苏格拉底的落泪 阅读(5) 评论(0) 推荐(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) 推荐(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) 推荐(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 苏格拉底的落泪 阅读(4) 评论(0) 推荐(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) 推荐(0)
摘要:用户写和后台写回writeback竞争关系 问题本质:文件正在被写入 page cache(脏页变更多)与此同时后台 flusher 正在把同一文件的脏页写回。那内核如何并发处理?不会互相覆盖?不会 crash?不会写错数据? 如果两者同时操作,竞争如何解决? Case 1:用户写入时 page 正 阅读全文
posted @ 2025-12-16 16:41 苏格拉底的落泪 阅读(8) 评论(0) 推荐(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) 推荐(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 苏格拉底的落泪 阅读(5) 评论(0) 推荐(0)
摘要:源码解读Linux等待队列 参考资料 1. 源码解读Linux等待队列 2. 内核基础设施wait queue 3. 理解 Linux 等待队列 4. Linux等待队列(Wait Queue) 阅读全文
posted @ 2025-12-15 14:37 苏格拉底的落泪 阅读(6) 评论(0) 推荐(0)
摘要:struct page /* * 系统中的每一个物理页(physical page)都对应一个 struct page 结构, * 用于追踪该页当前的用途。注意,我们无法追踪哪些任务(task) * 正在使用这个页;但如果该页是一个 pagecache 页面, * 我们可以通过 rmap(rever 阅读全文
posted @ 2025-11-02 22:04 苏格拉底的落泪 阅读(21) 评论(0) 推荐(0)
摘要:结构体struct file struct file 是内核中用于表示 一个已经打开的文件实例 的数据结构。系统中每当有文件被打开时,内核都会在内核空间创建一个对应的 struct file 对象,并在后续所有针对该文件的操作中传递它的指针。struct file 保存了文件会话级的状态,例如当前读 阅读全文
posted @ 2025-10-29 11:31 苏格拉底的落泪 阅读(27) 评论(0) 推荐(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 苏格拉底的落泪 阅读(37) 评论(0) 推荐(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) 推荐(0)
摘要:linux 同步机制之complete 用户线程(提交请求) Ceph 内核通信线程(网络回调) ─────────────────────────────── ─────────────────────────────── 1. init_completion(&req->completion) 阅读全文
posted @ 2025-10-15 10:14 苏格拉底的落泪 阅读(20) 评论(0) 推荐(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 苏格拉底的落泪 阅读(43) 评论(0) 推荐(0)
摘要:ext2文件系统 ext2文件系统 在ext2文件系统中,每个物理块(block)默认只包含一个inode。这意味着一个物理块的大小与一个inode的大小相同。 在ext2文件系统中,每个inode的大小固定为128字节。而一个物理块的大小可以根据不同的文件系统配置而有所不同,默认情况下通常为1KB 阅读全文
posted @ 2023-03-16 21:03 苏格拉底的落泪 阅读(150) 评论(0) 推荐(0)
摘要:增加内核的ceph模块的日志打印 ceph在内核的通用模块主要有三个: # ceph.ko 模块路径 /usr/src/kernels/3.10.0-862.el7.x86_64/fs/ceph # rbd.ko 模块路径 /usr/src/kernels/3.10.0-862.el7.x86_64 阅读全文
posted @ 2022-05-21 10:35 苏格拉底的落泪 阅读(120) 评论(0) 推荐(0)
摘要:linux内核定时器 代码位置:kernel/time/timer.c 函数原型: int mod_timer(struct timer_list *timer, unsigned long expires); 功能:修改已有定时器的到期时间。如果定时器已经在运行,它会重新设置到期时间;如果定时器未 阅读全文
posted @ 2019-02-20 16:04 苏格拉底的落泪 阅读(374) 评论(0) 推荐(0)
摘要:内核源码分析 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 苏格拉底的落泪 阅读(640) 评论(0) 推荐(0)

1