From: David Sterba <dsterba@suse.cz>
To: Naohiro Aota <naohiro.aota@wdc.com>
Cc: linux-btrfs@vger.kernel.org, David Sterba <dsterba@suse.com>
Subject: Re: [PATCH v2 0/7] btrfs-progs: use direct-IO for zoned device
Date: Wed, 6 Oct 2021 23:02:47 +0200 [thread overview]
Message-ID: <20211006210247.GY9286@twin.jikos.cz> (raw)
In-Reply-To: <20211005062305.549871-1-naohiro.aota@wdc.com>
On Tue, Oct 05, 2021 at 03:22:58PM +0900, Naohiro Aota wrote:
> As discussed in the Zoned Storage page [1], the kernel page cache does not
> guarantee that cached dirty pages will be flushed to a block device in
> sequential sector order. Thus, we must use O_DIRECT for writing to a zoned
> device to ensure the write ordering.
>
> [1] https://zonedstorage.io/linux/overview/#zbd-support-restrictions
>
> As a writng buffer is embedded in some other struct (e.g., "char data[]" in
> struct extent_buffer), it is difficult to allocate the struct so that the
> writng buffer is aligned.
>
> This series introduces btrfs_{pread,pwrite} to wrap around pread/pwrite,
> which allocates an aligned bounce buffer, copy the buffer contents, and
> proceeds the IO. And, it now opens a zoned device with O_DIRECT.
>
> Since the allocation and copying are costly, it is better to do them only
> when necessary. But, it is cumbersome to call fcntl(F_GETFL) to determine
> the file is opened with O_DIRECT or not every time doing an IO.
>
> As zoned device forces to use zoned btrfs, I decided to use the zoned flag
> to determine if it is direct-IO or not. This can cause a false-positive (to
> use the bounce buffer when a file is *not* opened with O_DIRECT) in case of
> emulated zoned mode on a non-zoned device or a regular file. Considering
> the emulated zoned mode is mostly for debugging or testing, I believe this
> is acceptable.
>
> * Changes
> v2
> - Rebased on the latest "devel" branch
> - Add patch to fix segfault in several cases
> - drop ZONED flag from BTRFS_CONVERT_ALLOWED_FEATURES
>
> Patches 1 to 3 are preparation to fix some issues in the current code.
>
> Patches 4 and 5 wraps pread/pwrite with newly introduced function
> btrfs_pread/btrfs_pwrite.
>
> Patch 6 deals with the zoned flag while reading the initial trees.
>
> Patch 7 finally opens a zoned device with O_DIRECT.
>
> Naohiro Aota (7):
> btrfs-progs: mkfs: do not set zone size on non-zoned mode
> btrfs-progs: set eb->fs_info properly
> btrfs-progs: drop ZONED flag from BTRFS_CONVERT_ALLOWED_FEATURES
> btrfs-progs: introduce btrfs_pwrite wrapper for pwrite
> btrfs-progs: introduce btrfs_pread wrapper for pread
> btrfs-progs: temporally set zoned flag for initial tree reading
> btrfs-progs: use direct-io for zoned device
Is this still supposed to work?
$ ./mkfs.btrfs -f -O zoned -d single -m single img
...
ERROR: 16384 is not aligned to 1048576
ERROR: error during mkfs: Input/output error
On commit below this patchset it works and creates a filesystem with
zoned mode and zone size 256M.
next prev parent reply other threads:[~2021-10-06 21:03 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-05 6:22 [PATCH v2 0/7] btrfs-progs: use direct-IO for zoned device Naohiro Aota
2021-10-05 6:22 ` [PATCH v2 1/7] btrfs-progs: mkfs: do not set zone size on non-zoned mode Naohiro Aota
2021-10-05 6:23 ` [PATCH v2 2/7] btrfs-progs: set eb->fs_info properly Naohiro Aota
2021-10-05 6:23 ` [PATCH v2 3/7] btrfs-progs: drop ZONED flag from BTRFS_CONVERT_ALLOWED_FEATURES Naohiro Aota
2021-10-05 6:23 ` [PATCH v2 4/7] btrfs-progs: introduce btrfs_pwrite wrapper for pwrite Naohiro Aota
2021-10-06 14:10 ` David Sterba
2021-10-05 6:23 ` [PATCH v2 5/7] btrfs-progs: introduce btrfs_pread wrapper for pread Naohiro Aota
2021-10-05 6:23 ` [PATCH v2 6/7] btrfs-progs: temporally set zoned flag for initial tree reading Naohiro Aota
2021-10-05 6:23 ` [PATCH v2 7/7] btrfs-progs: use direct-io for zoned device Naohiro Aota
2021-10-06 14:28 ` [PATCH v2 0/7] btrfs-progs: use direct-IO " David Sterba
2021-10-06 21:02 ` David Sterba [this message]
2021-10-20 6:53 ` Naohiro Aota
2021-10-20 16:57 ` 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=20211006210247.GY9286@twin.jikos.cz \
--to=dsterba@suse.cz \
--cc=dsterba@suse.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=naohiro.aota@wdc.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