All of lore.kernel.org
 help / color / mirror / Atom feed
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

  parent reply	other threads:[~2015-07-10  8:55 UTC|newest]

Thread overview: 223+ 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-06 14:23       ` Steve Wise
2015-07-07  8:58       ` 'Christoph Hellwig'
2015-07-06  7:09   ` Haggai Eran
2015-07-06  7:09     ` Haggai Eran
2015-07-06 14:29     ` Steve Wise
2015-07-06 14:29       ` Steve Wise
2015-07-07 14:17     ` Steve Wise
2015-07-07 14:17       ` Steve Wise
2015-07-07 14:34       ` Haggai Eran
2015-07-07 14:34         ` Haggai Eran
2015-07-07 14:46         ` Steve Wise
2015-07-07 14:46           ` Steve Wise
2015-07-07 15:07           ` Haggai Eran
2015-07-07 15:07             ` Haggai Eran
2015-07-06  7:53   ` Sagi Grimberg
2015-07-06  7:53     ` Sagi Grimberg
2015-07-06 14:37     ` Steve Wise
2015-07-06 14:37       ` Steve Wise
2015-07-06 16:17       ` Sagi Grimberg
2015-07-06 16:17         ` Sagi Grimberg
2015-07-06 16:55         ` Steve Wise
2015-07-06 16:55           ` Steve Wise
2015-07-07  9:00         ` Christoph Hellwig
2015-07-07  9:14           ` Sagi Grimberg
2015-07-07  9:14             ` Sagi Grimberg
2015-07-07 14:05             ` Steve Wise
2015-07-07 14:05               ` Steve Wise
2015-07-07 16:17               ` Jason Gunthorpe
2015-07-07 16:17                 ` Jason Gunthorpe
2015-07-07 16:27                 ` Sagi Grimberg
2015-07-07 16:27                   ` Sagi Grimberg
2015-07-07 21:36                   ` Jason Gunthorpe
2015-07-07 21:36                     ` Jason Gunthorpe
2015-07-08  7:29                     ` Sagi Grimberg
2015-07-08  8:13                       ` 'Christoph Hellwig'
2015-07-08  8:13                         ` 'Christoph Hellwig'
2015-07-08 10:05                         ` Sagi Grimberg
2015-07-08 10:05                           ` Sagi Grimberg
2015-07-08 10:20                           ` 'Christoph Hellwig'
2015-07-08 10:20                             ` 'Christoph Hellwig'
2015-07-08 11:08                             ` Sagi Grimberg
2015-07-08 11:08                               ` Sagi Grimberg
2015-07-08 17:14                               ` Hefty, Sean
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
2015-07-14 12:24                                             ` Tom Talpey
2015-07-14 12:24                                               ` Tom Talpey
2015-07-14 13:21                                               ` Sagi Grimberg
2015-07-14 13:21                                                 ` Sagi Grimberg
2015-07-23  0:43                                               ` Hefty, Sean
2015-07-23  0:43                                                 ` Hefty, Sean
2015-07-08 19:08                       ` Jason Gunthorpe
2015-07-08 20:32                         ` 'Christoph Hellwig'
2015-07-08 20:32                           ` 'Christoph Hellwig'
2015-07-08 20:37                           ` 'Christoph Hellwig'
2015-07-08 20:37                             ` 'Christoph Hellwig'
2015-07-09  0:03                           ` Jason Gunthorpe
2015-07-09  8:00                             ` 'Christoph Hellwig'
2015-07-09  8:00                               ` 'Christoph Hellwig'
2015-07-09  8:58                             ` Sagi Grimberg
2015-07-09  8:58                               ` Sagi Grimberg
2015-07-09 22:18                             ` Doug Ledford
2015-07-09 22:18                               ` Doug Ledford
2015-07-09 22:53                               ` Jason Gunthorpe
2015-07-09 22:53                                 ` Jason Gunthorpe
2015-07-10 13:22                                 ` Tom Talpey
2015-07-10 16:11                                   ` Jason Gunthorpe
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
2015-07-10 19:54                                         ` Jason Gunthorpe
2015-07-10 19:54                                           ` Jason Gunthorpe
2015-07-10 20:48                                           ` Jason Gunthorpe
2015-07-10 22:33                                           ` Doug Ledford
2015-07-10 22:33                                             ` Doug Ledford
2015-07-11 10:17                                           ` 'Christoph Hellwig'
2015-07-11 10:17                                             ` 'Christoph Hellwig'
2015-07-13 16:57                                             ` Jason Gunthorpe
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
2015-07-15  7:10                                                     ` Sagi Grimberg
2015-07-15  7:10                                                       ` Sagi Grimberg
2015-07-10 22:30                                         ` Doug Ledford
2015-07-10 22:30                                           ` Doug Ledford
2015-07-10 20:57                                       ` Jason Gunthorpe
2015-07-10 22:27                                         ` Doug Ledford
2015-07-10 22:27                                           ` Doug Ledford
     [not found]                                           ` <20150710233417.GA8919@obsidianresearch.com>
2015-07-11  3:10                                             ` Doug Ledford
2015-07-11  3:10                                               ` Doug Ledford
2015-07-13 17:18                                               ` Jason Gunthorpe
2015-07-13 17:18                                                 ` Jason Gunthorpe
2015-07-13 22:23                                                 ` Tom Talpey
2015-07-11 16:37                                     ` Steve Wise
2015-07-12 10:46                                       ` Sagi Grimberg
2015-07-12 10:46                                         ` Sagi Grimberg
2015-07-14 19:25                                         ` Steve Wise
2015-07-14 19:25                                           ` Steve Wise
2015-07-14 19:29                                           ` Jason Gunthorpe
2015-07-14 19:32                                             ` Steve Wise
2015-07-14 19:32                                               ` Steve Wise
2015-07-14 19:37                                               ` Jason Gunthorpe
2015-07-14 19:55                                               ` 'Christoph Hellwig'
2015-07-14 19:55                                                 ` 'Christoph Hellwig'
2015-07-14 20:10                                                 ` Steve Wise
2015-07-14 20:10                                                   ` Steve Wise
2015-07-14 20:29                                                 ` Jason Gunthorpe
2015-07-14 20:29                                                   ` Jason Gunthorpe
2015-07-14 20:40                                                   ` Steve Wise
2015-07-14 20:40                                                     ` Steve Wise
2015-07-14 20:44                                                     ` Jason Gunthorpe
2015-07-14 20:44                                                       ` Jason Gunthorpe
2015-07-14 20:54                                                       ` Steve Wise
2015-07-14 20:54                                                         ` Steve Wise
2015-07-14 20:59                                                         ` Jason Gunthorpe
2015-07-14 20:59                                                           ` Jason Gunthorpe
2015-07-14 20:50                                                   ` Tom Talpey
2015-07-14 20:50                                                     ` Tom Talpey
2015-07-15  6:50                                                   ` 'Christoph Hellwig'
2015-07-15 19:12                                                     ` Jason Gunthorpe
2015-07-15 19:12                                                       ` Jason Gunthorpe
2015-07-16  6:41                                                       ` Jason Gunthorpe
2015-07-16  6:41                                                         ` Jason Gunthorpe
2015-07-16  8:04                                                       ` 'Christoph Hellwig'
2015-07-16  8:04                                                         ` 'Christoph Hellwig'
2015-07-16 16:13                                                         ` Jason Gunthorpe
2015-07-16 16:13                                                           ` Jason Gunthorpe
2015-07-15  8:47                                                   ` Sagi Grimberg
2015-07-15  8:47                                                     ` Sagi Grimberg
2015-07-15 12:19                                                     ` 'Christoph Hellwig'
2015-07-15 12:19                                                       ` 'Christoph Hellwig'
2015-07-15 19:17                                                       ` Jason Gunthorpe
2015-07-15 19:17                                                         ` Jason Gunthorpe
2015-07-14 20:46                                               ` Tom Talpey
2015-07-14 19:45                                           ` 'Christoph Hellwig'
2015-07-14 19:57                                             ` Jason Gunthorpe
2015-07-14 19:57                                               ` Jason Gunthorpe
2015-07-14 19:58                                             ` Steve Wise
2015-07-14 19:58                                               ` Steve Wise
2015-07-14 20:41                                               ` Jason Gunthorpe
2015-07-14 20:41                                                 ` Jason Gunthorpe
2015-07-14 20:51                                                 ` Steve Wise
2015-07-14 20:51                                                   ` Steve Wise
2015-07-14 21:01                                                   ` Steve Wise
2015-07-14 21:01                                                     ` Steve Wise
2015-07-14 21:14                                                     ` Jason Gunthorpe
2015-07-14 21:14                                                       ` Jason Gunthorpe
2015-07-23 18:53                                               ` Hefty, Sean
2015-07-23 18:53                                                 ` Hefty, Sean
2015-07-23 19:03                                                 ` Steve Wise
2015-07-23 19:03                                                   ` Steve Wise
2015-07-23 23:30                                                   ` Hefty, Sean
2015-07-23 23:30                                                     ` Hefty, Sean
2015-07-23 23:53                                                     ` Jason Gunthorpe
2015-07-23 23:53                                                       ` Jason Gunthorpe
2015-07-24  0:18                                                       ` Hefty, Sean
2015-07-24  0:18                                                         ` Hefty, Sean
2015-07-24  4:46                                                         ` Jason Gunthorpe
2015-07-09  8:47                           ` Sagi Grimberg
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
2015-07-09 17:01                               ` Jason Gunthorpe
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
2015-07-14  9:10                                       ` Sagi Grimberg
2015-07-14  9:10                                         ` Sagi Grimberg
2015-07-14 15:36                                         ` 'Christoph Hellwig'
2015-07-14 15:36                                           ` 'Christoph Hellwig'
2015-07-14 15:47                                           ` Tom Talpey
2015-07-14 15:47                                             ` Tom Talpey
2015-07-14 16:22                                           ` Jason Gunthorpe
2015-07-14 16:22                                             ` Jason Gunthorpe
2015-07-14  7:37                                     ` 'Christoph Hellwig'
2015-07-14  9:22                                       ` Sagi Grimberg
2015-07-14 12:12                                         ` Tom Talpey
2015-07-14 12:12                                           ` Tom Talpey
2015-07-14 13:23                                           ` Sagi Grimberg
2015-07-14 14:45                                         ` Steve Wise
2015-07-14 14:45                                           ` Steve Wise
2015-07-14 15:40                                         ` 'Christoph Hellwig'
2015-07-14 15:40                                           ` 'Christoph Hellwig'
2015-07-08  8:11               ` 'Christoph Hellwig'
2015-07-06  7:58   ` Sagi Grimberg
2015-07-06  7:58     ` Sagi Grimberg
2015-07-06 14:39     ` Steve Wise
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
2015-07-05 23:22 ` [PATCH V3 3/5] RDMA/isert: " Steve Wise
2015-07-05 23:22   ` Steve Wise
2015-07-05 23:22 ` [PATCH V3 4/5] svcrdma: " Steve Wise
2015-07-05 23:22   ` Steve Wise
2015-07-05 23:22 ` [PATCH V3 5/5] xprtrdma: " Steve Wise
2015-07-05 23:22   ` Steve Wise
2015-07-06  5:25 ` [PATCH V3 0/5] Transport-independent MRs Christoph Hellwig
2015-07-06  5:25   ` Christoph Hellwig
2015-07-06 14:24   ` Steve Wise
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.