
Linux内核文件系统
weixin_46243251
这个作者很懒,什么都没留下…
展开
-
Linux内核文件系统14
2021SC@SDUSCsuper.c(1)接下来分析另一个核心部分super.c文件。这个文件中存的是文件系统里超级块(super_block)的相关函数,对于文件系统有极大的重要性。并且这个文件代码量也很大,还是分次进行介绍。锁排序注意i_mmap_sem (EXT4_I(inode)->i_mmap_sem)和i_mmap_rwsem (inode->i_mmap_rwsem)之间的区别页面错误路径:mmap_lock -> sb_start_page原创 2021-12-27 12:56:05 · 631 阅读 · 0 评论 -
Linux内核文件系统13
2021SC@SDUSCinode.c(4)/* * ext4_get_inode_loc在成功时返回一个针对inode底层buffer_head的额外refcount。 如果'in_mem'为真,则在内存中有重新创建该inode的磁盘版本所需的所有数据。 */static int __ext4_get_inode_loc(struct super_block *sb, unsigned long ino, struct ext4_iloc *iloc, int in_mem,原创 2021-12-24 15:43:33 · 1597 阅读 · 0 评论 -
Linux内核文件系统12
2021SC@SDUSCinode.c(3)/* * 强制为给定的 inode 分配所有延迟分配块。 */int ext4_alloc_da_blocks(struct inode *inode){ trace_ext4_alloc_da_blocks(inode); if (!EXT4_I(inode)->i_reserved_data_blocks) return 0; /* * 我们现在做一些简单的事情。 filemap_flush() 也将开始触发数据块的原创 2021-12-21 08:06:33 · 816 阅读 · 0 评论 -
Linux内核文件系统11
2021SC@SDUSCinode.c(2)/** 请注意,除非我们记录数据,否则我们不需要启动事务,因为我们应该从 ext4_page_mkwrite() 填充漏洞。 我们甚至不需要在有序模式下将 inode 归档到事务列表中, 因为如果我们写回通过 write() 添加的数据,inode 已经在那里, 如果我们写回通过 mmap() 修改的数据,没有人保证数据将在哪个事务中访问磁盘。 如果我们正在记录数据,我们不能直接启动事务,因为事务启动高于页面锁,所以我们必须做一些mag原创 2021-12-17 13:04:24 · 1314 阅读 · 0 评论 -
Linux内核文件系统10
2021SC@SDUSCinode.c(1)今天来分析inode.c文件。有了前面对ext4_jbd2.h、acl.h等头文件的分析做基础,今天的分析将相对简单。在看代码之前,首先要说一下inode数据结构。inode是Linux内核文件系统中最重要的数据结构之一,里面保存了文件的大小、文件块的大小、创建时间等参数,可以说,一个inode就代表了一个文件。因为软连接、硬连接的存在,指向一个文件的路径可能有多个,即一个文件可以有多个dentry,但是一个文件只能有一个inode。ext原创 2021-12-13 22:57:45 · 904 阅读 · 0 评论 -
Linux内核文件系统09
2021SC@SDUSC今天来分析balloc.c文件。balloc.c文件包含block的分配和回收例程,在文件系统属于比较底层的,理解起来会有些困难。以下是balloc.c文件的代码解读// SPDX-License-Identifier: GPL-2.0/* * linux/fs/ext4/balloc.c * * Copyright (C) 1992, 1993, 1994, 1995 * Remy Card (card@masi.ibp.fr) * Labora原创 2021-12-06 22:03:05 · 545 阅读 · 0 评论 -
Linux内核文件系统8
2021SC@SDUSC今天来分析ext4_jbd2.h 和 ext4_jbd2.c文件。以下是ext4_jbd2.h头文件的代码分析// SPDX-License-Identifier: GPL-2.0+/* * ext4_jbd2.h * * Written by Stephen C. Tweedie <sct@redhat.com>, 1999 * * Copyright 1998--1999 Red Hat corp --- All Rights Reser原创 2021-12-05 23:35:22 · 511 阅读 · 0 评论 -
Linux内核文件系统7
2021SC@SDUSC今天来分析ext4_extents.h 、 xattr.h 、 truncate.h 三个头文件,为以后分析inode.c核心文件打下基础。以下是ext4_extents.h头文件的代码分析// SPDX-License-Identifier: GPL-2.0/* * Copyright (c) 2003-2006, Cluster File Systems, Inc, info@clusterfs.com * Written by Alex Tomas &l原创 2021-12-05 20:48:53 · 941 阅读 · 0 评论 -
Linux内核文件系统6
2021SC@SDUSC原创 2021-11-21 22:24:01 · 738 阅读 · 0 评论 -
Linux内核文件系统5
2021SC@SDUSC原创 2021-11-14 22:15:05 · 1324 阅读 · 0 评论 -
Linux内核文件系统4
2021SC@SDUSC接上一篇的acl.h文件,今天来看ext4源码的acl.c文件部分,主要是一些acl权限控制的具体实现。首先需要说一下里面两个比较重要的结构体:acl结构体和posix结构体。鉴于acl结构体在上一篇已经讲过,所以以下部分只说一下posix结构体的实现:struct posix_acl { /*引用计数*/ atomic_t a_refcount; /*内部有几个acl项*/ unsigned int a_count; /*实际数据区*/ struct原创 2021-11-02 20:28:36 · 215 阅读 · 0 评论 -
Linux内核文件系统3
2021SC@SDUSC首先来分析一下ext4文件系统的acl.h文件(位于fs/ext4文件夹下)的源代码。先简单说一下什么是acl技术吧。acl(Access Control Lists,访问控制列表),是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃。举个例子,比如说有三个用户在一个group里,分别是甲,乙,丙。甲跟乙的关系比较好,跟丙的关系不好,所以甲的文件想让乙查看,但不想让丙查看。可以让甲和乙再建一个group,但这就增加了不必要的开销原创 2021-10-20 21:21:07 · 287 阅读 · 0 评论 -
Linux内核文件系统2
2021SC@SDUSC上一条博文已经讲过,除了本身的Ext2之外,Linux支持多种文件系统(Ext4,FAT等),用户可以通过一个文件系统界面(系统调用)来操作不同的文件系统。从用户的角度看,我们并不需要关注文件系统的类型以及怎么进行具体的操作,这就是虚拟文件系统(VFS)。VFS为用户提供了一组系统调用,如读写文件reed()、write()以及移动文件指针lseek()等。那么,内核与不同的文件系统的接口是怎么实现的呢?这就要提到include\Linux文件夹下fs.h..原创 2021-10-11 15:27:26 · 159 阅读 · 0 评论 -
Linux内核文件系统1
2021SC@SDUSC一、概述 Linux系统主要由4个部分组成:内核、shell、文件系统和应用程序。内核是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。 文件系统中的文件是数据的集合。文件系统不仅保存文件中包含的数据,而且还保存文件系统的结构。它包含Linux用户和进程所看到的文件、目录、软链接、文件保护信息等所有信息。此外,它必须安全地..原创 2021-09-30 23:58:57 · 185 阅读 · 0 评论