内核文件系统API之vfs_statfs

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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值