Merge tag 'for-6.12/io_uring-discard-20240913' of git://git.kernel.dk/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 16 Sep 2024 11:50:14 +0000 (13:50 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 16 Sep 2024 11:50:14 +0000 (13:50 +0200)
commitadfc3ded5c33d67e822525f95404ef0becb099b8
tree60b29e7650d2482cee936505e1b5c3363005efdd
parent26bb0d3f38a764b743a3ad5c8b6e5b5044d7ceb4
parent50c52250e2d74b098465841163c18f4b4e9ad430
Merge tag 'for-6.12/io_uring-discard-20240913' of git://git.kernel.dk/linux

Pull io_uring async discard support from Jens Axboe:
 "Sitting on top of both the 6.12 block and io_uring core branches,
  here's support for async discard through io_uring.

  This allows applications to issue async discards, rather than rely on
  the blocking sync ioctl discards we already have. The sync support is
  difficult to use outside of idle/cleanup periods.

  On a real (but slow) device, testing shows the following results when
  compared to sync discard:

qd64 sync discard: 21K IOPS, lat avg 3 msec (max 21 msec)
qd64 async discard: 76K IOPS, lat avg 845 usec (max 2.2 msec)

qd64 sync discard: 14K IOPS, lat avg 5 msec (max 25 msec)
qd64 async discard: 56K IOPS, lat avg 1153 usec (max 3.6 msec)

  and synthetic null_blk testing with the same queue depth and block
  size settings as above shows:

Type    Trim size       IOPS    Lat avg (usec)  Lat Max (usec)
==============================================================
sync    4k               144K       444            20314
async   4k              1353K        47              595
sync    1M                56K      1136            21031
async   1M                94K       680              760"

* tag 'for-6.12/io_uring-discard-20240913' of git://git.kernel.dk/linux:
  block: implement async io_uring discard cmd
  block: introduce blk_validate_byte_range()
  filemap: introduce filemap_invalidate_pages
  io_uring/cmd: give inline space in request to cmds
  io_uring/cmd: expose iowq to cmds
block/fops.c
mm/filemap.c