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
>>
>
next prev parent 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).