ext4 ext4_mount
来源:互联网 发布:广电双向网络改造方案 编辑:程序博客网 时间:2024/05/17 11:57
ext4_mount
ext4 挂载函数,由具体的文件系统提供
static struct dentry *ext4_mount(struct file_system_type *fs_type, int flags, const char *dev_name, void *data){return mount_bdev(fs_type, flags, dev_name, data, ext4_fill_super);}
struct dentry *mount_bdev(struct file_system_type *fs_type,int flags, const char *dev_name, void *data,int (*fill_super)(struct super_block *, void *, int)){struct block_device *bdev;struct super_block *s;fmode_t mode = FMODE_READ | FMODE_EXCL;int error = 0;if (!(flags & MS_RDONLY))mode |= FMODE_WRITE;获取设备bdev = blkdev_get_by_path(dev_name, mode, fs_type);if (IS_ERR(bdev))return ERR_CAST(bdev);/* * once the super is inserted into the list by sget, s_umount * will protect the lockfs code from trying to start a snapshot * while we are mounting */mutex_lock(&bdev->bd_fsfreeze_mutex);if (bdev->bd_fsfreeze_count > 0) {mutex_unlock(&bdev->bd_fsfreeze_mutex);error = -EBUSY;goto error_bdev;}s = sget(fs_type, test_bdev_super, set_bdev_super, flags | MS_NOSEC, bdev);mutex_unlock(&bdev->bd_fsfreeze_mutex);if (IS_ERR(s))goto error_s;if (s->s_root) {if ((flags ^ s->s_flags) & MS_RDONLY) {deactivate_locked_super(s);error = -EBUSY;goto error_bdev;}/* * s_umount nests inside bd_mutex during * __invalidate_device(). blkdev_put() acquires * bd_mutex and can't be called under s_umount. Drop * s_umount temporarily. This is safe as we're * holding an active reference. */up_write(&s->s_umount);blkdev_put(bdev, mode);down_write(&s->s_umount);} else {s->s_mode = mode;snprintf(s->s_id, sizeof(s->s_id), "%pg", bdev);sb_set_blocksize(s, block_size(bdev));error = fill_super(s, data, flags & MS_SILENT ? 1 : 0);if (error) {deactivate_locked_super(s);goto error;}s->s_flags |= MS_ACTIVE;bdev->bd_super = s;}return dget(s->s_root);error_s:error = PTR_ERR(s);error_bdev:blkdev_put(bdev, mode);error:return ERR_PTR(error);}
0 0
- ext4 ext4_mount
- Ext4
- Ext4
- ext4
- Ext4 features
- ext4.0
- 剖析ext4
- ext4 介绍
- 剖析 ext4
- ext4 学习
- EXt4 文件系统
- ext4 2
- ext4文件系统
- Ext4.0
- ext4格式
- ext4文件系统
- 剖析 ext4
- ext4 文件系统
- 【HDU-oj】-2157-How many ways??(矩阵)
- 【django3】Django学习笔记3:Model,Template,View 基本概念
- [BZOJ2741][[FOTILE模拟赛]][可持久化Trie+分块]
- 主成分分析PCA
- C++指针
- ext4 ext4_mount
- Flying to the Mars(hdu 1800)(trie tree)
- js中将类数组转换为数组的几种方法
- virtualbox中怎么给linux添加磁盘空间
- 大数据时代应该如何投资股票
- adnroid.appwidget.AppWidgetProvider
- Java访问权限public、protected、默认、private
- Struts2动态调用方法的常见方式
- 以太坊开发--阿里云ECS(centOS 6.8)安装Ethereum TestRPC