mbox series

[v1,0/1] Regression in ZNS devices due to batched completions

Message ID 20220211093425.43262-1-p.raghav@samsung.com (mailing list archive)
Headers show
Series Regression in ZNS devices due to batched completions | expand

Message

Pankaj Raghav Feb. 11, 2022, 9:34 a.m. UTC
Hi Jens,

  I found the following regression in ZNS devices when executing some basic
  workload:
[  182.240375] Call Trace:
[  182.240517]  <TASK>
[  182.240656]  btrfs_start_dirty_block_groups+0x6be/0xe80 [btrfs]
[  182.241091]  ? bio_init+0x398/0x620
[  182.241307]  ? btrfs_setup_space_cache+0x240/0x240 [btrfs]
[  182.241731]  ? mutex_unlock+0x80/0xd0
[  182.241964]  ? __mutex_unlock_slowpath.constprop.0+0x2a0/0x2a0
[  182.242490]  btrfs_commit_transaction+0x18aa/0x2820 [btrfs]
[  182.242901]  ? kasan_unpoison+0x23/0x50
[  182.243156]  ? join_transaction+0x255/0xe80 [btrfs]
[  182.244105]  ? btrfs_apply_pending_changes+0x50/0x50 [btrfs]
[  182.244554]  ? vfs_fsync_range+0x210/0x210
[  182.244839]  ? btrfs_attach_transaction_barrier+0x1f/0x70 [btrfs]
[  182.245293]  ? vfs_fsync_range+0x210/0x210
[  182.245563]  iterate_supers+0x109/0x200
[  182.245794]  ksys_sync+0xa8/0x130
[  182.245990]  ? vfs_fsync+0x200/0x200
[  182.246197]  ? do_user_addr_fault+0x31e/0xd60
[  182.246454]  ? kvm_read_and_reset_apf_flags+0x41/0x60
[  182.247240]  ? fpregs_assert_state_consistent+0x4a/0xb0
[  182.247613]  __do_sys_sync+0xa/0x10
[  182.247827]  do_syscall_64+0x3b/0x90
[  182.248041]  entry_SYSCALL_64_after_hwframe+0x44/0xae
[  182.252155]  </TASK>
[  182.252281] ---[ end trace 0000000000000000 ]---
[  182.252561] BTRFS: error (device nvme0n2) in btrfs_run_delayed_refs:2159:
                errno=-17 Object already exists
[  182.253110] BTRFS info (device nvme0n2): forced readonly

I am using QEMU with a ZNS drive with zoned.zone_capacity=128M,
zoned.zone_size=128M.

Steps to reproduce:

$ mkfs.btrfs /dev/nvme0n2 -d single -m single
$ mount -t btrfs  /dev/nvme0n2 /mnt/btrfs
$ cd /mnt/btrfs
$ head --bytes 1048576 /dev/random >> 4k_rand.bin
$ sync 
$ head --bytes 1048576 /dev/random >> 4k_rand.bin
$ sync

Git bisect run pointed the following as the offending commit:
commit 5581a5ddfe8d ("block: add completion handler for fast path")

The fast path completion handler does not handle the ZONE_APPEND
requests correctly.


Pankaj Raghav (1):
  block: Add handling for zone append command in blk_complete_request

 block/blk-mq.c | 4 ++++
 1 file changed, 4 insertions(+)