From: Sagi Grimberg <sagig-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
To: Jason Gunthorpe
<jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
Cc: Tom Talpey <tom-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>,
Steve Wise
<swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>,
'Christoph Hellwig' <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
roid-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
eli-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
Oren Duer <oren-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: kernel memory registration (was: RDMA/core: Transport-independent access flags)
Date: Fri, 10 Jul 2015 11:55:29 +0300 [thread overview]
Message-ID: <559F8881.7070308@dev.mellanox.co.il> (raw)
In-Reply-To: <20150709170142.GA21921-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
On 7/9/2015 8:01 PM, Jason Gunthorpe wrote:
> On Thu, Jul 09, 2015 at 02:02:03PM +0300, Sagi Grimberg wrote:
>
>> We have protocol that involves remote memory keys transfer in their
>> standards so I don't see how we can remove it altogether from ULPs.
>
> This is why I've been talking about local and remote MRs
> differently.
IMHO, memory registration is memory registration. The fact that we are
distinguishing between local and remote might be a sign that this might
be a wrong direction to take. Sorry.
Besides, if a ULP wants to register memory for local access why should
we temper with that or deny it?
What if a ULP has a pre-allocated pool of large buffers that it knows
it is going to use for its entire lifetime? silent driver driven FRWRs
would perform a lot worse than pre-registering these buffers.
Or what if the ULP wants to register the memory region with data
integrity (signature) parameters?
I must say, whenever I find myself trying to assume/guess what the
ULP/APP might do from the driver PoV and try to see if I'm covered,
I shake my head saying:
"This is a hack, go drink some water and rethink the whole thing".
If there is one thing worse than a complicated API, it is a restrictive
one. I'd much rather ULPs just having a simple API for registering
memory.
> A Local MR is one where the Key is never put on the wire,
> it exists soley to facilitate DMA between the CPU and the local HCA,
> and it would never be needed if we had infinitely long S/G lists.
>
>> My main problem with this approach is that once you do non-trivial
>> things such as memory registration completely under the hood, it is
>> a slippery slope for device drivers.
>
> Yes, there is going to be some stuff going on, but the simplification
> for the ULP side is incredible, it is certainly something that should
> be explored and not dismissed without some really good reasons.
>
>> If say a driver decides to register memory without the caller knowing,
>> it would need to post an extra work request on the send queue.
>
> Yes, the first issue is how to do flow control the sendq.
>
> But this seems easily solved, every ULP is already tracking the
> number of available entries in the senq, and it will not start new ops
> until there is space, so instead of doing the computation internally
> on how much space is needed to do X, we factor it out:
>
> if (rdma_sqes_post_read(...) < avail_sqe)
> avail_sqe -= rdma_post_read(...)
> else
> // Try again after completions advance
>
> Every new-style post op is paired with a 'how many entires do I need'
> call.
>
> This is not a new concept, a ULP working with FRMR already has to know
> it cannot start a FRMR using OP unless there is 2 SQE's
> available. (and it has to make all this conditional on if it using
> FRMR or something else). All this is doing is shifting the computation
> of '2' out of the ULP and into the driver.
>
>> So once it sees the completion, it needs to silently consume it and
>> have some non trivial logic to invalidate it (another work request!)
>> either from poll_cq context or another thread.
>
> Completions are driven by the ULP. Every new-style post also has a
> completion entry point. The ULP calls it when it knows the op has
> done, either because the WRID it provided has signaled completed, or
> because a later op has completed (signalling was supressed).
>
> Since that may also be an implicitly posting API (if necessary, is
> it?), it follows the same rules as above. This isn't changing
> anything. ULPs would already have to drive invalidate posts from
> completion with flow control, we are just moving the actul post
> construction and computation of the needed SQEs out of the ULP.
>
>> This would also require the drivers to take a huristic approach on how
>> much memory registration resources are needed for all possible
>> consumers (ipoib, sdp, srp, iser, nfs, more...) which might have
>> different requirements.
>
> That doesn't seem like a big issue. The ULP can give a hint on the PD
> or QP what sort of usage it expects. 'Up to 16 RDMA READS' 'Up to 1MB
> transfer per RDMA' and the core can use a pre-allocated pool scheme.
>
> I was thinking about a pre-allocation for local here, as Christoph
> suggests, I think that is a refinement we could certainly add on, once
> there is some clear idea what allocations are acutally necessary to
> spin up a temp MR. The basic issue I'd see is that the preallocation
> would be done without knowledge of the desired SG list, but maybe some
> kind of canonical 'max' SG could be used as a stand in...
>
> Put together, it would look like this:
> if (rdma_sqes_post_read(...) < avail_sqe)
> avail_sqe -= rdma_post_read(qp,...,read_wrid)
> [.. fetch wcs ...]
> if (wc.wrid == read_wrid)
> if (rdma_sqes_post_complete_read(...,read_wrid) < avail_sqe)
> rdma_post_complete_read(qp,...,read_wrid);
> else
> // queue read_wrid for later rdma_post_complete_read
>
> I'm not really seeing anything here that screams out this is
> impossible, or performance is impacted, or it is too messy on either
> the ULP or driver side.
I think it is possible (at the moment). But I don't know if we should
have the drivers abusing the send/completion queues like that.
I can't say I'm fully on board with the idea of silent send-queue
posting and silent completion consuming.
>
> Laid out like this, I think it even means we can nuke the IB DMA API
> for these cases. rdma_post_read and rdma_post_complete_read are the
> two points that need dma api calls (cache flushes), and they can just
> do them internally.
>
> This also tells me that the above call sites must already exist in
> every ULP, so we, again, are not really substantially changing
> core control flow for the ULP.
>
> Are there more details that wreck the world?
>
> Just to break it down:
> - rdma_sqes_post_read figures out how many SQEs are needed to post
> the specified RDMA READ.
> On IB, if the SG list can be used then this is always 1.
> If the RDMA READ is split into N RDMA READS then it is N.
> For something like iWarp this would be (?)
> * FRMR SQE
> * RDMA READ SQE
> * FRMR Invalidate (signaled)
>
> Presumably we can squeeze FMR and so forth into this scheme as
> well? They don't seem to use SQE's so it is looks simpler..
>
> Perhaps if an internal MR pool is exhausted this returns 0xFFFF
> and the caller will do a completion cycle, which may provide
> free MR's back to the pool. Ultimately once the SQ and CQ are
> totally drained the pool should be back to 100%?
> - rdma_post_read generates the necessary number of posts.
> The SQ must have the right number of entires available
> (see above)
> - rdma_post_complete_read is doing any clean up posts to make a MR
> ready to go again. Perhaps this isn't even posting?
>
> Semantically, I'd want to see rdma_post_complete_read returning to
> mean that the local read buffer is ready to go, and the ULP can
> start using it instantly. All invalidation is complete and all
> CPU caches are sync'd.
>
> This is where we'd start the recycling process for any temp MR,
> whatever that means..
>
> I expect all these calls would be function pointers, and each driver
> would provide a function pointer that is optimal for it's use. Eg mlx4
> would provide a pointer that used the S/G list, then falls back to
> FRMR if the S/G list is exhausted. The core code would provide a
> toolbox of common functions the drivers can use here.
Maybe it's just me, but I can't help but wander if this is facilitating
an atmosphere where drivers will keep finding new ways to abuse even
the most simple operations.
I need more time to comprehend.
>
> I didn't explore how errors work, but, I think, errors are just a
> labeling exercise:
> if (wc is error && wc.wrid == read_wrid
> rdma_error_complete_read(...,read_wrid,wc)
>
> Error recovery blows up the QP, so we just need to book keep and get
> the MRs accounted for. The driver could do a synchronous clean up of
> whatever mess is left during the next create_qp, or on the PD destroy.
>
>> I know that these are implementation details, but the point is that
>> vendor drivers can easily become a complete mess. I think we should
>> try to find a balanced approach where both consumers and providers are
>> not completely messed up.
>
> Sure, but today vendor drivers and the core is trivial while ULPs are
> an absolute mess.
>
> Goal #1 should be to move all the mess into the API and support all
> the existing methods. We should try as hard as possible to do that,
> and if along the way, it is just isn't possible, then fine. But that
> should be the first thing we try to reach for.
>
> Just tidying FRMR so it unifies with indirect, is a fine consolation
> prize, but I believe we can do better.
>
> To your point in another message, I'd say, as long as the new API
> supports FRMR at full speed with no performance penalty we are
> good. If the other variants out there take a performance hit, then I
> think that is OK. As you say, they are on the way out, we just need to
> make sure that ULPs continue to work with FMR with the new API so
> legacy cards don't completely break.
My intention is to improve FRWR API and gradually remove the other APIs
from the kernel (i.e. FMR/FMR_POOL/MW). As I said, I don't think that
striving to an API that implicitly chooses how to register memory is a
good idea.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-07-10 8:55 UTC|newest]
Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-05 23:21 [PATCH V3 0/5] Transport-independent MRs Steve Wise
2015-07-05 23:22 ` [PATCH V3 1/5] RDMA/core: Transport-independent access flags Steve Wise
2015-07-06 5:25 ` Christoph Hellwig
2015-07-06 14:23 ` Steve Wise
2015-07-07 8:58 ` 'Christoph Hellwig'
[not found] ` <20150705232158.12029.25472.stgit-PBeJgSbIpn97NCTnQtmixQ@public.gmane.org>
2015-07-06 7:09 ` Haggai Eran
[not found] ` <559A2991.3040304-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2015-07-06 14:29 ` Steve Wise
2015-07-07 14:17 ` Steve Wise
2015-07-07 14:34 ` Haggai Eran
2015-07-07 14:46 ` Steve Wise
2015-07-07 15:07 ` Haggai Eran
2015-07-06 7:53 ` Sagi Grimberg
2015-07-06 14:37 ` Steve Wise
2015-07-06 16:17 ` Sagi Grimberg
2015-07-06 16:55 ` Steve Wise
2015-07-07 9:00 ` Christoph Hellwig
[not found] ` <20150707090001.GB11736-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-07 9:14 ` Sagi Grimberg
[not found] ` <559B9891.8060907-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-07 14:05 ` Steve Wise
2015-07-07 16:17 ` Jason Gunthorpe
[not found] ` <20150707161751.GA623-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-07 16:27 ` Sagi Grimberg
[not found] ` <559BFE03.4020709-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-07 21:36 ` Jason Gunthorpe
2015-07-08 7:29 ` Sagi Grimberg
[not found] ` <559CD174.4040901-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-08 8:13 ` 'Christoph Hellwig'
[not found] ` <20150708081320.GB24203-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-08 10:05 ` Sagi Grimberg
[not found] ` <559CF5E8.6080000-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-08 10:20 ` 'Christoph Hellwig'
[not found] ` <20150708102035.GA28421-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-08 11:08 ` Sagi Grimberg
[not found] ` <559D0498.9050809-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-08 17:14 ` Hefty, Sean
2015-07-09 8:46 ` Sagi Grimberg
2015-07-09 13:52 ` Chuck Lever
2015-07-10 19:34 ` Christoph Hellwig
2015-07-12 7:49 ` Sagi Grimberg
2015-07-13 16:50 ` Jason Gunthorpe
2015-07-14 8:06 ` Sagi Grimberg
[not found] ` <55A4C2FA.9060707-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-14 12:24 ` Tom Talpey
[not found] ` <55A4FF93.4090406-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2015-07-14 13:21 ` Sagi Grimberg
2015-07-23 0:43 ` Hefty, Sean
2015-07-08 19:08 ` Jason Gunthorpe
[not found] ` <20150708190842.GB11740-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-08 20:32 ` 'Christoph Hellwig'
2015-07-09 0:03 ` Jason Gunthorpe
[not found] ` <20150709000337.GE16812-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-09 8:00 ` 'Christoph Hellwig'
2015-07-09 8:58 ` Sagi Grimberg
2015-07-09 22:18 ` Doug Ledford
2015-07-09 22:53 ` Jason Gunthorpe
2015-07-10 13:22 ` Tom Talpey
[not found] ` <559FC710.1050307-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2015-07-10 16:11 ` Jason Gunthorpe
2015-07-10 17:56 ` Doug Ledford
2015-07-10 18:34 ` Chuck Lever
2015-07-10 18:42 ` Tom Talpey
[not found] ` <55A01225.9000000-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2015-07-10 19:54 ` Jason Gunthorpe
2015-07-10 20:48 ` Jason Gunthorpe
[not found] ` <20150710195420.GA31500-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-10 22:33 ` Doug Ledford
2015-07-11 10:17 ` 'Christoph Hellwig'
[not found] ` <20150711101736.GA14741-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-13 16:57 ` Jason Gunthorpe
2015-07-14 7:25 ` 'Christoph Hellwig'
2015-07-14 9:05 ` Sagi Grimberg
2015-07-14 15:35 ` 'Christoph Hellwig'
2015-07-14 17:26 ` Jason Gunthorpe
[not found] ` <20150714172655.GB24403-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-15 7:10 ` Sagi Grimberg
2015-07-10 22:30 ` Doug Ledford
2015-07-10 20:57 ` Jason Gunthorpe
[not found] ` <20150710205706.GA7883-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-10 22:27 ` Doug Ledford
[not found] ` <20150710233417.GA8919@obsidianresearch.com>
[not found] ` <20150710233417.GA8919-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-11 3:10 ` Doug Ledford
[not found] ` <55A0891F.4050105-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-07-13 17:18 ` Jason Gunthorpe
2015-07-13 22:23 ` Tom Talpey
2015-07-11 16:37 ` Steve Wise
[not found] ` <CCB6E837-88FF-4DBB-976D-4CF56396A1A1-/Yg/VP3ZvrM@public.gmane.org>
2015-07-12 10:46 ` Sagi Grimberg
[not found] ` <55A24571.60902-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-14 19:25 ` Steve Wise
2015-07-14 19:29 ` Jason Gunthorpe
[not found] ` <20150714192941.GA26292-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-14 19:32 ` Steve Wise
2015-07-14 19:37 ` Jason Gunthorpe
2015-07-14 19:55 ` 'Christoph Hellwig'
2015-07-14 20:10 ` Steve Wise
[not found] ` <20150714195511.GB7716-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-14 20:29 ` Jason Gunthorpe
[not found] ` <20150714202943.GB26927-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-14 20:40 ` Steve Wise
2015-07-14 20:44 ` Jason Gunthorpe
[not found] ` <20150714204442.GD26927-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-14 20:54 ` Steve Wise
2015-07-14 20:59 ` Jason Gunthorpe
2015-07-14 20:50 ` Tom Talpey
2015-07-15 8:47 ` Sagi Grimberg
[not found] ` <55A61E38.20201-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-15 12:19 ` 'Christoph Hellwig'
[not found] ` <20150715121926.GB14993-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-15 19:17 ` Jason Gunthorpe
2015-07-15 6:50 ` 'Christoph Hellwig'
[not found] ` <20150715065057.GA22113-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-15 19:12 ` Jason Gunthorpe
[not found] ` <20150715191257.GF23588-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-16 6:41 ` Jason Gunthorpe
2015-07-16 8:04 ` 'Christoph Hellwig'
[not found] ` <20150716080402.GC9093-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-16 16:13 ` Jason Gunthorpe
2015-07-14 20:46 ` Tom Talpey
2015-07-14 19:45 ` 'Christoph Hellwig'
[not found] ` <20150714194512.GA25887-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-14 19:57 ` Jason Gunthorpe
2015-07-14 19:58 ` Steve Wise
2015-07-14 20:41 ` Jason Gunthorpe
[not found] ` <20150714204145.GC26927-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-14 20:51 ` Steve Wise
2015-07-14 21:01 ` Steve Wise
2015-07-14 21:14 ` Jason Gunthorpe
2015-07-23 18:53 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A82373A901C9A5-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-07-23 19:03 ` Steve Wise
2015-07-23 23:30 ` Hefty, Sean
[not found] ` <1828884A29C6694DAF28B7E6B8A82373A901DB80-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-07-23 23:53 ` Jason Gunthorpe
[not found] ` <20150723235310.GA20537-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-24 0:18 ` Hefty, Sean
2015-07-24 4:46 ` Jason Gunthorpe
[not found] ` <20150708203205.GA21847-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-08 20:37 ` 'Christoph Hellwig'
2015-07-09 8:47 ` Sagi Grimberg
2015-07-08 21:38 ` Tom Talpey
2015-07-08 23:36 ` Jason Gunthorpe
2015-07-09 11:02 ` Sagi Grimberg
[not found] ` <559E54AB.2010905-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-09 17:01 ` Jason Gunthorpe
2015-07-09 20:00 ` Tom Talpey
2015-07-09 21:16 ` Jason Gunthorpe
[not found] ` <20150709170142.GA21921-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-10 8:55 ` Sagi Grimberg [this message]
[not found] ` <559F8881.7070308-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-10 16:35 ` kernel memory registration (was: RDMA/core: Transport-independent access flags) Jason Gunthorpe
2015-07-11 10:31 ` 'Christoph Hellwig'
[not found] ` <20150711103153.GC14741-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-13 16:46 ` Jason Gunthorpe
[not found] ` <20150713164652.GC23832-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-14 8:24 ` kernel memory registration Sagi Grimberg
[not found] ` <55A4C73A.7080001-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-14 17:24 ` Jason Gunthorpe
2015-07-11 10:25 ` [PATCH V3 1/5] RDMA/core: Transport-independent access flags 'Christoph Hellwig'
2015-07-13 16:35 ` Jason Gunthorpe
2015-07-13 19:36 ` Tom Talpey
2015-07-13 20:15 ` Jason Gunthorpe
[not found] ` <20150713201538.GA11681-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-07-14 9:10 ` Sagi Grimberg
[not found] ` <55A4D20C.2000904-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-14 15:36 ` 'Christoph Hellwig'
[not found] ` <20150714153619.GC11026-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-14 15:47 ` Tom Talpey
2015-07-14 16:22 ` Jason Gunthorpe
2015-07-14 7:37 ` 'Christoph Hellwig'
2015-07-14 9:22 ` Sagi Grimberg
[not found] ` <55A4D4C6.6040907-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-14 12:12 ` Tom Talpey
2015-07-14 13:23 ` Sagi Grimberg
2015-07-14 14:45 ` Steve Wise
2015-07-14 15:40 ` 'Christoph Hellwig'
2015-07-08 8:11 ` 'Christoph Hellwig'
2015-07-06 7:58 ` Sagi Grimberg
[not found] ` <559A3536.3020807-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-07-06 14:39 ` Steve Wise
2015-07-05 23:22 ` [PATCH V3 2/5] RDMA/iser: Use transport independent MR allocation Steve Wise
[not found] ` <20150705231831.12029.80307.stgit-PBeJgSbIpn97NCTnQtmixQ@public.gmane.org>
2015-07-05 23:22 ` [PATCH V3 3/5] RDMA/isert: " Steve Wise
2015-07-05 23:22 ` [PATCH V3 4/5] svcrdma: " Steve Wise
2015-07-05 23:22 ` [PATCH V3 5/5] xprtrdma: " Steve Wise
2015-07-06 5:25 ` [PATCH V3 0/5] Transport-independent MRs Christoph Hellwig
[not found] ` <20150706052542.GB1109-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-07-06 14:24 ` Steve Wise
2015-07-07 9:01 ` 'Christoph Hellwig'
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=559F8881.7070308@dev.mellanox.co.il \
--to=sagig-ldsdmyg8hgv8yrgs2mwiifqbs+8scbdb@public.gmane.org \
--cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=eli-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=oren-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=roid-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=swise-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org \
--cc=tom-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.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