* [PATCH v2] btrfs-progs: mkfs: Enable -d dup for single device
@ 2015-11-13 14:11 Zhao Lei
2015-11-13 15:26 ` Austin S Hemmelgarn
2015-11-13 17:49 ` David Sterba
0 siblings, 2 replies; 3+ messages in thread
From: Zhao Lei @ 2015-11-13 14:11 UTC (permalink / raw)
To: linux-btrfs; +Cc: Zhao Lei
Current code don't support dup profile in single device, except it
is in mixed mode, because following reason:
1: In some ssd with deduplication function, it have no effect.
2: For a physical device, it the entire disk broken, -d dup can
not help.
3: Half performance comparing with single profile.
4: We have a workaround: Create multi-partition in single device,
and btefs will treat them as multi device.
Instead of refuse -d dup, we have a better choise:
Give user a chance to select, and output a warning to notice above
problem.
Test:
1: Tested by xfstests
Run with modified xfstests, I add test items of -d dup in single
device into btrfs/* and common/rc, run tests of btrfs/*,
with all mount option, no regression diffed with v4.3.
2: Tested by btrfs-progs
Checked following commands in "-m dup -d dup" fs with memleck
checking, all passed:
mkfs.btrfs -f --data dup --metadata dup /dev/sda6
btrfs filesystem show /dev/sda6
btrfs filesystem label /dev/sda6 btrfs_label_test
btrfs filesystem label /dev/sda6
btrfs device scan --all-devices
btrfs device scan /dev/sda6
btrfs device scan /dev/sda6
btrfs device ready /dev/sda6
btrfs check /dev/sda6
btrfs check -s 1 /dev/sda6
btrfs check --repair /dev/sda6
btrfs check --init-csum-tree /dev/sda6
btrfs check --init-extent-tree /dev/sda6
btrfs check --check-data-csum /dev/sda6
btrfs check --qgroup-report /dev/sda6
btrfs rescue super-recover -y /dev/sda6
btrfs rescue zero-log /dev/sda6
btrfs restore -l /dev/sda6
btrfs restore /dev/sda6 /
btrfs restore -s /dev/sda6 /
btrfs restore -x /dev/sda6 /
btrfs restore -m /dev/sda6 /
btrfs restore -S /dev/sda6 /
btrfs restore -v /dev/sda6 /
btrfs restore -i /dev/sda6 /
btrfs restore -o /dev/sda6 /
btrfs restore -u0 /dev/sda6 /
btrfs restore -u1 /dev/sda6 /
btrfs restore -D /dev/sda6 /
btrfs property list /dev/sda6
btrfs property get /dev/sda6 label
btrfs property set /dev/sda6 label test
btrfs property set /dev/sda6 label btrfs_label_test
btrfs help
btrfs help --full
btrfs version
btrfsck /dev/sda6
btrfs-find-root /dev/sda6
btrfs-find-root -a /dev/sda6
btrfs-map-logical -l1 /dev/sda6
btrfs-map-logical -l1 -c1 /dev/sda6
btrfs-map-logical -l1 -o /tmp/btrfs-map-logic-out /dev/sda6
btrfs-map-logical -l1 -b1 /dev/sda6
btrfs-select-super -s 0 /dev/sda6
btrfs-select-super -s 1 /dev/sda6
btrfstune -S 1 /dev/sda6
btrfstune -f -S 0 /dev/sda6
btrfstune -r /dev/sda6
btrfstune -x /dev/sda6
btrfstune -n /dev/sda6
btrfstune -f -U 00000000-0000-0000-0000-000000000000 /dev/sda6
btrfstune -f -u /dev/sda6
btrfs-calc-size /dev/sda6
btrfs-calc-size -v /dev/sda6
btrfs-calc-size -b /dev/sda6
btrfs-debug-tree /dev/sda6
btrfs-debug-tree -e /dev/sda6
btrfs-debug-tree -d /dev/sda6
btrfs-debug-tree -r /dev/sda6
btrfs-debug-tree -R /dev/sda6
btrfs-debug-tree -u /dev/sda6
btrfs-debug-tree -b 0 /dev/sda6
btrfs-debug-tree -t 0 /dev/sda6
btrfs-debug-tree -t 2 /dev/sda6
btrfs-show-super /dev/sda6
btrfs-show-super -i 0 /dev/sda6
btrfs-show-super -i 1 /dev/sda6
btrfs-show-super -i 2 /dev/sda6
btrfs-show-super -a /dev/sda6
btrfs-show-super -f /dev/sda6
btrfs-show-super -F /dev/sda6
btrfs subvolume list /mnt/btrfs-progs-tests
btrfs subvolume create /mnt/btrfs-progs-tests/mysubvol
btrfs subvolume list /mnt/btrfs-progs-tests
btrfs subvolume get-default /mnt/btrfs-progs-tests
btrfs subvolume set-default 258 /mnt/btrfs-progs-tests
btrfs subvolume get-default /mnt/btrfs-progs-tests
btrfs subvolume set-default /mnt/btrfs-progs-tests
btrfs subvolume snapshot /mnt/btrfs-progs-tests/mysubvol /mnt/btrfs-progs-tests/mysubvol_snap
btrfs subvolume list /mnt/btrfs-progs-tests
btrfs subvolume find-new /mnt/btrfs-progs-tests 0
btrfs subvolume find-new /mnt/btrfs-progs-tests 0
btrfs subvolume find-new /mnt/btrfs-progs-tests/mysubvol 0
btrfs subvolume find-new /mnt/btrfs-progs-tests/mysubvol 0
btrfs subvolume show /mnt/btrfs-progs-tests
btrfs subvolume show /mnt/btrfs-progs-tests/mysubvol
btrfs subvolume show /mnt/btrfs-progs-tests/mysubvol_snap
btrfs subvolume sync /mnt/btrfs-progs-tests
btrfs subvolume delete /mnt/btrfs-progs-tests/mysubvol_snap
btrfs subvolume delete /mnt/btrfs-progs-tests/mysubvol
btrfs subvolume sync /mnt/btrfs-progs-tests
btrfs filesystem df /mnt/btrfs-progs-tests
btrfs filesystem show /mnt/btrfs-progs-tests
btrfs filesystem sync /mnt/btrfs-progs-tests
btrfs filesystem label /mnt/btrfs-progs-tests btrfs_label_test
btrfs filesystem label /mnt/btrfs-progs-tests
btrfs filesystem usage /mnt/btrfs-progs-tests
btrfs filesystem defragment -s 1024 -l 2048 /mnt/btrfs-progs-tests/filesystem_test_dir/test_dir_0/test_file_0
btrfs filesystem defragment /mnt/btrfs-progs-tests/filesystem_test_dir/test_dir_0/test_file_1
btrfs filesystem defragment -f /mnt/btrfs-progs-tests/filesystem_test_dir/test_dir_0/test_file_2
btrfs filesystem defragment -czlib /mnt/btrfs-progs-tests/filesystem_test_dir/test_dir_0/test_file_3
btrfs filesystem defragment -clzo /mnt/btrfs-progs-tests/filesystem_test_dir/test_dir_0/test_file_4
btrfs filesystem defragment /mnt/btrfs-progs-tests/filesystem_test_dir
btrfs filesystem defragment -r /mnt/btrfs-progs-tests/filesystem_test_dir
btrfs filesystem defragment /mnt/btrfs-progs-tests
btrfs filesystem resize 1:-10M /mnt/btrfs-progs-tests
btrfs filesystem resize 1:max /mnt/btrfs-progs-tests
btrfs balance start /mnt/btrfs-progs-tests
btrfs balance start -v /mnt/btrfs-progs-tests
btrfs balance start -f /mnt/btrfs-progs-tests
btrfs balance status -v /mnt/btrfs-progs-tests
btrfs balance pause /mnt/btrfs-progs-tests
btrfs balance status /mnt/btrfs-progs-tests
btrfs balance resume /mnt/btrfs-progs-tests
btrfs balance status -v /mnt/btrfs-progs-tests
btrfs balance cancel /mnt/btrfs-progs-tests
btrfs balance start -dprofiles=single /mnt/btrfs-progs-tests
btrfs balance start -dconvert=single /mnt/btrfs-progs-tests
btrfs balance start -ddevid=1 /mnt/btrfs-progs-tests
btrfs balance start -f -mprofiles=single /mnt/btrfs-progs-tests
btrfs balance start -f -mconvert=single /mnt/btrfs-progs-tests
btrfs balance start -f -mdevid=1 /mnt/btrfs-progs-tests
btrfs balance start -f -sprofiles=single /mnt/btrfs-progs-tests
btrfs balance start -f -sconvert=single /mnt/btrfs-progs-tests
btrfs balance start -f -sdevid=1 /mnt/btrfs-progs-tests
btrfs device add -f /dev/sda10 /mnt/btrfs-progs-tests
btrfs device del /dev/sda10 /mnt/btrfs-progs-tests
btrfs device stats /dev/sda6
btrfs device stats -z /dev/sda6
btrfs device stats /mnt/btrfs-progs-tests
btrfs device stats -z /mnt/btrfs-progs-tests
btrfs device usage /mnt/btrfs-progs-tests
btrfs scrub status /mnt/btrfs-progs-tests
btrfs scrub start -B /mnt/btrfs-progs-tests
btrfs scrub start -B -d /mnt/btrfs-progs-tests
btrfs scrub start -B -r /mnt/btrfs-progs-tests
btrfs scrub status /mnt/btrfs-progs-tests
btrfs scrub start /mnt/btrfs-progs-tests
btrfs scrub status /mnt/btrfs-progs-tests
btrfs scrub status /mnt/btrfs-progs-tests
btrfs scrub status -d /mnt/btrfs-progs-tests
btrfs scrub status -R /mnt/btrfs-progs-tests
btrfs scrub status /mnt/btrfs-progs-tests
btrfs scrub start /dev/sda6
btrfs scrub status /dev/sda6
btrfs scrub status /dev/sda6
btrfs scrub status -d /dev/sda6
btrfs scrub status -R /dev/sda6
btrfs scrub status /dev/sda6
btrfs subvolume snapshot -r /mnt/btrfs-progs-tests /mnt/btrfs-progs-tests/snap1
btrfs send -f /tmp/btrfs_snapshot_test /mnt/btrfs-progs-tests/snap1
btrfs send -e -f /tmp/btrfs_snapshot_test /mnt/btrfs-progs-tests/snap1
btrfs send --no-data -f /tmp/btrfs_snapshot_test /mnt/btrfs-progs-tests/snap1
btrfs quota enable /mnt/btrfs-progs-tests
btrfs quota rescan /mnt/btrfs-progs-tests
btrfs quota rescan -s /mnt/btrfs-progs-tests
btrfs quota rescan -w /mnt/btrfs-progs-tests
btrfs quota disable /mnt/btrfs-progs-tests
btrfs quota enable /mnt/btrfs-progs-tests
btrfs qgroup create 1/5 /mnt/btrfs-progs-tests
btrfs qgroup create 2/5 /mnt/btrfs-progs-tests
btrfs qgroup assign 1/5 2/5 /mnt/btrfs-progs-tests
btrfs qgroup limit 1G 1/5 /mnt/btrfs-progs-tests
btrfs qgroup show /mnt/btrfs-progs-tests
btrfs qgroup show -p -c -r -e -F -f /mnt/btrfs-progs-tests
btrfs qgroup remove 1/5 2/5 /mnt/btrfs-progs-tests
btrfs qgroup destroy 2/5 /mnt/btrfs-progs-tests
btrfs qgroup destroy 1/5 /mnt/btrfs-progs-tests
btrfs quota disable /mnt/btrfs-progs-tests
btrfs replace start -f -B /dev/sda6 /dev/sda10 /mnt/btrfs-progs-tests
btrfs replace status /mnt/btrfs-progs-tests
btrfs replace start -f -B /dev/sda10 /dev/sda6 /mnt/btrfs-progs-tests
btrfs-convert /dev/sda6
btrfs-convert -r /dev/sda6
btrfs-convert -d /dev/sda6
btrfs-convert -i /dev/sda6
btrfs-convert -n /dev/sda6
btrfs-convert -N 4096 /dev/sda6
btrfs-convert -l test /dev/sda6
btrfs-convert -L /dev/sda6
btrfs-convert --no-progress /dev/sda6
mkfs.btrfs -f /dev/sda6
btrfs-image /dev/sda6 /tmp/btrfs_image.img
btrfs-image -r /tmp/btrfs_image.img /dev/sda6
mkfs.btrfs -f /dev/sda6
btrfs-image -c 0 /dev/sda6 /tmp/btrfs_image.img
btrfs-image -r /tmp/btrfs_image.img /dev/sda6
mkfs.btrfs -f /dev/sda6
btrfs-image -c 9 /dev/sda6 /tmp/btrfs_image.img
btrfs-image -r /tmp/btrfs_image.img /dev/sda6
mkfs.btrfs -f /dev/sda6
btrfs-image -t 0 /dev/sda6 /tmp/btrfs_image.img
btrfs-image -r /tmp/btrfs_image.img /dev/sda6
mkfs.btrfs -f /dev/sda6
btrfs-image -t 1 /dev/sda6 /tmp/btrfs_image.img
btrfs-image -r /tmp/btrfs_image.img /dev/sda6
mkfs.btrfs -f /dev/sda6
btrfs-image -t 32 /dev/sda6 /tmp/btrfs_image.img
btrfs-image -r /tmp/btrfs_image.img /dev/sda6
mkfs.btrfs -f /dev/sda6
btrfs-image -w /dev/sda6 /tmp/btrfs_image.img
btrfs-image -r /tmp/btrfs_image.img /dev/sda6
mkfs.btrfs -f /dev/sda6
btrfs-image -w /dev/sda6 /tmp/btrfs_image.img
btrfs-image -r /tmp/btrfs_image.img /dev/sda6
btrfs-image -r -t 0 /tmp/btrfs_image.img /dev/sda6
btrfs-image -r -t 1 /tmp/btrfs_image.img /dev/sda6
btrfs-image -r -t 32 /tmp/btrfs_image.img /dev/sda6
btrfs-image -r -o /tmp/btrfs_image.img /dev/sda6
3: Manual check relation source by:
grep DUP *.c
Confirmed that all source are modified.
4: Use this raid type manually, do some operations in fs,
no error found in command and dmesg.
Changelog v1->v2:
Fix a bug in v1 which cause no dup chunk created, found by above
check command.
Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
---
mkfs.c | 4 ++--
utils.c | 10 ++++------
utils.h | 2 +-
3 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/mkfs.c b/mkfs.c
index 72ee290..bbe2ca2 100644
--- a/mkfs.c
+++ b/mkfs.c
@@ -271,7 +271,7 @@ static int create_raid_groups(struct btrfs_trans_handle *trans,
BUG_ON(ret);
}
- if (!mixed && num_devices > 1 && data_profile) {
+ if (!mixed && data_profile) {
ret = create_one_raid_group(trans, root,
BTRFS_BLOCK_GROUP_DATA |
data_profile, allocation);
@@ -1594,7 +1594,7 @@ int main(int ac, char **av)
}
}
ret = test_num_disk_vs_raid(metadata_profile, data_profile,
- dev_cnt, mixed);
+ dev_cnt, mixed, ssd);
if (ret)
exit(1);
diff --git a/utils.c b/utils.c
index 258730d..1e0df81 100644
--- a/utils.c
+++ b/utils.c
@@ -2428,7 +2428,7 @@ static int group_profile_devs_min(u64 flag)
}
int test_num_disk_vs_raid(u64 metadata_profile, u64 data_profile,
- u64 dev_cnt, int mixed)
+ u64 dev_cnt, int mixed, int ssd)
{
u64 allowed = 0;
@@ -2469,11 +2469,9 @@ int test_num_disk_vs_raid(u64 metadata_profile, u64 data_profile,
return 1;
}
- if (!mixed && (data_profile & BTRFS_BLOCK_GROUP_DUP)) {
- fprintf(stderr,
- "ERROR: DUP for data is allowed only in mixed mode\n");
- return 1;
- }
+ warning_on(!mixed && (data_profile & BTRFS_BLOCK_GROUP_DUP) && ssd,
+ "DUP have no effect if your SSD have deduplication function");
+
return 0;
}
diff --git a/utils.h b/utils.h
index 33b410c..8117ad4 100644
--- a/utils.h
+++ b/utils.h
@@ -167,7 +167,7 @@ int test_dev_for_mkfs(char *file, int force_overwrite);
int get_label_mounted(const char *mount_path, char *labelp);
int get_label_unmounted(const char *dev, char *label);
int test_num_disk_vs_raid(u64 metadata_profile, u64 data_profile,
- u64 dev_cnt, int mixed);
+ u64 dev_cnt, int mixed, int ssd);
int group_profile_max_safe_loss(u64 flags);
int is_vol_small(char *file);
int csum_tree_block(struct btrfs_root *root, struct extent_buffer *buf,
--
1.8.5.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH v2] btrfs-progs: mkfs: Enable -d dup for single device
2015-11-13 14:11 [PATCH v2] btrfs-progs: mkfs: Enable -d dup for single device Zhao Lei
@ 2015-11-13 15:26 ` Austin S Hemmelgarn
2015-11-13 17:49 ` David Sterba
1 sibling, 0 replies; 3+ messages in thread
From: Austin S Hemmelgarn @ 2015-11-13 15:26 UTC (permalink / raw)
To: Zhao Lei, linux-btrfs
[-- Attachment #1: Type: text/plain, Size: 11966 bytes --]
On 2015-11-13 09:11, Zhao Lei wrote:
> Current code don't support dup profile in single device, except it
> is in mixed mode, because following reason:
> 1: In some ssd with deduplication function, it have no effect.
> 2: For a physical device, it the entire disk broken, -d dup can
> not help.
> 3: Half performance comparing with single profile.
> 4: We have a workaround: Create multi-partition in single device,
> and btefs will treat them as multi device.
>
> Instead of refuse -d dup, we have a better choise:
> Give user a chance to select, and output a warning to notice above
> problem.
>
> Test:
> 1: Tested by xfstests
> Run with modified xfstests, I add test items of -d dup in single
> device into btrfs/* and common/rc, run tests of btrfs/*,
> with all mount option, no regression diffed with v4.3.
> 2: Tested by btrfs-progs
> Checked following commands in "-m dup -d dup" fs with memleck
> checking, all passed:
> mkfs.btrfs -f --data dup --metadata dup /dev/sda6
> btrfs filesystem show /dev/sda6
> btrfs filesystem label /dev/sda6 btrfs_label_test
> btrfs filesystem label /dev/sda6
> btrfs device scan --all-devices
> btrfs device scan /dev/sda6
> btrfs device scan /dev/sda6
> btrfs device ready /dev/sda6
> btrfs check /dev/sda6
> btrfs check -s 1 /dev/sda6
> btrfs check --repair /dev/sda6
> btrfs check --init-csum-tree /dev/sda6
> btrfs check --init-extent-tree /dev/sda6
> btrfs check --check-data-csum /dev/sda6
> btrfs check --qgroup-report /dev/sda6
> btrfs rescue super-recover -y /dev/sda6
> btrfs rescue zero-log /dev/sda6
> btrfs restore -l /dev/sda6
> btrfs restore /dev/sda6 /
> btrfs restore -s /dev/sda6 /
> btrfs restore -x /dev/sda6 /
> btrfs restore -m /dev/sda6 /
> btrfs restore -S /dev/sda6 /
> btrfs restore -v /dev/sda6 /
> btrfs restore -i /dev/sda6 /
> btrfs restore -o /dev/sda6 /
> btrfs restore -u0 /dev/sda6 /
> btrfs restore -u1 /dev/sda6 /
> btrfs restore -D /dev/sda6 /
> btrfs property list /dev/sda6
> btrfs property get /dev/sda6 label
> btrfs property set /dev/sda6 label test
> btrfs property set /dev/sda6 label btrfs_label_test
> btrfs help
> btrfs help --full
> btrfs version
> btrfsck /dev/sda6
> btrfs-find-root /dev/sda6
> btrfs-find-root -a /dev/sda6
> btrfs-map-logical -l1 /dev/sda6
> btrfs-map-logical -l1 -c1 /dev/sda6
> btrfs-map-logical -l1 -o /tmp/btrfs-map-logic-out /dev/sda6
> btrfs-map-logical -l1 -b1 /dev/sda6
> btrfs-select-super -s 0 /dev/sda6
> btrfs-select-super -s 1 /dev/sda6
> btrfstune -S 1 /dev/sda6
> btrfstune -f -S 0 /dev/sda6
> btrfstune -r /dev/sda6
> btrfstune -x /dev/sda6
> btrfstune -n /dev/sda6
> btrfstune -f -U 00000000-0000-0000-0000-000000000000 /dev/sda6
> btrfstune -f -u /dev/sda6
> btrfs-calc-size /dev/sda6
> btrfs-calc-size -v /dev/sda6
> btrfs-calc-size -b /dev/sda6
> btrfs-debug-tree /dev/sda6
> btrfs-debug-tree -e /dev/sda6
> btrfs-debug-tree -d /dev/sda6
> btrfs-debug-tree -r /dev/sda6
> btrfs-debug-tree -R /dev/sda6
> btrfs-debug-tree -u /dev/sda6
> btrfs-debug-tree -b 0 /dev/sda6
> btrfs-debug-tree -t 0 /dev/sda6
> btrfs-debug-tree -t 2 /dev/sda6
> btrfs-show-super /dev/sda6
> btrfs-show-super -i 0 /dev/sda6
> btrfs-show-super -i 1 /dev/sda6
> btrfs-show-super -i 2 /dev/sda6
> btrfs-show-super -a /dev/sda6
> btrfs-show-super -f /dev/sda6
> btrfs-show-super -F /dev/sda6
> btrfs subvolume list /mnt/btrfs-progs-tests
> btrfs subvolume create /mnt/btrfs-progs-tests/mysubvol
> btrfs subvolume list /mnt/btrfs-progs-tests
> btrfs subvolume get-default /mnt/btrfs-progs-tests
> btrfs subvolume set-default 258 /mnt/btrfs-progs-tests
> btrfs subvolume get-default /mnt/btrfs-progs-tests
> btrfs subvolume set-default /mnt/btrfs-progs-tests
> btrfs subvolume snapshot /mnt/btrfs-progs-tests/mysubvol /mnt/btrfs-progs-tests/mysubvol_snap
> btrfs subvolume list /mnt/btrfs-progs-tests
> btrfs subvolume find-new /mnt/btrfs-progs-tests 0
> btrfs subvolume find-new /mnt/btrfs-progs-tests 0
> btrfs subvolume find-new /mnt/btrfs-progs-tests/mysubvol 0
> btrfs subvolume find-new /mnt/btrfs-progs-tests/mysubvol 0
> btrfs subvolume show /mnt/btrfs-progs-tests
> btrfs subvolume show /mnt/btrfs-progs-tests/mysubvol
> btrfs subvolume show /mnt/btrfs-progs-tests/mysubvol_snap
> btrfs subvolume sync /mnt/btrfs-progs-tests
> btrfs subvolume delete /mnt/btrfs-progs-tests/mysubvol_snap
> btrfs subvolume delete /mnt/btrfs-progs-tests/mysubvol
> btrfs subvolume sync /mnt/btrfs-progs-tests
> btrfs filesystem df /mnt/btrfs-progs-tests
> btrfs filesystem show /mnt/btrfs-progs-tests
> btrfs filesystem sync /mnt/btrfs-progs-tests
> btrfs filesystem label /mnt/btrfs-progs-tests btrfs_label_test
> btrfs filesystem label /mnt/btrfs-progs-tests
> btrfs filesystem usage /mnt/btrfs-progs-tests
> btrfs filesystem defragment -s 1024 -l 2048 /mnt/btrfs-progs-tests/filesystem_test_dir/test_dir_0/test_file_0
> btrfs filesystem defragment /mnt/btrfs-progs-tests/filesystem_test_dir/test_dir_0/test_file_1
> btrfs filesystem defragment -f /mnt/btrfs-progs-tests/filesystem_test_dir/test_dir_0/test_file_2
> btrfs filesystem defragment -czlib /mnt/btrfs-progs-tests/filesystem_test_dir/test_dir_0/test_file_3
> btrfs filesystem defragment -clzo /mnt/btrfs-progs-tests/filesystem_test_dir/test_dir_0/test_file_4
> btrfs filesystem defragment /mnt/btrfs-progs-tests/filesystem_test_dir
> btrfs filesystem defragment -r /mnt/btrfs-progs-tests/filesystem_test_dir
> btrfs filesystem defragment /mnt/btrfs-progs-tests
> btrfs filesystem resize 1:-10M /mnt/btrfs-progs-tests
> btrfs filesystem resize 1:max /mnt/btrfs-progs-tests
> btrfs balance start /mnt/btrfs-progs-tests
> btrfs balance start -v /mnt/btrfs-progs-tests
> btrfs balance start -f /mnt/btrfs-progs-tests
> btrfs balance status -v /mnt/btrfs-progs-tests
> btrfs balance pause /mnt/btrfs-progs-tests
> btrfs balance status /mnt/btrfs-progs-tests
> btrfs balance resume /mnt/btrfs-progs-tests
> btrfs balance status -v /mnt/btrfs-progs-tests
> btrfs balance cancel /mnt/btrfs-progs-tests
> btrfs balance start -dprofiles=single /mnt/btrfs-progs-tests
> btrfs balance start -dconvert=single /mnt/btrfs-progs-tests
> btrfs balance start -ddevid=1 /mnt/btrfs-progs-tests
> btrfs balance start -f -mprofiles=single /mnt/btrfs-progs-tests
> btrfs balance start -f -mconvert=single /mnt/btrfs-progs-tests
> btrfs balance start -f -mdevid=1 /mnt/btrfs-progs-tests
> btrfs balance start -f -sprofiles=single /mnt/btrfs-progs-tests
> btrfs balance start -f -sconvert=single /mnt/btrfs-progs-tests
> btrfs balance start -f -sdevid=1 /mnt/btrfs-progs-tests
> btrfs device add -f /dev/sda10 /mnt/btrfs-progs-tests
> btrfs device del /dev/sda10 /mnt/btrfs-progs-tests
> btrfs device stats /dev/sda6
> btrfs device stats -z /dev/sda6
> btrfs device stats /mnt/btrfs-progs-tests
> btrfs device stats -z /mnt/btrfs-progs-tests
> btrfs device usage /mnt/btrfs-progs-tests
> btrfs scrub status /mnt/btrfs-progs-tests
> btrfs scrub start -B /mnt/btrfs-progs-tests
> btrfs scrub start -B -d /mnt/btrfs-progs-tests
> btrfs scrub start -B -r /mnt/btrfs-progs-tests
> btrfs scrub status /mnt/btrfs-progs-tests
> btrfs scrub start /mnt/btrfs-progs-tests
> btrfs scrub status /mnt/btrfs-progs-tests
> btrfs scrub status /mnt/btrfs-progs-tests
> btrfs scrub status -d /mnt/btrfs-progs-tests
> btrfs scrub status -R /mnt/btrfs-progs-tests
> btrfs scrub status /mnt/btrfs-progs-tests
> btrfs scrub start /dev/sda6
> btrfs scrub status /dev/sda6
> btrfs scrub status /dev/sda6
> btrfs scrub status -d /dev/sda6
> btrfs scrub status -R /dev/sda6
> btrfs scrub status /dev/sda6
> btrfs subvolume snapshot -r /mnt/btrfs-progs-tests /mnt/btrfs-progs-tests/snap1
> btrfs send -f /tmp/btrfs_snapshot_test /mnt/btrfs-progs-tests/snap1
> btrfs send -e -f /tmp/btrfs_snapshot_test /mnt/btrfs-progs-tests/snap1
> btrfs send --no-data -f /tmp/btrfs_snapshot_test /mnt/btrfs-progs-tests/snap1
> btrfs quota enable /mnt/btrfs-progs-tests
> btrfs quota rescan /mnt/btrfs-progs-tests
> btrfs quota rescan -s /mnt/btrfs-progs-tests
> btrfs quota rescan -w /mnt/btrfs-progs-tests
> btrfs quota disable /mnt/btrfs-progs-tests
> btrfs quota enable /mnt/btrfs-progs-tests
> btrfs qgroup create 1/5 /mnt/btrfs-progs-tests
> btrfs qgroup create 2/5 /mnt/btrfs-progs-tests
> btrfs qgroup assign 1/5 2/5 /mnt/btrfs-progs-tests
> btrfs qgroup limit 1G 1/5 /mnt/btrfs-progs-tests
> btrfs qgroup show /mnt/btrfs-progs-tests
> btrfs qgroup show -p -c -r -e -F -f /mnt/btrfs-progs-tests
> btrfs qgroup remove 1/5 2/5 /mnt/btrfs-progs-tests
> btrfs qgroup destroy 2/5 /mnt/btrfs-progs-tests
> btrfs qgroup destroy 1/5 /mnt/btrfs-progs-tests
> btrfs quota disable /mnt/btrfs-progs-tests
> btrfs replace start -f -B /dev/sda6 /dev/sda10 /mnt/btrfs-progs-tests
> btrfs replace status /mnt/btrfs-progs-tests
> btrfs replace start -f -B /dev/sda10 /dev/sda6 /mnt/btrfs-progs-tests
> btrfs-convert /dev/sda6
> btrfs-convert -r /dev/sda6
> btrfs-convert -d /dev/sda6
> btrfs-convert -i /dev/sda6
> btrfs-convert -n /dev/sda6
> btrfs-convert -N 4096 /dev/sda6
> btrfs-convert -l test /dev/sda6
> btrfs-convert -L /dev/sda6
> btrfs-convert --no-progress /dev/sda6
> mkfs.btrfs -f /dev/sda6
> btrfs-image /dev/sda6 /tmp/btrfs_image.img
> btrfs-image -r /tmp/btrfs_image.img /dev/sda6
> mkfs.btrfs -f /dev/sda6
> btrfs-image -c 0 /dev/sda6 /tmp/btrfs_image.img
> btrfs-image -r /tmp/btrfs_image.img /dev/sda6
> mkfs.btrfs -f /dev/sda6
> btrfs-image -c 9 /dev/sda6 /tmp/btrfs_image.img
> btrfs-image -r /tmp/btrfs_image.img /dev/sda6
> mkfs.btrfs -f /dev/sda6
> btrfs-image -t 0 /dev/sda6 /tmp/btrfs_image.img
> btrfs-image -r /tmp/btrfs_image.img /dev/sda6
> mkfs.btrfs -f /dev/sda6
> btrfs-image -t 1 /dev/sda6 /tmp/btrfs_image.img
> btrfs-image -r /tmp/btrfs_image.img /dev/sda6
> mkfs.btrfs -f /dev/sda6
> btrfs-image -t 32 /dev/sda6 /tmp/btrfs_image.img
> btrfs-image -r /tmp/btrfs_image.img /dev/sda6
> mkfs.btrfs -f /dev/sda6
> btrfs-image -w /dev/sda6 /tmp/btrfs_image.img
> btrfs-image -r /tmp/btrfs_image.img /dev/sda6
> mkfs.btrfs -f /dev/sda6
> btrfs-image -w /dev/sda6 /tmp/btrfs_image.img
> btrfs-image -r /tmp/btrfs_image.img /dev/sda6
> btrfs-image -r -t 0 /tmp/btrfs_image.img /dev/sda6
> btrfs-image -r -t 1 /tmp/btrfs_image.img /dev/sda6
> btrfs-image -r -t 32 /tmp/btrfs_image.img /dev/sda6
> btrfs-image -r -o /tmp/btrfs_image.img /dev/sda6
> 3: Manual check relation source by:
> grep DUP *.c
> Confirmed that all source are modified.
> 4: Use this raid type manually, do some operations in fs,
> no error found in command and dmesg.
>
> Changelog v1->v2:
> Fix a bug in v1 which cause no dup chunk created, found by above
> check command.
>
> Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
I'm going to put this in the queue of things I'm running tests for this
weekend, expect something back from me on Monday about it (based on the
patch itself though, I expect that I won't find any issues on the
userspace side of things).
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 3019 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] btrfs-progs: mkfs: Enable -d dup for single device
2015-11-13 14:11 [PATCH v2] btrfs-progs: mkfs: Enable -d dup for single device Zhao Lei
2015-11-13 15:26 ` Austin S Hemmelgarn
@ 2015-11-13 17:49 ` David Sterba
1 sibling, 0 replies; 3+ messages in thread
From: David Sterba @ 2015-11-13 17:49 UTC (permalink / raw)
To: Zhao Lei; +Cc: linux-btrfs
On Fri, Nov 13, 2015 at 10:11:37PM +0800, Zhao Lei wrote:
> Current code don't support dup profile in single device, except it
> is in mixed mode, because following reason:
> 1: In some ssd with deduplication function, it have no effect.
> 2: For a physical device, it the entire disk broken, -d dup can
> not help.
> 3: Half performance comparing with single profile.
> 4: We have a workaround: Create multi-partition in single device,
> and btefs will treat them as multi device.
>
> Instead of refuse -d dup, we have a better choise:
> Give user a chance to select, and output a warning to notice above
> problem.
>
> Test:
[...]
Thanks.
> + warning_on(!mixed && (data_profile & BTRFS_BLOCK_GROUP_DUP) && ssd,
> + "DUP have no effect if your SSD have deduplication function");
This seems too specific, I suggest to say something generic that
duplicate does not necessrily be stored twice and point to the manual
page where we can be detailed as needed.
Patch will be added to devel branch soon.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-11-13 17:51 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-13 14:11 [PATCH v2] btrfs-progs: mkfs: Enable -d dup for single device Zhao Lei
2015-11-13 15:26 ` Austin S Hemmelgarn
2015-11-13 17:49 ` David Sterba
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.