linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Naohiro Aota <naohiro.aota@wdc.com>
To: Anand Jain <anand.jain@oracle.com>
Cc: linux-btrfs@vger.kernel.org, dsterba@suse.com, hare@suse.com,
	linux-fsdevel@vger.kernel.org, Jens Axboe <axboe@kernel.dk>,
	Christoph Hellwig <hch@infradead.org>,
	"Darrick J. Wong" <darrick.wong@oracle.com>
Subject: Re: [PATCH v10 00/41] btrfs: zoned block device support
Date: Wed, 11 Nov 2020 14:07:32 +0900	[thread overview]
Message-ID: <20201111050732.omf2vwtlfnj4vf23@naota.dhcp.fujisawa.hgst.com> (raw)
In-Reply-To: <1a58611e-3116-57e1-3462-bb1888416d67@oracle.com>

On Tue, Nov 10, 2020 at 10:00:14PM +0800, Anand Jain wrote:
>On 10/11/20 7:26 pm, Naohiro Aota wrote:
>>This series adds zoned block device support to btrfs.
>>
>>This series is also available on github.
>>Kernel   https://github.com/naota/linux/tree/btrfs-zoned-v10
>
> This branch is not reachable. Should it be
>
>    https://github.com/naota/linux/tree/btrfs-zoned-for-v10 ?
>
> But the commits in this branch are at a pre-fixups stage.

Sorry, I forgot to push the one. I have pushed the fixuped version to
"btrfs-zoned-v10" branch. Thanks

>
>Thanks, Anand
>
>
>>Userland https://github.com/naota/btrfs-progs/tree/btrfs-zoned
>>xfstests https://github.com/naota/fstests/tree/btrfs-zoned
>
>>
>>Userland tool depends on patched util-linux (libblkid and wipefs) to handle
>>log-structured superblock. To ease the testing, pre-compiled static linked
>>userland tools are available here:
>>https://wdc.app.box.com/s/fnhqsb3otrvgkstq66o6bvdw6tk525kp
>>
>>This v10 still leaves the following issues left for later fix. But, the
>>first part of the series should be good shape to be merged.
>>- Bio submission path & splitting an ordered extent
>>- Redirtying freed tree blocks
>>   - Switch to keeping it dirty
>>     - Not working correctly for now
>>- Dedicated tree-log block group
>>   - We need tree-log for zoned device
>>     - Dbench (32 clients) is 85% slower with "-o notreelog"
>>   - Need to separate tree-log block group from other metadata space_info
>>- Relocation
>>   - Use normal write command for relocation
>>   - Relocated device extents must be reset
>>     - It should be discarded on regular btrfs too though
>>
>>Changes from v9:
>>   - Extract iomap_dio_bio_opflags() to set the proper bi_opf flag
>>   - write pointer emulation
>>     - Rewrite using btrfs_previous_extent_item()
>>     - Convert ASSERT() to runtime check
>>   - Exclude regular superblock positions
>>   - Fix an error on writing to conventional zones
>>   - Take the transaction lock in mark_block_group_to_copy()
>>   - Rename 'hmzoned_devices' to 'zoned_devices' in btrfs_check_zoned_mode()
>>   - Add do_discard_extent() helper
>>   - Move zoned check into fetch_cluster_info()
>>   - Drop setting bdev to bio in btrfs_bio_add_page() (will fix later once
>>     we support multiple devices)
>>   - Subtract bytes_zone_unusable properly when removing a block group
>>   - Add "struct block_device *bdev" directly to btrfs_rmap_block()
>>   - Rename btrfs_zone_align to btrfs_align_offset_to_zone
>>   - Add comment to use pr_info in place of btrfs_info
>>   - Add comment for superblock log zones
>>   - Fix coding style
>>   - Fix typos
>>
>>btrfs-progs and xfstests series will follow.
>>
>>This version of ZONED btrfs switched from normal write command to zone
>>append write command. You do not need to specify LBA (at the write pointer)
>>to write for zone append write command. Instead, you only select a zone to
>>write with its start LBA. Then the device (NVMe ZNS), or the emulation of
>>zone append command in the sd driver in the case of SAS or SATA HDDs,
>>automatically writes the data at the write pointer position and return the
>>written LBA as a command reply.
>>
>>The benefit of using the zone append write command is that write command
>>issuing order does not matter. So, we can eliminate block group lock and
>>utilize asynchronous checksum, which can reorder the IOs.
>>
>>Eliminating the lock improves performance. In particular, on a workload
>>with massive competing to the same zone [1], we observed 36% performance
>>improvement compared to normal write.
>>
>>[1] Fio running 16 jobs with 4KB random writes for 5 minutes
>>
>>However, there are some limitations. We cannot use the non-SINGLE profile.
>>Supporting non-SINGLE profile with zone append writing is not trivial. For
>>example, in the DUP profile, we send a zone append writing IO to two zones
>>on a device. The device reply with written LBAs for the IOs. If the offsets
>>of the returned addresses from the beginning of the zone are different,
>>then it results in different logical addresses.
>>
>>For the same reason, we cannot issue multiple IOs for one ordered extent.
>>Thus, the size of an ordered extent is limited under max_zone_append_size.
>>This limitation will cause fragmentation and increased usage of metadata.
>>In the future, we can add optimization to merge ordered extents after
>>end_bio.
>>
>>* Patch series description
>>
>>A zoned block device consists of a number of zones. Zones are either
>>conventional and accepting random writes or sequential and requiring
>>that writes be issued in LBA order from each zone write pointer
>>position. This patch series ensures that the sequential write
>>constraint of sequential zones is respected while fundamentally not
>>changing BtrFS block and I/O management for block stored in
>>conventional zones.
>>
>>To achieve this, the default chunk size of btrfs is changed on zoned
>>block devices so that chunks are always aligned to a zone. Allocation
>>of blocks within a chunk is changed so that the allocation is always
>>sequential from the beginning of the chunks. To do so, an allocation
>>pointer is added to block groups and used as the allocation hint.  The
>>allocation changes also ensure that blocks freed below the allocation
>>pointer are ignored, resulting in sequential block allocation
>>regardless of the chunk usage.
>>
>>The zone of a chunk is reset to allow reuse of the zone only when the
>>block group is being freed, that is, when all the chunks of the block
>>group are unused.
>>
>>For btrfs volumes composed of multiple zoned disks, a restriction is
>>added to ensure that all disks have the same zone size. This
>>restriction matches the existing constraint that all chunks in a block
>>group must have the same size.
>>
>>* Enabling tree-log
>>
>>The tree-log feature does not work on ZONED mode as is. Blocks for a
>>tree-log tree are allocated mixed with other metadata blocks, and btrfs
>>writes and syncs the tree-log blocks to devices at the time of fsync(),
>>which is different timing than a global transaction commit. As a result,
>>both writing tree-log blocks and writing other metadata blocks become
>>non-sequential writes which ZONED mode must avoid.
>>
>>This series introduces a dedicated block group for tree-log blocks to
>>create two metadata writing streams, one for tree-log blocks and the
>>other for metadata blocks. As a result, each write stream can now be
>>written to devices separately and sequentially.
>>
>>* Log-structured superblock
>>
>>Superblock (and its copies) is the only data structure in btrfs which
>>has a fixed location on a device. Since we cannot overwrite in a
>>sequential write required zone, we cannot place superblock in the
>>zone.
>>
>>This series implements superblock log writing. It uses two zones as a
>>circular buffer to write updated superblocks. Once the first zone is filled
>>up, start writing into the second zone. The first zone will be reset once
>>both zones are filled. We can determine the postion of the latest
>>superblock by reading the write pointer information from a device.
>>
>>* Patch series organization
>>
>>Patches 1 and 2 are preparing patches for block and iomap layer.
>>
>>Patch 3 introduces the ZONED incompatible feature flag to indicate that the
>>btrfs volume was formatted for use on zoned block devices.
>>
>>Patches 4 to 6 implement functions to gather information on the zones of
>>the device (zones type, write pointer position, and max_zone_append_size).
>>
>>Patches 7 to 10 disable features which are not compatible with the
>>sequential write constraints of zoned block devices. These includes
>>space_cache, NODATACOW, fallocate, and MIXED_BG.
>>
>>Patch 11 implements the log-structured superblock writing.
>>
>>Patches 12 and 13 tweak the device extent allocation for ZONED mode and add
>>verification to check if a device extent is properly aligned to zones.
>>
>>Patches 14 to 17 implements sequential block allocator for ZONED mode.
>>
>>Patch 18 implement a zone reset for unused block groups.
>>
>>Patches 19 to 30 implement the writing path for several types of IO
>>(non-compressed data, direct IO, and metadata). These include re-dirtying
>>once-freed metadata blocks to prevent write holes.
>>
>>Patches 31 to 40 tweak some btrfs features work with ZONED mode. These
>>include device-replace, relocation, repairing IO error, and tree-log.
>>
>>Finally, patch 41 adds the ZONED feature to the list of supported features.
>>
>>* Patch testing note
>>
>>** Zone-aware util-linux
>>
>>Since the log-structured superblock feature changed the location of
>>superblock magic, the current util-linux (libblkid) cannot detect ZONED
>>btrfs anymore. You need to apply a to-be posted patch to util-linux to make
>>it "zone aware".
>>
>>** Testing device
>>
>>You need devices with zone append writing command support to run ZONED
>>btrfs.
>>
>>Other than real devices, null_blk supports zone append write command. You
>>can use memory backed null_blk to run the test on it. Following script
>>creates 12800 MB /dev/nullb0.
>>
>>     sysfs=/sys/kernel/config/nullb/nullb0
>>     size=12800 # MB
>>     # drop nullb0
>>     if [[ -d $sysfs ]]; then
>>             echo 0 > "${sysfs}"/power
>>             rmdir $sysfs
>>     fi
>>     lsmod | grep -q null_blk && rmmod null_blk
>>     modprobe null_blk nr_devices=0
>>     mkdir "${sysfs}"
>>     echo "${size}" > "${sysfs}"/size
>>     echo 1 > "${sysfs}"/zoned
>>     echo 0 > "${sysfs}"/zone_nr_conv
>>     echo 1 > "${sysfs}"/memory_backed
>>     echo 1 > "${sysfs}"/power
>>     udevadm settle
>>
>>Zoned SCSI devices such as SMR HDDs or scsi_debug also support the zone
>>append command as an emulated command within the SCSI sd driver. This
>>emulation is completely transparent to the user and provides the same
>>semantic as a NVMe ZNS native drive support.
>>
>>Also, there is a qemu patch available to enable NVMe ZNS device.
>>
>>** xfstests
>>
>>We ran xfstests on ZONED btrfs, and, if we omit some cases that are known
>>to fail currently, all test cases pass.
>>
>>Cases that can be ignored:
>>1) failing also with the regular btrfs on regular devices,
>>2) trying to test fallocate feature without testing with
>>    "_require_xfs_io_command "falloc"",
>>3) trying to test incompatible features for ZONED btrfs (e.g. RAID5/6)
>>4) trying to use incompatible setup for ZONED btrfs (e.g. dm-linear not
>>    aligned to zone boundary, swap)
>>5) trying to create a file system with too small size, (we require at least
>>    9 zones to initiate a ZONED btrfs)
>>6) dropping original MKFS_OPTIONS ("-O zoned"), so it cannot create ZONED
>>    btrfs (btrfs/003)
>>7) having ENOSPC which incurred by larger metadata block group size
>>
>>I will send a patch series for xfstests to handle these cases (2-6)
>>properly.
>>
>>Patched xfstests is available here:
>>
>>https://github.com/naota/fstests/tree/btrfs-zoned
>>
>>Also, you need to apply the following patch if you run xfstests with
>>tcmu devices. xfstests btrfs/003 failed to "_devmgt_add" after
>>"_devmgt_remove" without this patch.
>>
>>https://marc.info/?l=linux-scsi&m=156498625421698&w=2
>>
>>v9 https://lore.kernel.org/linux-btrfs/cover.1604065156.git.naohiro.aota@wdc.com/
>>v8 https://lore.kernel.org/linux-btrfs/cover.1601572459.git.naohiro.aota@wdc.com/
>>v7 https://lore.kernel.org/linux-btrfs/20200911123259.3782926-1-naohiro.aota@wdc.com/
>>v6 https://lore.kernel.org/linux-btrfs/20191213040915.3502922-1-naohiro.aota@wdc.com/
>>v5 https://lore.kernel.org/linux-btrfs/20191204082513.857320-1-naohiro.aota@wdc.com/
>>v4 https://lwn.net/Articles/797061/
>>v3 https://lore.kernel.org/linux-btrfs/20190808093038.4163421-1-naohiro.aota@wdc.com/
>>v2 https://lore.kernel.org/linux-btrfs/20190607131025.31996-1-naohiro.aota@wdc.com/
>>v1 https://lore.kernel.org/linux-btrfs/20180809180450.5091-1-naota@elisp.net/
>>
>>Changelog
>>v9
>>  - Direct-IO path now follow several hardware restrictions (other than
>>    max_zone_append_size) by using ZONE_APPEND support of iomap
>>  - introduces union of fs_info->zone_size and fs_info->zoned [Johannes]
>>    - and use btrfs_is_zoned(fs_info) in place of btrfs_fs_incompat(fs_info, ZONED)
>>  - print if zoned is enabled or not when printing module info [Johannes]
>>  - drop patch of disabling inode_cache on ZONED
>>  - moved for_teelog flag to a proper location [Johannes]
>>  - Code style fixes [Johannes]
>>  - Add comment about adding physical layer things to ordered extent
>>    structure
>>  - Pass file_offset explicitly to extract_ordered_extent() instead of
>>    determining it from bio
>>  - Bug fixes
>>    - write out fsync region so that the logical address of ordered extents
>>      and checksums are properly finalized
>>    - free zone_info at umount time
>>    - fix superblock log handling when entering zones[1] in the first time
>>    - fixes double free of log-tree roots [Johannes]
>>    - Drop erroneous ASSERT in do_allocation_zoned()
>>v8
>>  - Use bio_add_hw_page() to build up bio to honor hardware restrictions
>>    - add bio_add_zone_append_page() as a wrapper of the function
>>  - Split file extent on submitting bio
>>    - If bio_add_zone_append_page() fails, split the file extent and send
>>      out bio
>>    - so, we can ensure one bio == one file extent
>>  - Fix build bot issues
>>  - Rebased on misc-next
>>v7:
>>  - Use zone append write command instead of normal write command
>>    - Bio issuing order does not matter
>>    - No need to use lock anymore
>>    - Can use asynchronous checksum
>>  - Removed RAID support for now
>>  - Rename HMZONED to ZONED
>>  - Split some patches
>>  - Rebased on kdave/for-5.9-rc3 + iomap direct IO
>>v6:
>>  - Use bitmap helpers (Johannes)
>>  - Code cleanup (Johannes)
>>  - Rebased on kdave/for-5.5
>>  - Enable the tree-log feature.
>>  - Treat conventional zones as sequential zones, so we can now allow
>>    mixed allocation of conventional zone and sequential write required
>>    zone to construct a block group.
>>  - Implement log-structured superblock
>>    - No need for one conventional zone at the beginning of a device.
>>  - Fix deadlock of direct IO writing
>>  - Fix building with !CONFIG_BLK_DEV_ZONED (Johannes)
>>  - Fix leak of zone_info (Johannes)
>>v5:
>>  - Rebased on kdave/for-5.5
>>  - Enable the tree-log feature.
>>  - Treat conventional zones as sequential zones, so we can now allow
>>    mixed allocation of conventional zone and sequential write required
>>    zone to construct a block group.
>>  - Implement log-structured superblock
>>    - No need for one conventional zone at the beginning of a device.
>>  - Fix deadlock of direct IO writing
>>  - Fix building with !CONFIG_BLK_DEV_ZONED (Johannes)
>>  - Fix leak of zone_info (Johannes)
>>v4:
>>  - Move memory allcation of zone informattion out of
>>    btrfs_get_dev_zones() (Anand)
>>  - Add disabled features table in commit log (Anand)
>>  - Ensure "max_chunk_size >= devs_min * data_stripes * zone_size"
>>v3:
>>  - Serialize allocation and submit_bio instead of bio buffering in
>>    btrfs_map_bio().
>>  -- Disable async checksum/submit in HMZONED mode
>>  - Introduce helper functions and hmzoned.c/h (Josef, David)
>>  - Add support for repairing IO failure
>>  - Add support for NOCOW direct IO write (Josef)
>>  - Disable preallocation entirely
>>  -- Disable INODE_MAP_CACHE
>>  -- relocation is reworked not to rely on preallocation in HMZONED mode
>>  - Disable NODATACOW
>>  -Disable MIXED_BG
>>  - Device extent that cover super block position is banned (David)
>>v2:
>>  - Add support for dev-replace
>>  -- To support dev-replace, moved submit_buffer one layer up. It now
>>     handles bio instead of btrfs_bio.
>>  -- Mark unmirrored Block Group readonly only when there are writable
>>     mirrored BGs. Necessary to handle degraded RAID.
>>  - Expire worker use vanilla delayed_work instead of btrfs's async-thread
>>  - Device extent allocator now ensure that region is on the same zone type.
>>  - Add delayed allocation shrinking.
>>  - Rename btrfs_drop_dev_zonetypes() to btrfs_destroy_dev_zonetypes
>>  - Fix
>>  -- Use SECTOR_SHIFT (Nikolay)
>>  -- Use btrfs_err (Nikolay)
>>
>>
>>Johannes Thumshirn (1):
>>   block: add bio_add_zone_append_page
>>
>>Naohiro Aota (40):
>>   iomap: support REQ_OP_ZONE_APPEND
>>   btrfs: introduce ZONED feature flag
>>   btrfs: get zone information of zoned block devices
>>   btrfs: check and enable ZONED mode
>>   btrfs: introduce max_zone_append_size
>>   btrfs: disallow space_cache in ZONED mode
>>   btrfs: disallow NODATACOW in ZONED mode
>>   btrfs: disable fallocate in ZONED mode
>>   btrfs: disallow mixed-bg in ZONED mode
>>   btrfs: implement log-structured superblock for ZONED mode
>>   btrfs: implement zoned chunk allocator
>>   btrfs: verify device extent is aligned to zone
>>   btrfs: load zone's alloction offset
>>   btrfs: emulate write pointer for conventional zones
>>   btrfs: track unusable bytes for zones
>>   btrfs: do sequential extent allocation in ZONED mode
>>   btrfs: reset zones of unused block groups
>>   btrfs: redirty released extent buffers in ZONED mode
>>   btrfs: extract page adding function
>>   btrfs: use bio_add_zone_append_page for zoned btrfs
>>   btrfs: handle REQ_OP_ZONE_APPEND as writing
>>   btrfs: split ordered extent when bio is sent
>>   btrfs: extend btrfs_rmap_block for specifying a device
>>   btrfs: use ZONE_APPEND write for ZONED btrfs
>>   btrfs: enable zone append writing for direct IO
>>   btrfs: introduce dedicated data write path for ZONED mode
>>   btrfs: serialize meta IOs on ZONED mode
>>   btrfs: wait existing extents before truncating
>>   btrfs: avoid async metadata checksum on ZONED mode
>>   btrfs: mark block groups to copy for device-replace
>>   btrfs: implement cloning for ZONED device-replace
>>   btrfs: implement copying for ZONED device-replace
>>   btrfs: support dev-replace in ZONED mode
>>   btrfs: enable relocation in ZONED mode
>>   btrfs: relocate block group to repair IO failure in ZONED
>>   btrfs: split alloc_log_tree()
>>   btrfs: extend zoned allocator to use dedicated tree-log block group
>>   btrfs: serialize log transaction on ZONED mode
>>   btrfs: reorder log node allocation
>>   btrfs: enable to mount ZONED incompat flag
>>
>>  block/bio.c                       |   38 +
>>  fs/btrfs/Makefile                 |    1 +
>>  fs/btrfs/block-group.c            |   84 +-
>>  fs/btrfs/block-group.h            |   18 +-
>>  fs/btrfs/ctree.h                  |   20 +-
>>  fs/btrfs/dev-replace.c            |  195 +++++
>>  fs/btrfs/dev-replace.h            |    3 +
>>  fs/btrfs/disk-io.c                |   93 ++-
>>  fs/btrfs/disk-io.h                |    2 +
>>  fs/btrfs/extent-tree.c            |  218 ++++-
>>  fs/btrfs/extent_io.c              |  130 ++-
>>  fs/btrfs/extent_io.h              |    2 +
>>  fs/btrfs/file.c                   |    6 +-
>>  fs/btrfs/free-space-cache.c       |   58 ++
>>  fs/btrfs/free-space-cache.h       |    2 +
>>  fs/btrfs/inode.c                  |  164 +++-
>>  fs/btrfs/ioctl.c                  |   13 +
>>  fs/btrfs/ordered-data.c           |   79 ++
>>  fs/btrfs/ordered-data.h           |   10 +
>>  fs/btrfs/relocation.c             |   35 +-
>>  fs/btrfs/scrub.c                  |  145 ++++
>>  fs/btrfs/space-info.c             |   13 +-
>>  fs/btrfs/space-info.h             |    4 +-
>>  fs/btrfs/super.c                  |   19 +-
>>  fs/btrfs/sysfs.c                  |    4 +
>>  fs/btrfs/tests/extent-map-tests.c |    2 +-
>>  fs/btrfs/transaction.c            |   10 +
>>  fs/btrfs/transaction.h            |    3 +
>>  fs/btrfs/tree-log.c               |   52 +-
>>  fs/btrfs/volumes.c                |  322 +++++++-
>>  fs/btrfs/volumes.h                |    7 +
>>  fs/btrfs/zoned.c                  | 1272 +++++++++++++++++++++++++++++
>>  fs/btrfs/zoned.h                  |  295 +++++++
>>  fs/iomap/direct-io.c              |   41 +-
>>  include/linux/bio.h               |    2 +
>>  include/linux/iomap.h             |    1 +
>>  include/uapi/linux/btrfs.h        |    1 +
>>  37 files changed, 3246 insertions(+), 118 deletions(-)
>>  create mode 100644 fs/btrfs/zoned.c
>>  create mode 100644 fs/btrfs/zoned.h
>>
>

  reply	other threads:[~2020-11-11  5:07 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-10 11:26 [PATCH v10 00/41] btrfs: zoned block device support Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 01/41] block: add bio_add_zone_append_page Naohiro Aota
2020-11-10 17:20   ` Christoph Hellwig
2020-11-11  7:20     ` Johannes Thumshirn
2020-11-10 11:26 ` [PATCH v10 02/41] iomap: support REQ_OP_ZONE_APPEND Naohiro Aota
2020-11-10 17:25   ` Christoph Hellwig
2020-11-10 18:55   ` Darrick J. Wong
2020-11-10 19:01     ` Darrick J. Wong
2020-11-24 11:29     ` Christoph Hellwig
2020-11-30 18:11   ` Darrick J. Wong
2020-12-01 10:16     ` Johannes Thumshirn
2020-12-09  9:31   ` Christoph Hellwig
2020-12-09 10:08     ` Johannes Thumshirn
2020-12-09 10:10       ` hch
2020-12-09 10:16         ` Johannes Thumshirn
2020-12-09 13:38           ` Johannes Thumshirn
2020-12-11  7:26             ` Johannes Thumshirn
2020-12-11 21:24               ` Chaitanya Kulkarni
2020-12-12 10:22                 ` Johannes Thumshirn
2020-11-10 11:26 ` [PATCH v10 03/41] btrfs: introduce ZONED feature flag Naohiro Aota
2020-11-19 21:31   ` David Sterba
2020-11-10 11:26 ` [PATCH v10 04/41] btrfs: get zone information of zoned block devices Naohiro Aota
2020-11-12  6:57   ` Anand Jain
2020-11-12  7:35     ` Johannes Thumshirn
2020-11-12  7:44       ` Damien Le Moal
2020-11-12  9:44         ` Anand Jain
2020-11-13 21:34           ` David Sterba
2020-11-12  9:39     ` Johannes Thumshirn
2020-11-12 12:57     ` Naohiro Aota
2020-11-18 11:17       ` Anand Jain
2020-11-30 11:16         ` Anand Jain
2020-11-25 21:47   ` David Sterba
2020-11-25 22:07     ` David Sterba
2020-11-25 23:50     ` Damien Le Moal
2020-11-26 14:11       ` David Sterba
2020-11-25 22:16   ` David Sterba
2020-11-10 11:26 ` [PATCH v10 05/41] btrfs: check and enable ZONED mode Naohiro Aota
2020-11-18 11:29   ` Anand Jain
2020-11-27 18:44     ` David Sterba
2020-11-30 12:12       ` Anand Jain
2020-11-30 13:15         ` Damien Le Moal
2020-12-01  2:19           ` Anand Jain
2020-12-01  2:29             ` Damien Le Moal
2020-12-01  5:53               ` Anand Jain
2020-12-01  6:09                 ` Damien Le Moal
2020-12-01  7:12                   ` Anand Jain
2020-12-01 10:45               ` Graham Cobb
2020-12-01 11:03                 ` Damien Le Moal
2020-12-01 11:11                   ` hch
2020-12-01 11:27                     ` Damien Le Moal
2020-11-10 11:26 ` [PATCH v10 06/41] btrfs: introduce max_zone_append_size Naohiro Aota
2020-11-19  9:23   ` Anand Jain
2020-11-27 18:47     ` David Sterba
2020-11-10 11:26 ` [PATCH v10 07/41] btrfs: disallow space_cache in ZONED mode Naohiro Aota
2020-11-19 10:42   ` Anand Jain
2020-11-20  4:08     ` Anand Jain
2020-11-10 11:26 ` [PATCH v10 08/41] btrfs: disallow NODATACOW " Naohiro Aota
2020-11-20  4:17   ` Anand Jain
2020-11-23 17:21     ` David Sterba
2020-11-24  3:29       ` Anand Jain
2020-11-10 11:26 ` [PATCH v10 09/41] btrfs: disable fallocate " Naohiro Aota
2020-11-20  4:28   ` Anand Jain
2020-11-10 11:26 ` [PATCH v10 10/41] btrfs: disallow mixed-bg " Naohiro Aota
2020-11-20  4:32   ` Anand Jain
2020-11-10 11:26 ` [PATCH v10 11/41] btrfs: implement log-structured superblock for " Naohiro Aota
2020-11-23 17:46   ` David Sterba
2020-11-24  9:30     ` Johannes Thumshirn
2020-11-24  6:46   ` Anand Jain
2020-11-24  7:16     ` Hannes Reinecke
2020-11-10 11:26 ` [PATCH v10 12/41] btrfs: implement zoned chunk allocator Naohiro Aota
2020-11-24 11:36   ` Anand Jain
2020-11-25  1:57     ` Naohiro Aota
2020-11-25  7:17       ` Anand Jain
2020-11-25 11:48         ` Naohiro Aota
2020-11-25  9:59       ` Graham Cobb
2020-11-25 11:50         ` Naohiro Aota
2020-12-09  5:27   ` Anand Jain
2020-11-10 11:26 ` [PATCH v10 13/41] btrfs: verify device extent is aligned to zone Naohiro Aota
2020-11-27  6:27   ` Anand Jain
2020-11-10 11:26 ` [PATCH v10 14/41] btrfs: load zone's alloction offset Naohiro Aota
2020-12-08  9:54   ` Anand Jain
2020-11-10 11:26 ` [PATCH v10 15/41] btrfs: emulate write pointer for conventional zones Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 16/41] btrfs: track unusable bytes for zones Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 17/41] btrfs: do sequential extent allocation in ZONED mode Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 18/41] btrfs: reset zones of unused block groups Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 19/41] btrfs: redirty released extent buffers in ZONED mode Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 20/41] btrfs: extract page adding function Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 21/41] btrfs: use bio_add_zone_append_page for zoned btrfs Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 22/41] btrfs: handle REQ_OP_ZONE_APPEND as writing Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 23/41] btrfs: split ordered extent when bio is sent Naohiro Aota
2020-11-11  2:01   ` kernel test robot
2020-11-11  2:26   ` kernel test robot
2020-11-11  3:46   ` kernel test robot
2020-11-11  3:46   ` [RFC PATCH] btrfs: extract_ordered_extent() can be static kernel test robot
2020-11-11  4:12   ` [PATCH v10.1 23/41] btrfs: split ordered extent when bio is sent Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 24/41] btrfs: extend btrfs_rmap_block for specifying a device Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 25/41] btrfs: use ZONE_APPEND write for ZONED btrfs Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 26/41] btrfs: enable zone append writing for direct IO Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 27/41] btrfs: introduce dedicated data write path for ZONED mode Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 28/41] btrfs: serialize meta IOs on " Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 29/41] btrfs: wait existing extents before truncating Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 30/41] btrfs: avoid async metadata checksum on ZONED mode Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 31/41] btrfs: mark block groups to copy for device-replace Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 32/41] btrfs: implement cloning for ZONED device-replace Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 33/41] btrfs: implement copying " Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 34/41] btrfs: support dev-replace in ZONED mode Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 35/41] btrfs: enable relocation " Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 36/41] btrfs: relocate block group to repair IO failure in ZONED Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 37/41] btrfs: split alloc_log_tree() Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 38/41] btrfs: extend zoned allocator to use dedicated tree-log block group Naohiro Aota
2020-11-11  4:58   ` [PATCH v10.1 " Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 39/41] btrfs: serialize log transaction on ZONED mode Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 40/41] btrfs: reorder log node allocation Naohiro Aota
2020-11-10 11:26 ` [PATCH v10 41/41] btrfs: enable to mount ZONED incompat flag Naohiro Aota
2020-11-10 14:00 ` [PATCH v10 00/41] btrfs: zoned block device support Anand Jain
2020-11-11  5:07   ` Naohiro Aota [this message]
2020-11-27 19:28 ` 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=20201111050732.omf2vwtlfnj4vf23@naota.dhcp.fujisawa.hgst.com \
    --to=naohiro.aota@wdc.com \
    --cc=anand.jain@oracle.com \
    --cc=axboe@kernel.dk \
    --cc=darrick.wong@oracle.com \
    --cc=dsterba@suse.com \
    --cc=hare@suse.com \
    --cc=hch@infradead.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    /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).