linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* generic RDMA READ/WRITE API V2
@ 2016-03-03 15:03 Christoph Hellwig
  2016-03-03 15:03 ` [PATCH 1/6] vfs: pass a flags argument to vfs_readv/vfs_writev Christoph Hellwig
                   ` (6 more replies)
  0 siblings, 7 replies; 21+ messages in thread
From: Christoph Hellwig @ 2016-03-03 15:03 UTC (permalink / raw)
  To: viro, axboe; +Cc: milosz, linux-fsdevel, linux-block, linux-api

This series contains patches that implement a first version of a generic
API to handle RDMA READ/WRITE operations as commonly used on the target
(or server) side for storage protocols.

This has been developed for the upcoming NVMe over Fabrics target, and
extensively teѕted as part of that, although this upstream version has
additional updates over the one we're currently using.

It hides details such as the use of MRs for iWarp devices, and will allow
looking at other HCA specifics easily in the future.

This series contains a conversion of the SRP target, and the git tree
below also has a RFC conversion of the iSER target (a little hacky
due to the signature MR support which I can't test)

I also have a git tree available at:

	git://git.infradead.org/users/hch/rdma.git rdma-rw-api

Gitweb:

	http://git.infradead.org/users/hch/rdma.git/shortlog/refs/heads/rdma-rw-api

These two also include the RFC iSER target conversion.

Chances since V2:
 - fold the list_del in mr_pool_get into the right patch
 - clamp the max FR page size length
 - minor srpt style fix
 - spelling fixes

Changes since V1:
 - fixed offset handling in ib_sg_to_pages
 - uses proper SG iterators to handle larger than PAGE_SIZE segments
 - adjusted parameters for some functions to reduce size of the context
 - SRP target support


^ permalink raw reply	[flat|nested] 21+ messages in thread
* selective block polling and preadv2/pwritev2 revisited
@ 2015-12-24 14:14 Christoph Hellwig
  2015-12-24 14:14 ` [PATCH 4/6] vfs: add the RWF_HIPRI flag for preadv2/pwritev2 Christoph Hellwig
  0 siblings, 1 reply; 21+ messages in thread
From: Christoph Hellwig @ 2015-12-24 14:14 UTC (permalink / raw)
  To: viro, axboe; +Cc: milosz, linux-fsdevel, linux-block, linux-api

This series allows to selectively enable/disable polling for completions
in the block layer [1] on a per-I/O basis.  For this it resurrects the
preadv2/pwritev2 syscalls that Milosz prepared a while ago (and which
are much simpler now due to VFS changes that happened in the meantime).
That approach also had a man page update prepared, which I will resubmit
with the current flags once this series makes it in.

Polling for block I/O is important to reduce the latency on flash and
post-flash storage technologies.  On the fastest NVMe controller I have
access to it almost halves latencies from over 7 microseconds to about 4
microseonds.  But it only is usesful if we actually care for the latency
of this particular I/O, and generally is a waste if enabled for all I/O
to a given device.  This series uses the per-I/O flags in preadv2/pwritev2
to control this behavior.  The alternative would be a new O_* flag set
at open time or using fcntl, but this is still to corse-grained for some
applications and we're starting to run out out of open flags.

Note that there are plenty of other use cases for preadv2/pwritev2 as well,
but I'd like to concentrate on this one for now.  Example are: non-blocking
reads (the original purpose), per-I/O O_SYNC, user space support for T10
DIF/DIX applications tags and probably some more.

[1] only supported for NVMe at the moment.


^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2016-05-11  8:55 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-03 15:03 generic RDMA READ/WRITE API V2 Christoph Hellwig
2016-03-03 15:03 ` [PATCH 1/6] vfs: pass a flags argument to vfs_readv/vfs_writev Christoph Hellwig
2016-03-03 15:03 ` [PATCH 2/6] vfs: vfs: Define new syscalls preadv2,pwritev2 Christoph Hellwig
2016-03-10 18:15   ` Michael Kerrisk (man-pages)
2016-03-11  9:53     ` Christoph Hellwig
2016-04-18 13:51       ` Michael Kerrisk (man-pages)
2016-04-25  8:47         ` Christoph Hellwig
2016-04-25 17:35           ` Michael Kerrisk (man-pages)
2016-05-08  9:29             ` Christoph Hellwig
2016-03-03 15:04 ` [PATCH 3/6] x86: wire up preadv2 and pwritev2 Christoph Hellwig
2016-03-03 15:04 ` [PATCH 4/6] vfs: add the RWF_HIPRI flag for preadv2/pwritev2 Christoph Hellwig
2016-05-08 21:47   ` NeilBrown
2016-05-11  8:55     ` Christoph Hellwig
2016-03-03 15:04 ` [PATCH 5/6] direct-io: only use block polling if explicitly requested Christoph Hellwig
2016-03-03 15:04 ` [PATCH 6/6] blk-mq: enable polling support by default Christoph Hellwig
2016-03-03 15:09 ` generic RDMA READ/WRITE API V2 Sagi Grimberg
2016-03-03 15:11   ` selective block polling and preadv2/pwritev2 revisited V3 Christoph Hellwig
2016-03-03 15:16     ` Jens Axboe
2016-03-03 15:52     ` Arnd Bergmann
2016-03-03 16:11       ` Christoph Hellwig
  -- strict thread matches above, loose matches on Subject: below --
2015-12-24 14:14 selective block polling and preadv2/pwritev2 revisited Christoph Hellwig
2015-12-24 14:14 ` [PATCH 4/6] vfs: add the RWF_HIPRI flag for preadv2/pwritev2 Christoph Hellwig

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).