mount过程分析之四(vfs_kern_mount->mount_fs->xfs_fs_mount)

本文详细解析了Linux内核中mount过程,从sys_mount开始,经过do_mount、do_new_mount、vfs_kern_mount,直至mount_fs和特定文件系统的mount回调函数。重点介绍了xfs文件系统的mount流程,包括xfs_super.c中的init_xfs_fs模块初始化,以及xfs_fs_mount函数如何调用mount_bdev()。通过一系列博客链接提供了深入学习资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sys_mount - > do_mount -> do_new_mount -> vfs_kern_mount

vfs_kern_mount的作用就是准备好一个完整的mount结构。
vfs_kern_mount(struct file_system_type *type, int flags, const char *name, void *data)
{
        struct mount *mnt;
        struct dentry *root;

        if (!type)
                return ERR_PTR(-ENODEV);

        // alloc一个新的struct mount结构,并初始化里面一部分(如链表指针、mnt_devname等成员内容)
        mnt = alloc_vfsmnt(name);
        if (!mnt)
                return ERR_PTR(-ENOMEM);

        if (flags & MS_KERNMOUNT)
                mnt->mnt.mnt_flags = MNT_INTERNAL;

        // 调用具体文件系统的mount回调函数type->mount,继续挂载操作
        root = mount_fs(type, flags, name, data);
        if (IS_ERR(root)) {
                mnt_free_id(mnt);
                free_vfsmnt(mnt);
                return ERR_CAST(root);
        }

        // 完成mnt结构的最后赋值,并返回vfsmount结构
        mnt->mnt.mnt_root = root;
        mnt-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值