int vfs_statfs(const struct path *path, struct kstatfs *buf) 用于返回形参path 表示的文件的mount point和super block的有效flags
返回的结果保存在形参buf中
其结构体如下:
struct kstatfs {
long f_type;
long f_bsize;
u64 f_blocks;
u64 f_bfree;
u64 f_bavail;
u64 f_files;
u64 f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_flags;
long f_spare[4];
};
其源码分析如下:
int vfs_statfs(const struct path *path, struct kstatfs *buf)
{
int error;
#检查path对应的dentry 是否有error
error = statfs_by_dentry(path->dentry, buf);
if (!error)
#如果没有error,就返回mount point和 super block的有效flags
buf->f_flags = calculate_f_flags(path->mnt);
return error;
}
下面这个函数就很清楚的看到是返回mnt 和super block的有效flags
static int calculate_f_flags(struct vfsmount *mnt)
{
return ST_VALID | flags_by_mnt(mnt->mnt_flags) |
flags_by_sb(mnt->mnt_sb->s_flags);
}
内核文件系统API之vfs_statfs
最新推荐文章于 2024-12-04 17:37:33 发布