io_pgetevents & aio fsync V4

From: Christoph Hellwig
Date: Wed May 02 2018 - 17:14:59 EST


Hi all,

this patch adds workqueue based fsync offload. Version of this
patch have been floating around for a couple years, but we now
have a user with seastar used by ScyllaDB (who sponsored this
work) that really wants this in addition to the aio poll support.
More details are in the patch itself.

Because the iocb types have been defined sine day one (and probably
were supported by RHEL3) libaio already supports these calls as-is.

This also pulls in the aio cleanups and io_pgetevents support previously
submitted and review as part of the aio poll series. The aio poll
series will be resubmitted on top of this series

A git tree is available here:

git://git.infradead.org/users/hch/vfs.git aio-fsync.4

Gitweb:

http://git.infradead.org/users/hch/vfs.git/shortlog/refs/heads/aio-fsync.4

Changes since V3:
- rebased on top of 4.17-rc3
- improved/added a few comments

Changes since V2:
- don't introduce a use after free for lockdep sb release tracking
- set up list for cancellation before I/O submission

Changes since V1:
- remove a BUG_ON_ONE(is_sync_kiocb(kiocb));
- moved cancellation patches to the poll series
- improve a list_empty check