From: Boris Burkov <boris@bur.io>
To: Goffredo Baroncelli <kreijack@inwind.it>
Cc: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>,
Josef Bacik <josef@toxicpanda.com>,
linux-btrfs@vger.kernel.org, David Sterba <dsterba@suse.cz>,
Sinnamohideen Shafeeq <shafeeqs@panasas.com>,
Paul Jones <paul@pauljones.id.au>
Subject: Re: [RFC][V9][PATCH 0/6] btrfs: allocation_hint mode
Date: Wed, 5 Jan 2022 10:29:04 -0800 [thread overview]
Message-ID: <YdXjcCf6jvHDhmZq@zen> (raw)
In-Reply-To: <88a62f44-ae3f-f4b4-d2d7-6d82efd60933@inwind.it>
On Wed, Jan 05, 2022 at 07:16:04PM +0100, Goffredo Baroncelli wrote:
> On 05/01/2022 19.07, Zygo Blaxell wrote:
> > On Wed, Jan 05, 2022 at 10:16:08AM +0100, Goffredo Baroncelli wrote:
> > > Hi Boris,
> > >
> > >
> > >
> > > On 1/5/22 03:44, Boris Burkov wrote:
> > > [...]
> > > >
> > > > This is cool, thanks for building it!
> > > >
> > > > I'm playing with setting this up for a test I'm working on where I want
> > > > to send data to a dm-zero device. To that end, I applied this patchset
> > > > on top of misc-next and ran:
> > > >
> > > > $ mkfs.btrfs -f /dev/vg0/lv0 -dsingle -msingle
> > > > $ mount /dev/vg0/lv0 /mnt/lol
> > >
> > > You should mount the filesystem with
> > >
> > > $ mount -o allocation_hint=1 /dev/vg0/lv0 /mnt/lol
> > >
> > > In the previous iteration I missed the patch #6, which activates this option. You can drop patch #6 and avoid to pass this option.
> >
> > Can we drop the mount option from the series? It isn't needed.
> >
> > Or, if we must have it (and I am in no way conceding that we do),
> > at least make it default to enabled. Or turn the mount option into a
> > disable flag under the 'rescue=' option to make it clear this option is
> > not intended to be used in normal operation.
>
> Frankly speaking it was a my mistake to add this patch. It was in the
> queue, but in the last patches sets I dropped it. However in the last
> one I forgot to drop it manually so it reappeared :-)
>
> However I like your suggestion to add as 'rescue' option, where the
> default is "enabled".
A mount option adds a lot of testing burden:
enabling it where it was disabled
disabling it where it was enabled
does the above work on remount
does it always print what's expected in /proc/mounts
etc..
So I think it should have a strong justification for adding it, and the
xfstests will need to reflect the above.
Unless it's the best way to support some otherwise impossible recovery
for a realistic failure mode, I would personally suggest just skipping
it. However, I only skimmed through the discussion about recovery in the
older thread, FWIW.
>
> @Josef,
> do you started to play with this patch ? If not can I send an update
> where the main change is the renaming of the properties from
>
> PREFERRED_<X> to <X>_PREFERRED
>
> (e.g. PREFERRED_DATA to DATA_PREFERRED) which are more correct ?
>
> BR
> G.Baroncelli
> >
> > > Please give me a feedback if this resolve.
> > >
> > > BR
> > > G.Baroncelli
> > >
> > > > $ btrfs device add /dev/mapper/zero-data /mnt/lol
> > > > $ btrfs fi usage /mnt/lol
> > > > Overall:
> > > > Device size: 50.01TiB
> > > > Device allocated: 20.00MiB
> > > > Device unallocated: 50.01TiB
> > > > Device missing: 0.00B
> > > > Used: 128.00KiB
> > > > Free (estimated): 50.01TiB (min: 50.01TiB)
> > > > Free (statfs, df): 50.01TiB
> > > > Data ratio: 1.00
> > > > Metadata ratio: 1.00
> > > > Global reserve: 3.25MiB (used: 0.00B)
> > > > Multiple profiles: no
> > > >
> > > > Data,single: Size:8.00MiB, Used:0.00B (0.00%)
> > > > /dev/mapper/vg0-lv0 8.00MiB
> > > >
> > > > Metadata,single: Size:8.00MiB, Used:112.00KiB (1.37%)
> > > > /dev/mapper/vg0-lv0 8.00MiB
> > > >
> > > > System,single: Size:4.00MiB, Used:16.00KiB (0.39%)
> > > > /dev/mapper/vg0-lv0 4.00MiB
> > > >
> > > > Unallocated:
> > > > /dev/mapper/vg0-lv0 9.98GiB
> > > > /dev/mapper/zero-data 50.00TiB
> > > >
> > > > $ ./btrfs property set -t device /dev/mapper/zero-data allocation_hint DATA_ONLY
> > > > $ ./btrfs property set -t device /dev/vg0/lv0 allocation_hint METADATA_ONLY
> > > >
> > > > $ btrfs balance start --full-balance /mnt/lol
> > > > Done, had to relocate 3 out of 3 chunks
> > > >
> > > > $ btrfs fi usage /mnt/lol
> > > > Overall:
> > > > Device size: 50.01TiB
> > > > Device allocated: 2.03GiB
> > > > Device unallocated: 50.01TiB
> > > > Device missing: 0.00B
> > > > Used: 640.00KiB
> > > > Free (estimated): 50.01TiB (min: 50.01TiB)
> > > > Free (statfs, df): 50.01TiB
> > > > Data ratio: 1.00
> > > > Metadata ratio: 1.00
> > > > Global reserve: 3.25MiB (used: 0.00B)
> > > > Multiple profiles: no
> > > >
> > > > Data,single: Size:1.00GiB, Used:512.00KiB (0.05%)
> > > > /dev/mapper/zero-data 1.00GiB
> > > >
> > > > Metadata,single: Size:1.00GiB, Used:112.00KiB (0.01%)
> > > > /dev/mapper/zero-data 1.00GiB
> > > >
> > > > System,single: Size:32.00MiB, Used:16.00KiB (0.05%)
> > > > /dev/mapper/zero-data 32.00MiB
> > > >
> > > > Unallocated:
> > > > /dev/mapper/vg0-lv0 10.00GiB
> > > > /dev/mapper/zero-data 50.00TiB
> > > >
> > > >
> > > > I expected that I would have data on /dev/mapper/zero-data and metadata
> > > > on /dev/mapper/vg0-lv0, but it seems both of them were written to the zero
> > > > device. Attempting to actually use the file system eventually fails, since
> > > > the metadata is black-holed :)
> > > >
> > > > Did I make some mistake in how I used it, or is this a bug?
> > > >
> > > > Thanks,
> > > > Boris
> > > >
> > > > > BR
> > > > > G.Baroncelli
> > > > >
> > > > > Revision:
> > > > > V9:
> > > > > - rename dev_item->type to dev_item->flags
> > > > > - rename /sys/fs/btrfs/$UUID/devinfo/type -> allocation_hint
> > > > >
> > > > > V8:
> > > > > - drop the ioctl API, instead use a sysfs one
> > > > >
> > > > > V7:
> > > > > - make more room in the struct btrfs_ioctl_dev_properties up to 1K
> > > > > - leave in btrfs_tree.h only the costants
> > > > > - removed the mount option (sic)
> > > > > - correct an 'use before check' in the while loop (signaled
> > > > > by Zygo)
> > > > > - add a 2nd sort to be sure that the device_info array is in the
> > > > > expected order
> > > > >
> > > > > V6:
> > > > > - add further values to the hints: add the possibility to
> > > > > exclude a disk for a chunk type
> > > > >
> > > > >
> > > > > Goffredo Baroncelli (6):
> > > > > btrfs: add flags to give an hint to the chunk allocator
> > > > > btrfs: export the device allocation_hint property in sysfs
> > > > > btrfs: change the device allocation_hint property via sysfs
> > > > > btrfs: add allocation_hint mode
> > > > > btrfs: rename dev_item->type to dev_item->flags
> > > > > btrfs: add allocation_hint option.
> > > > >
> > > > > fs/btrfs/ctree.h | 18 +++++-
> > > > > fs/btrfs/disk-io.c | 4 +-
> > > > > fs/btrfs/super.c | 17 ++++++
> > > > > fs/btrfs/sysfs.c | 73 ++++++++++++++++++++++
> > > > > fs/btrfs/volumes.c | 105 ++++++++++++++++++++++++++++++--
> > > > > fs/btrfs/volumes.h | 7 ++-
> > > > > include/uapi/linux/btrfs_tree.h | 20 +++++-
> > > > > 7 files changed, 232 insertions(+), 12 deletions(-)
> > > > >
> > > > > --
> > > > > 2.34.1
> > > > >
> > >
> > >
> > > --
> > > gpg @keyserver.linux.it: Goffredo Baroncelli <kreijackATinwind.it>
> > > Key fingerprint BBF5 1610 0B64 DAC6 5F7D 17B2 0EDA 9B37 8B82 E0B5
>
>
> --
> gpg @keyserver.linux.it: Goffredo Baroncelli <kreijackATinwind.it>
> Key fingerprint BBF5 1610 0B64 DAC6 5F7D 17B2 0EDA 9B37 8B82 E0B5
next prev parent reply other threads:[~2022-01-05 18:29 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-17 18:47 [RFC][V9][PATCH 0/6] btrfs: allocation_hint mode Goffredo Baroncelli
2021-12-17 18:47 ` [PATCH 1/6] btrfs: add flags to give an hint to the chunk allocator Goffredo Baroncelli
2022-01-05 22:10 ` Boris Burkov
2022-01-06 8:53 ` Goffredo Baroncelli
2021-12-17 18:47 ` [PATCH 2/6] btrfs: export the device allocation_hint property in sysfs Goffredo Baroncelli
2022-01-05 21:57 ` Boris Burkov
2021-12-17 18:47 ` [PATCH 3/6] btrfs: change the device allocation_hint property via sysfs Goffredo Baroncelli
2021-12-17 18:47 ` [PATCH 4/6] btrfs: add allocation_hint mode Goffredo Baroncelli
2022-01-05 23:48 ` Boris Burkov
2022-01-06 10:09 ` Goffredo Baroncelli
2021-12-17 18:47 ` [PATCH 5/6] btrfs: rename dev_item->type to dev_item->flags Goffredo Baroncelli
2022-01-05 23:50 ` Boris Burkov
2021-12-17 18:47 ` [PATCH 6/6] btrfs: add allocation_hint option Goffredo Baroncelli
2022-01-05 2:44 ` [RFC][V9][PATCH 0/6] btrfs: allocation_hint mode Boris Burkov
2022-01-05 9:16 ` Goffredo Baroncelli
2022-01-05 17:55 ` Boris Burkov
2022-01-05 18:07 ` Zygo Blaxell
2022-01-05 18:16 ` Goffredo Baroncelli
2022-01-05 18:29 ` Boris Burkov [this message]
2022-01-05 22:21 ` Boris Burkov
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=YdXjcCf6jvHDhmZq@zen \
--to=boris@bur.io \
--cc=ce3g8jdj@umail.furryterror.org \
--cc=dsterba@suse.cz \
--cc=josef@toxicpanda.com \
--cc=kreijack@inwind.it \
--cc=linux-btrfs@vger.kernel.org \
--cc=paul@pauljones.id.au \
--cc=shafeeqs@panasas.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;
as well as URLs for NNTP newsgroup(s).