diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-14 21:54:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-14 21:54:01 -0400 |
commit | 0f0d12728e56c94d3289c6831243b6faeae8a19d (patch) | |
tree | bd52fd4ed6fba2a0d8bb95e7fc33f51ac299001d /fs/btrfs | |
parent | 581bfce969cbfc7ce43ee92273be9cb7c3fdfa61 (diff) | |
parent | e462ec50cb5fad19f6003a3d8087f4a0945dd2b1 (diff) |
Merge branch 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull mount flag updates from Al Viro:
"Another chunk of fmount preparations from dhowells; only trivial
conflicts for that part. It separates MS_... bits (very grotty
mount(2) ABI) from the struct super_block ->s_flags (kernel-internal,
only a small subset of MS_... stuff).
This does *not* convert the filesystems to new constants; only the
infrastructure is done here. The next step in that series is where the
conflicts would be; that's the conversion of filesystems. It's purely
mechanical and it's better done after the merge, so if you could run
something like
list=$(for i in MS_RDONLY MS_NOSUID MS_NODEV MS_NOEXEC MS_SYNCHRONOUS MS_MANDLOCK MS_DIRSYNC MS_NOATIME MS_NODIRATIME MS_SILENT MS_POSIXACL MS_KERNMOUNT MS_I_VERSION MS_LAZYTIME; do git grep -l $i fs drivers/staging/lustre drivers/mtd ipc mm include/linux; done|sort|uniq|grep -v '^fs/namespace.c$')
sed -i -e 's/\<MS_RDONLY\>/SB_RDONLY/g' \
-e 's/\<MS_NOSUID\>/SB_NOSUID/g' \
-e 's/\<MS_NODEV\>/SB_NODEV/g' \
-e 's/\<MS_NOEXEC\>/SB_NOEXEC/g' \
-e 's/\<MS_SYNCHRONOUS\>/SB_SYNCHRONOUS/g' \
-e 's/\<MS_MANDLOCK\>/SB_MANDLOCK/g' \
-e 's/\<MS_DIRSYNC\>/SB_DIRSYNC/g' \
-e 's/\<MS_NOATIME\>/SB_NOATIME/g' \
-e 's/\<MS_NODIRATIME\>/SB_NODIRATIME/g' \
-e 's/\<MS_SILENT\>/SB_SILENT/g' \
-e 's/\<MS_POSIXACL\>/SB_POSIXACL/g' \
-e 's/\<MS_KERNMOUNT\>/SB_KERNMOUNT/g' \
-e 's/\<MS_I_VERSION\>/SB_I_VERSION/g' \
-e 's/\<MS_LAZYTIME\>/SB_LAZYTIME/g' \
$list
and commit it with something along the lines of 'convert filesystems
away from use of MS_... constants' as commit message, it would save a
quite a bit of headache next cycle"
* 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
VFS: Differentiate mount flags (MS_*) from internal superblock flags
VFS: Convert sb->s_flags & MS_RDONLY to sb_rdonly(sb)
vfs: Add sb_rdonly(sb) to query the MS_RDONLY flag on s_flags
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/dev-replace.c | 2 | ||||
-rw-r--r-- | fs/btrfs/disk-io.c | 12 | ||||
-rw-r--r-- | fs/btrfs/extent_io.c | 4 | ||||
-rw-r--r-- | fs/btrfs/inode.c | 2 | ||||
-rw-r--r-- | fs/btrfs/ioctl.c | 2 | ||||
-rw-r--r-- | fs/btrfs/root-tree.c | 2 | ||||
-rw-r--r-- | fs/btrfs/super.c | 11 | ||||
-rw-r--r-- | fs/btrfs/sysfs.c | 4 | ||||
-rw-r--r-- | fs/btrfs/volumes.c | 4 |
9 files changed, 21 insertions, 22 deletions
diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c index 7a93a3e1a847..7c655f9a7a50 100644 --- a/fs/btrfs/dev-replace.c +++ b/fs/btrfs/dev-replace.c | |||
@@ -704,7 +704,7 @@ static u64 __btrfs_dev_replace_cancel(struct btrfs_fs_info *fs_info) | |||
704 | u64 result; | 704 | u64 result; |
705 | int ret; | 705 | int ret; |
706 | 706 | ||
707 | if (fs_info->sb->s_flags & MS_RDONLY) | 707 | if (sb_rdonly(fs_info->sb)) |
708 | return -EROFS; | 708 | return -EROFS; |
709 | 709 | ||
710 | mutex_lock(&dev_replace->lock_finishing_cancel_unmount); | 710 | mutex_lock(&dev_replace->lock_finishing_cancel_unmount); |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index b6dc1d179d23..487bbe4fb3c6 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -2478,7 +2478,7 @@ static int btrfs_replay_log(struct btrfs_fs_info *fs_info, | |||
2478 | return ret; | 2478 | return ret; |
2479 | } | 2479 | } |
2480 | 2480 | ||
2481 | if (fs_info->sb->s_flags & MS_RDONLY) { | 2481 | if (sb_rdonly(fs_info->sb)) { |
2482 | ret = btrfs_commit_super(fs_info); | 2482 | ret = btrfs_commit_super(fs_info); |
2483 | if (ret) | 2483 | if (ret) |
2484 | return ret; | 2484 | return ret; |
@@ -2876,7 +2876,7 @@ int open_ctree(struct super_block *sb, | |||
2876 | 2876 | ||
2877 | features = btrfs_super_compat_ro_flags(disk_super) & | 2877 | features = btrfs_super_compat_ro_flags(disk_super) & |
2878 | ~BTRFS_FEATURE_COMPAT_RO_SUPP; | 2878 | ~BTRFS_FEATURE_COMPAT_RO_SUPP; |
2879 | if (!(sb->s_flags & MS_RDONLY) && features) { | 2879 | if (!sb_rdonly(sb) && features) { |
2880 | btrfs_err(fs_info, | 2880 | btrfs_err(fs_info, |
2881 | "cannot mount read-write because of unsupported optional features (%llx)", | 2881 | "cannot mount read-write because of unsupported optional features (%llx)", |
2882 | features); | 2882 | features); |
@@ -3038,7 +3038,7 @@ retry_root_backup: | |||
3038 | goto fail_sysfs; | 3038 | goto fail_sysfs; |
3039 | } | 3039 | } |
3040 | 3040 | ||
3041 | if (!(sb->s_flags & MS_RDONLY) && !btrfs_check_rw_degradable(fs_info)) { | 3041 | if (!sb_rdonly(sb) && !btrfs_check_rw_degradable(fs_info)) { |
3042 | btrfs_warn(fs_info, | 3042 | btrfs_warn(fs_info, |
3043 | "writeable mount is not allowed due to too many missing devices"); | 3043 | "writeable mount is not allowed due to too many missing devices"); |
3044 | goto fail_sysfs; | 3044 | goto fail_sysfs; |
@@ -3097,7 +3097,7 @@ retry_root_backup: | |||
3097 | if (ret) | 3097 | if (ret) |
3098 | goto fail_qgroup; | 3098 | goto fail_qgroup; |
3099 | 3099 | ||
3100 | if (!(sb->s_flags & MS_RDONLY)) { | 3100 | if (!sb_rdonly(sb)) { |
3101 | ret = btrfs_cleanup_fs_roots(fs_info); | 3101 | ret = btrfs_cleanup_fs_roots(fs_info); |
3102 | if (ret) | 3102 | if (ret) |
3103 | goto fail_qgroup; | 3103 | goto fail_qgroup; |
@@ -3123,7 +3123,7 @@ retry_root_backup: | |||
3123 | goto fail_qgroup; | 3123 | goto fail_qgroup; |
3124 | } | 3124 | } |
3125 | 3125 | ||
3126 | if (sb->s_flags & MS_RDONLY) | 3126 | if (sb_rdonly(sb)) |
3127 | return 0; | 3127 | return 0; |
3128 | 3128 | ||
3129 | if (btrfs_test_opt(fs_info, CLEAR_CACHE) && | 3129 | if (btrfs_test_opt(fs_info, CLEAR_CACHE) && |
@@ -3878,7 +3878,7 @@ void close_ctree(struct btrfs_fs_info *fs_info) | |||
3878 | 3878 | ||
3879 | cancel_work_sync(&fs_info->async_reclaim_work); | 3879 | cancel_work_sync(&fs_info->async_reclaim_work); |
3880 | 3880 | ||
3881 | if (!(fs_info->sb->s_flags & MS_RDONLY)) { | 3881 | if (!sb_rdonly(fs_info->sb)) { |
3882 | /* | 3882 | /* |
3883 | * If the cleaner thread is stopped and there are | 3883 | * If the cleaner thread is stopped and there are |
3884 | * block groups queued for removal, the deletion will be | 3884 | * block groups queued for removal, the deletion will be |
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index 0f077c5db58e..3e5bb0cdd3cd 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c | |||
@@ -2060,7 +2060,7 @@ int repair_eb_io_failure(struct btrfs_fs_info *fs_info, | |||
2060 | unsigned long i, num_pages = num_extent_pages(eb->start, eb->len); | 2060 | unsigned long i, num_pages = num_extent_pages(eb->start, eb->len); |
2061 | int ret = 0; | 2061 | int ret = 0; |
2062 | 2062 | ||
2063 | if (fs_info->sb->s_flags & MS_RDONLY) | 2063 | if (sb_rdonly(fs_info->sb)) |
2064 | return -EROFS; | 2064 | return -EROFS; |
2065 | 2065 | ||
2066 | for (i = 0; i < num_pages; i++) { | 2066 | for (i = 0; i < num_pages; i++) { |
@@ -2110,7 +2110,7 @@ int clean_io_failure(struct btrfs_fs_info *fs_info, | |||
2110 | failrec->start); | 2110 | failrec->start); |
2111 | goto out; | 2111 | goto out; |
2112 | } | 2112 | } |
2113 | if (fs_info->sb->s_flags & MS_RDONLY) | 2113 | if (sb_rdonly(fs_info->sb)) |
2114 | goto out; | 2114 | goto out; |
2115 | 2115 | ||
2116 | spin_lock(&io_tree->lock); | 2116 | spin_lock(&io_tree->lock); |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 17ad018da0a2..128f3e58634f 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -5821,7 +5821,7 @@ struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry) | |||
5821 | 5821 | ||
5822 | if (!IS_ERR(inode) && root != sub_root) { | 5822 | if (!IS_ERR(inode) && root != sub_root) { |
5823 | down_read(&fs_info->cleanup_work_sem); | 5823 | down_read(&fs_info->cleanup_work_sem); |
5824 | if (!(inode->i_sb->s_flags & MS_RDONLY)) | 5824 | if (!sb_rdonly(inode->i_sb)) |
5825 | ret = btrfs_orphan_cleanup(sub_root); | 5825 | ret = btrfs_orphan_cleanup(sub_root); |
5826 | up_read(&fs_info->cleanup_work_sem); | 5826 | up_read(&fs_info->cleanup_work_sem); |
5827 | if (ret) { | 5827 | if (ret) { |
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 0ebaf5d116bc..d6715c2bcdc4 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
@@ -4426,7 +4426,7 @@ static long btrfs_ioctl_dev_replace(struct btrfs_fs_info *fs_info, | |||
4426 | 4426 | ||
4427 | switch (p->cmd) { | 4427 | switch (p->cmd) { |
4428 | case BTRFS_IOCTL_DEV_REPLACE_CMD_START: | 4428 | case BTRFS_IOCTL_DEV_REPLACE_CMD_START: |
4429 | if (fs_info->sb->s_flags & MS_RDONLY) { | 4429 | if (sb_rdonly(fs_info->sb)) { |
4430 | ret = -EROFS; | 4430 | ret = -EROFS; |
4431 | goto out; | 4431 | goto out; |
4432 | } | 4432 | } |
diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c index 9fb9896610e0..95bcc3cce78f 100644 --- a/fs/btrfs/root-tree.c +++ b/fs/btrfs/root-tree.c | |||
@@ -228,7 +228,7 @@ int btrfs_find_orphan_roots(struct btrfs_fs_info *fs_info) | |||
228 | int ret; | 228 | int ret; |
229 | bool can_recover = true; | 229 | bool can_recover = true; |
230 | 230 | ||
231 | if (fs_info->sb->s_flags & MS_RDONLY) | 231 | if (sb_rdonly(fs_info->sb)) |
232 | can_recover = false; | 232 | can_recover = false; |
233 | 233 | ||
234 | path = btrfs_alloc_path(); | 234 | path = btrfs_alloc_path(); |
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 2b13d1a69f0b..35a128acfbd1 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c | |||
@@ -103,7 +103,7 @@ static void btrfs_handle_error(struct btrfs_fs_info *fs_info) | |||
103 | { | 103 | { |
104 | struct super_block *sb = fs_info->sb; | 104 | struct super_block *sb = fs_info->sb; |
105 | 105 | ||
106 | if (sb->s_flags & MS_RDONLY) | 106 | if (sb_rdonly(sb)) |
107 | return; | 107 | return; |
108 | 108 | ||
109 | if (test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) { | 109 | if (test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) { |
@@ -139,7 +139,7 @@ void __btrfs_handle_fs_error(struct btrfs_fs_info *fs_info, const char *function | |||
139 | * Special case: if the error is EROFS, and we're already | 139 | * Special case: if the error is EROFS, and we're already |
140 | * under MS_RDONLY, then it is safe here. | 140 | * under MS_RDONLY, then it is safe here. |
141 | */ | 141 | */ |
142 | if (errno == -EROFS && (sb->s_flags & MS_RDONLY)) | 142 | if (errno == -EROFS && sb_rdonly(sb)) |
143 | return; | 143 | return; |
144 | 144 | ||
145 | #ifdef CONFIG_PRINTK | 145 | #ifdef CONFIG_PRINTK |
@@ -1701,8 +1701,7 @@ static inline void btrfs_remount_cleanup(struct btrfs_fs_info *fs_info, | |||
1701 | * close or the filesystem is read only. | 1701 | * close or the filesystem is read only. |
1702 | */ | 1702 | */ |
1703 | if (btrfs_raw_test_opt(old_opts, AUTO_DEFRAG) && | 1703 | if (btrfs_raw_test_opt(old_opts, AUTO_DEFRAG) && |
1704 | (!btrfs_raw_test_opt(fs_info->mount_opt, AUTO_DEFRAG) || | 1704 | (!btrfs_raw_test_opt(fs_info->mount_opt, AUTO_DEFRAG) || sb_rdonly(fs_info->sb))) { |
1705 | (fs_info->sb->s_flags & MS_RDONLY))) { | ||
1706 | btrfs_cleanup_defrag_inodes(fs_info); | 1705 | btrfs_cleanup_defrag_inodes(fs_info); |
1707 | } | 1706 | } |
1708 | 1707 | ||
@@ -1749,7 +1748,7 @@ static int btrfs_remount(struct super_block *sb, int *flags, char *data) | |||
1749 | btrfs_resize_thread_pool(fs_info, | 1748 | btrfs_resize_thread_pool(fs_info, |
1750 | fs_info->thread_pool_size, old_thread_pool_size); | 1749 | fs_info->thread_pool_size, old_thread_pool_size); |
1751 | 1750 | ||
1752 | if ((*flags & MS_RDONLY) == (sb->s_flags & MS_RDONLY)) | 1751 | if ((bool)(*flags & MS_RDONLY) == sb_rdonly(sb)) |
1753 | goto out; | 1752 | goto out; |
1754 | 1753 | ||
1755 | if (*flags & MS_RDONLY) { | 1754 | if (*flags & MS_RDONLY) { |
@@ -1850,7 +1849,7 @@ out: | |||
1850 | 1849 | ||
1851 | restore: | 1850 | restore: |
1852 | /* We've hit an error - don't reset MS_RDONLY */ | 1851 | /* We've hit an error - don't reset MS_RDONLY */ |
1853 | if (sb->s_flags & MS_RDONLY) | 1852 | if (sb_rdonly(sb)) |
1854 | old_flags |= MS_RDONLY; | 1853 | old_flags |= MS_RDONLY; |
1855 | sb->s_flags = old_flags; | 1854 | sb->s_flags = old_flags; |
1856 | fs_info->mount_opt = old_opts; | 1855 | fs_info->mount_opt = old_opts; |
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c index 2b6d37c09a81..883881b16c86 100644 --- a/fs/btrfs/sysfs.c +++ b/fs/btrfs/sysfs.c | |||
@@ -120,7 +120,7 @@ static ssize_t btrfs_feature_attr_store(struct kobject *kobj, | |||
120 | if (!fs_info) | 120 | if (!fs_info) |
121 | return -EPERM; | 121 | return -EPERM; |
122 | 122 | ||
123 | if (fs_info->sb->s_flags & MS_RDONLY) | 123 | if (sb_rdonly(fs_info->sb)) |
124 | return -EROFS; | 124 | return -EROFS; |
125 | 125 | ||
126 | ret = kstrtoul(skip_spaces(buf), 0, &val); | 126 | ret = kstrtoul(skip_spaces(buf), 0, &val); |
@@ -390,7 +390,7 @@ static ssize_t btrfs_label_store(struct kobject *kobj, | |||
390 | if (!fs_info) | 390 | if (!fs_info) |
391 | return -EPERM; | 391 | return -EPERM; |
392 | 392 | ||
393 | if (fs_info->sb->s_flags & MS_RDONLY) | 393 | if (sb_rdonly(fs_info->sb)) |
394 | return -EROFS; | 394 | return -EROFS; |
395 | 395 | ||
396 | /* | 396 | /* |
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index c188256a367c..0e8f16c305df 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c | |||
@@ -2324,7 +2324,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path | |||
2324 | int seeding_dev = 0; | 2324 | int seeding_dev = 0; |
2325 | int ret = 0; | 2325 | int ret = 0; |
2326 | 2326 | ||
2327 | if ((sb->s_flags & MS_RDONLY) && !fs_info->fs_devices->seeding) | 2327 | if (sb_rdonly(sb) && !fs_info->fs_devices->seeding) |
2328 | return -EROFS; | 2328 | return -EROFS; |
2329 | 2329 | ||
2330 | bdev = blkdev_get_by_path(device_path, FMODE_WRITE | FMODE_EXCL, | 2330 | bdev = blkdev_get_by_path(device_path, FMODE_WRITE | FMODE_EXCL, |
@@ -4053,7 +4053,7 @@ int btrfs_pause_balance(struct btrfs_fs_info *fs_info) | |||
4053 | 4053 | ||
4054 | int btrfs_cancel_balance(struct btrfs_fs_info *fs_info) | 4054 | int btrfs_cancel_balance(struct btrfs_fs_info *fs_info) |
4055 | { | 4055 | { |
4056 | if (fs_info->sb->s_flags & MS_RDONLY) | 4056 | if (sb_rdonly(fs_info->sb)) |
4057 | return -EROFS; | 4057 | return -EROFS; |
4058 | 4058 | ||
4059 | mutex_lock(&fs_info->balance_mutex); | 4059 | mutex_lock(&fs_info->balance_mutex); |