Linux Btrfs filesystem development
 help / color / mirror / Atom feed
From: Austin S Hemmelgarn <ahferroin7@gmail.com>
To: Zhao Lei <zhaolei@cn.fujitsu.com>, linux-btrfs@vger.kernel.org
Subject: Re: [PATCH v2] btrfs-progs: mkfs: Enable -d dup for single device
Date: Fri, 13 Nov 2015 10:26:22 -0500	[thread overview]
Message-ID: <5646011E.2080005@gmail.com> (raw)
In-Reply-To: <b2688434550d5dd940594e9a61ab0660f69cbb26.1447423853.git.zhaolei@cn.fujitsu.com>

[-- 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 --]

  reply	other threads:[~2015-11-13 15:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
2015-11-13 17:49 ` David Sterba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5646011E.2080005@gmail.com \
    --to=ahferroin7@gmail.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=zhaolei@cn.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox