summaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-09-14 21:54:01 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2017-09-14 21:54:01 -0400
commit0f0d12728e56c94d3289c6831243b6faeae8a19d (patch)
treebd52fd4ed6fba2a0d8bb95e7fc33f51ac299001d /fs/btrfs
parent581bfce969cbfc7ce43ee92273be9cb7c3fdfa61 (diff)
parente462ec50cb5fad19f6003a3d8087f4a0945dd2b1 (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.c2
-rw-r--r--fs/btrfs/disk-io.c12
-rw-r--r--fs/btrfs/extent_io.c4
-rw-r--r--fs/btrfs/inode.c2
-rw-r--r--fs/btrfs/ioctl.c2
-rw-r--r--fs/btrfs/root-tree.c2
-rw-r--r--fs/btrfs/super.c11
-rw-r--r--fs/btrfs/sysfs.c4
-rw-r--r--fs/btrfs/volumes.c4
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
1851restore: 1850restore:
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
4054int btrfs_cancel_balance(struct btrfs_fs_info *fs_info) 4054int 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);