On 09/16/2015 11:43 AM, Qu Wenruo wrote:
As we do per-chunk missing device number check at read_one_chunk() time,
it's not needed to do global missing device number check.
Just remove it.
However the missing device count, what we have during the remount is not
fine grained per chunk.
-----------
btrfs_remount
::
if (fs_info->fs_devices->missing_devices >
fs_info->num_tolerated_disk_barrier_failures &&
!(*flags & MS_RDONLY ||
btrfs_test_opt(root, DEGRADED))) {
btrfs_warn(fs_info,
"too many missing devices, writeable
remount is not allowed");
ret = -EACCES;
goto restore;
}
---------
Thanks, Anand
Now btrfs can handle the following case:
# mkfs.btrfs -f -m raid1 -d single /dev/sdb /dev/sdc
Data chunk will be located in sdb, so we should be safe to wipe sdc
# wipefs -a /dev/sdc
# mount /dev/sdb /mnt/btrfs -o degraded
Signed-off-by: Qu Wenruo <quwen...@cn.fujitsu.com>
---
fs/btrfs/disk-io.c | 8 --------
1 file changed, 8 deletions(-)
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 0b658d0..ac640ea 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -2947,14 +2947,6 @@ retry_root_backup:
}
fs_info->num_tolerated_disk_barrier_failures =
btrfs_calc_num_tolerated_disk_barrier_failures(fs_info);
- if (fs_info->fs_devices->missing_devices >
- fs_info->num_tolerated_disk_barrier_failures &&
- !(sb->s_flags & MS_RDONLY)) {
- pr_warn("BTRFS: missing devices(%llu) exceeds the limit(%d),
writeable mount is not allowed\n",
- fs_info->fs_devices->missing_devices,
- fs_info->num_tolerated_disk_barrier_failures);
- goto fail_sysfs;
- }
fs_info->cleaner_kthread = kthread_run(cleaner_kthread, tree_root,
"btrfs-cleaner");
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html