* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <20150313211124.22471.14517.stgit-FYjufvaPoItvLzlybtyyYzGyq/o6K9yX@public.gmane.org> @ 2015-05-05 15:44 ` Christoph Hellwig [not found] ` <20150505154411.GA16729-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 0 siblings, 1 reply; 18+ messages in thread From: Christoph Hellwig @ 2015-05-05 15:44 UTC (permalink / raw) To: Chuck Lever Cc: linux-nfs-u79uwXL29TY76Z2rM5mHXA, linux-rdma-u79uwXL29TY76Z2rM5mHXA On Fri, Mar 13, 2015 at 05:21:17PM -0400, Chuck Lever wrote: > This is a series of client-side patches for NFS/RDMA. In preparation > for increasing the transport credit limit and maximum rsize/wsize, > I've re-factored the memory registration logic into separate files, > invoked via a method API. Just curious if you ever though of moving this into the generic rdma layer? I've been working on a rdma based storage driver recently, and the various different memory registration methods are a complete pain in the ass, and impossible to test in and ULD without havin access to all kinds of different hardware. And from I see we litterly dont use them much different from the generic dma mapping API helpers (at a very high level) so it seems it should be easy to move a slightly expanded version of your API to the core code. -- 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 ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <20150505154411.GA16729-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <20150505154411.GA16729-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> @ 2015-05-05 16:04 ` Chuck Lever [not found] ` <5E1B32EA-9803-49AA-856D-BF0E1A5DFFF4-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 18+ messages in thread From: Chuck Lever @ 2015-05-05 16:04 UTC (permalink / raw) To: Christoph Hellwig Cc: Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On May 5, 2015, at 11:44 AM, Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> wrote: > On Fri, Mar 13, 2015 at 05:21:17PM -0400, Chuck Lever wrote: >> This is a series of client-side patches for NFS/RDMA. In preparation >> for increasing the transport credit limit and maximum rsize/wsize, >> I've re-factored the memory registration logic into separate files, >> invoked via a method API. > > Just curious if you ever though of moving this into the generic > rdma layer? Not really. The new files are really just shims that adapt the RPC/RDMA transport to memory registration verbs. There’s only a few hundred lines per registration mode, and it’s all fairly specific to RPC/RDMA. > I've been working on a rdma based storage driver recently, and the > various different memory registration methods are a complete pain in the > ass, and impossible to test in and ULD without havin access to all kinds > of different hardware. Agree that the test matrix grows exponentially in complexity and expense as more MR modes are introduced. We have strategies for managing this when there’s a community involved, but when there’s just one developer it’s a challenge. > And from I see we litterly dont use them much different from the generic > dma mapping API helpers (at a very high level) so it seems it should > be easy to move a slightly expanded version of your API to the core > code. IMO FRWR is the only registration mode that has legs for the long term, and is specifically designed for storage. If you are not working on a legacy piece of code that has to support older HCAs, why not stay with FRWR? -- Chuck Lever chuck[dot]lever[at]oracle[dot]com -- 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 ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <5E1B32EA-9803-49AA-856D-BF0E1A5DFFF4-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <5E1B32EA-9803-49AA-856D-BF0E1A5DFFF4-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org> @ 2015-05-05 17:25 ` Christoph Hellwig [not found] ` <20150505172540.GA19442-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 0 siblings, 1 reply; 18+ messages in thread From: Christoph Hellwig @ 2015-05-05 17:25 UTC (permalink / raw) To: Chuck Lever; +Cc: Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On Tue, May 05, 2015 at 12:04:00PM -0400, Chuck Lever wrote: > > Just curious if you ever though of moving this into the generic > > rdma layer? > > Not really. The new files are really just shims that adapt the RPC/RDMA > transport to memory registration verbs. There?s only a few hundred lines > per registration mode, and it?s all fairly specific to RPC/RDMA. While it's using RPC/RDMA specific data structures it basically abstracts out the action of mapping a number of pages onto the rdma hardware. There isn't a whole lot of interaction with the actual sunrpc layer except for a few hardcoded limits. Btw, this is not a critique of the code, it's an obvious major improvement of what was there before, it justs seems like it would be nice to move it up to a higher layer. > > And from I see we litterly dont use them much different from the generic > > dma mapping API helpers (at a very high level) so it seems it should > > be easy to move a slightly expanded version of your API to the core > > code. > > IMO FRWR is the only registration mode that has legs for the long term, > and is specifically designed for storage. > > If you are not working on a legacy piece of code that has to support > older HCAs, why not stay with FRWR? The raw FRWR API seems like an absolute nightmare, and I'm bound to get it wrong at first :) This is only half joking, but despite that it's the first target for sure. It's just very frustrating that there is no usable common API. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <20150505172540.GA19442-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <20150505172540.GA19442-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> @ 2015-05-05 18:14 ` Tom Talpey [not found] ` <55490886.4070502-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org> 2015-05-06 12:15 ` Sagi Grimberg 1 sibling, 1 reply; 18+ messages in thread From: Tom Talpey @ 2015-05-05 18:14 UTC (permalink / raw) To: Christoph Hellwig, Chuck Lever Cc: Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On 5/5/2015 1:25 PM, Christoph Hellwig wrote: > On Tue, May 05, 2015 at 12:04:00PM -0400, Chuck Lever wrote: >> IMO FRWR is the only registration mode that has legs for the long term, >> and is specifically designed for storage. >> >> If you are not working on a legacy piece of code that has to support >> older HCAs, why not stay with FRWR? > > The raw FRWR API seems like an absolute nightmare, and I'm bound to > get it wrong at first :) This is only half joking, but despite that > it's the first target for sure. It's just very frustrating that there > is no usable common API. Memory registration is quite subtle with dependencies on the memory being registered (user, kernel, physical), the requirements of the upper layer (storage, etc) and the scope of the registration (scatter/ gather, memory protection, etc). I don't think you *want* a common API. As you might guess, I can go on at length about this. :-) But, if you have a kernel service, the ability to pin memory, and you want it to go fast, you want FRWR. Tom. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <55490886.4070502-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <55490886.4070502-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org> @ 2015-05-05 19:10 ` Christoph Hellwig [not found] ` <20150505191012.GA21164-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 0 siblings, 1 reply; 18+ messages in thread From: Christoph Hellwig @ 2015-05-05 19:10 UTC (permalink / raw) To: Tom Talpey Cc: Christoph Hellwig, Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On Tue, May 05, 2015 at 02:14:30PM -0400, Tom Talpey wrote: > As you might guess, I can go on at length about this. :-) But, if > you have a kernel service, the ability to pin memory, and you > want it to go fast, you want FRWR. Basically most in-kernel consumers seem to have the same requirements: - register a struct page, which can be kernel or user memory (it's probably pinned in your Terms, but we don't really use that much in kernelspace). - In many but not all cases we might need an offset/length for each page (think struct bvec, paged sk_buffs, or scatterlists of some sort), in other an offset/len for the whole set of pages is fine, but that's a superset of the one above. - we usually want it to be as fast as possible While my grep skills aren't the best I can't really find an in-kernel user that doesn't fit the above, although I might have missed some long-term registrations where we don't really care about the fast part. -- 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 ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <20150505191012.GA21164-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <20150505191012.GA21164-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> @ 2015-05-05 20:57 ` Tom Talpey [not found] ` <55492ED3.7000507-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org> 0 siblings, 1 reply; 18+ messages in thread From: Tom Talpey @ 2015-05-05 20:57 UTC (permalink / raw) To: Christoph Hellwig Cc: Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On 5/5/2015 3:10 PM, Christoph Hellwig wrote: > On Tue, May 05, 2015 at 02:14:30PM -0400, Tom Talpey wrote: >> As you might guess, I can go on at length about this. :-) But, if >> you have a kernel service, the ability to pin memory, and you >> want it to go fast, you want FRWR. > > Basically most in-kernel consumers seem to have the same requirements: > > - register a struct page, which can be kernel or user memory (it's > probably pinned in your Terms, but we don't really use that much in > kernelspace). Actually, I strongly disagree that the in-kernel consumers want to register a struct page. They want to register a list of pages, often a rather long one. They want this because it allows the RDMA layer to address the list with a single memory handle. This is where things get tricky. So the "pinned" or "wired" term is because in order to do RDMA, the page needs to have a fixed mapping to this handle. Usually, that means a physical address. There are some new approaches that allow the NIC to raise a fault and/or walk kernel page tables, but one way or the other the page had better be resident. RDMA NICs, generally speaking, don't buffer in-flight RDMA data, nor do you want them to. > - In many but not all cases we might need an offset/length for each > page (think struct bvec, paged sk_buffs, or scatterlists of some > sort), in other an offset/len for the whole set of pages is fine, > but that's a superset of the one above. Yep, RDMA calls this FBO and length, and further, the protocol requires that the data itself be contiguous within the registration, that is, the FBO can be non-zero, but no other holes be present. > - we usually want it to be as fast as possible In the case of file protocols such as NFS/RDMA and SMB Direct, as well as block protocols such as iSER, these registrations are set up and torn down on a per-I/O basis, in order to protect the data from misbehaving peers or misbehaving hardware. So to me as a storage protocol provider, "usually" means "always". I totally get where you're coming from, my main question is whether it's possible to nail the requirements of some useful common API. It has been tried before, shall I say. Tom. -- 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 ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <55492ED3.7000507-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <55492ED3.7000507-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org> @ 2015-05-05 21:06 ` Christoph Hellwig [not found] ` <20150505210627.GA5941-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 0 siblings, 1 reply; 18+ messages in thread From: Christoph Hellwig @ 2015-05-05 21:06 UTC (permalink / raw) To: Tom Talpey Cc: Christoph Hellwig, Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On Tue, May 05, 2015 at 04:57:55PM -0400, Tom Talpey wrote: > Actually, I strongly disagree that the in-kernel consumers want to > register a struct page. They want to register a list of pages, often > a rather long one. They want this because it allows the RDMA layer to > address the list with a single memory handle. This is where things > get tricky. Yes, I agree - my wording was wrong and if you look at the next point it should be obvious that I meant multiple struct pages. > So the "pinned" or "wired" term is because in order to do RDMA, the > page needs to have a fixed mapping to this handle. Usually, that means > a physical address. There are some new approaches that allow the NIC > to raise a fault and/or walk kernel page tables, but one way or the > other the page had better be resident. RDMA NICs, generally speaking, > don't buffer in-flight RDMA data, nor do you want them to. But that whole painpoint only existist for userspace ib verbs consumers. And in-kernel consumer fits into the "pinned" or "wired" categegory, as any local DMA requires it. > > - In many but not all cases we might need an offset/length for each > > page (think struct bvec, paged sk_buffs, or scatterlists of some > > sort), in other an offset/len for the whole set of pages is fine, > > but that's a superset of the one above. > > Yep, RDMA calls this FBO and length, and further, the protocol requires > that the data itself be contiguous within the registration, that is, the > FBO can be non-zero, but no other holes be present. The contiguous requirements isn't something we can alway guarantee. While a lot of I/O will have that form the form where there are holes can happen, although it's not common. > > - we usually want it to be as fast as possible > > In the case of file protocols such as NFS/RDMA and SMB Direct, as well > as block protocols such as iSER, these registrations are set up and > torn down on a per-I/O basis, in order to protect the data from > misbehaving peers or misbehaving hardware. So to me as a storage > protocol provider, "usually" means "always". Yes. As I said I haven't actually found anything yet that doesn't fit the pattern, but the RDMA in-kernel API is such a mess that I didn't want to put my hand in the fire and say always. > I totally get where you're coming from, my main question is whether > it's possible to nail the requirements of some useful common API. > It has been tried before, shall I say. Do you have any information on these attempts and why the failed? Note that the only interesting ones would be for in-kernel consumers. Userspace verbs are another order of magnitude more problems, so they're not too interesting. -- 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 ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <20150505210627.GA5941-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <20150505210627.GA5941-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> @ 2015-05-05 21:32 ` Tom Talpey [not found] ` <554936E5.80607-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org> 2015-05-06 7:09 ` Bart Van Assche 1 sibling, 1 reply; 18+ messages in thread From: Tom Talpey @ 2015-05-05 21:32 UTC (permalink / raw) To: Christoph Hellwig Cc: Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On 5/5/2015 5:06 PM, Christoph Hellwig wrote: > On Tue, May 05, 2015 at 04:57:55PM -0400, Tom Talpey wrote: >> Actually, I strongly disagree that the in-kernel consumers want to >> register a struct page. They want to register a list of pages, often >> a rather long one. They want this because it allows the RDMA layer to >> address the list with a single memory handle. This is where things >> get tricky. > > Yes, I agree - my wording was wrong and if you look at the next point > it should be obvious that I meant multiple struct pages. Ok sounds good. > >> So the "pinned" or "wired" term is because in order to do RDMA, the >> page needs to have a fixed mapping to this handle. Usually, that means >> a physical address. There are some new approaches that allow the NIC >> to raise a fault and/or walk kernel page tables, but one way or the >> other the page had better be resident. RDMA NICs, generally speaking, >> don't buffer in-flight RDMA data, nor do you want them to. > > But that whole painpoint only existist for userspace ib verbs consumers. > And in-kernel consumer fits into the "pinned" or "wired" categegory, > as any local DMA requires it. True, but I think there's a bit more to it. For example, the buffer cache is pinned, but the data on the page isn't dedicated to an i/o, it's shared among file-layer stuff. Of course, a file-layer RDMA protocol needs to play by those rules, but I'll use it as a warning that it's not always simple. Totally agree that kernel memory handling is easier than userspace, and also that userspace APIs need to have appropriate kernel setup. Note, this wasn't always the case. In the 2.4 days, when we first coded the NFS/RDMA client, there was some rather ugly stuff. >>> - In many but not all cases we might need an offset/length for each >>> page (think struct bvec, paged sk_buffs, or scatterlists of some >>> sort), in other an offset/len for the whole set of pages is fine, >>> but that's a superset of the one above. >> >> Yep, RDMA calls this FBO and length, and further, the protocol requires >> that the data itself be contiguous within the registration, that is, the >> FBO can be non-zero, but no other holes be present. > > The contiguous requirements isn't something we can alway guarantee. > While a lot of I/O will have that form the form where there are holes > can happen, although it's not common. Yeah, and the important takeaway is that a memory registration API can't hide this - meaning, the upper layer needs to address it (hah!). Often, once an upper layer has to do this, it can do better by doing it itself. But that's perhaps too philosophical here. Let me just say that transparency has proved to be the enemy of performance. > >>> - we usually want it to be as fast as possible >> >> In the case of file protocols such as NFS/RDMA and SMB Direct, as well >> as block protocols such as iSER, these registrations are set up and >> torn down on a per-I/O basis, in order to protect the data from >> misbehaving peers or misbehaving hardware. So to me as a storage >> protocol provider, "usually" means "always". > > Yes. As I said I haven't actually found anything yet that doesn't fit > the pattern, but the RDMA in-kernel API is such a mess that I didn't > want to put my hand in the fire and say always. > >> I totally get where you're coming from, my main question is whether >> it's possible to nail the requirements of some useful common API. >> It has been tried before, shall I say. > > Do you have any information on these attempts and why the failed? Note > that the only interesting ones would be for in-kernel consumers. > Userspace verbs are another order of magnitude more problems, so they're > not too interesting. Hmm, most of these are userspace API experiences, and I would not be so quick as to dismiss their applicability, or their lessons. There was the old "kvipl" (kernel VI Provider Library), which had certain simple memreg functions, but I'm not sure that API was ever in the public domain (it was Intel's). There's kDAPL, based on DAPL which is actually successful but exposes a somewhat different memory registration model. And Solaris has an abstraction, which I haven't looked at in years. Up a layer, you might look into Portals, the many MPI implementations, and maybe even some network shared memory stuff like clusters. Most of these have been implemented as layers atop verbs (among others). Tom. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <554936E5.80607-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <554936E5.80607-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org> @ 2015-05-05 22:38 ` Jason Gunthorpe [not found] ` <20150505223855.GA7696-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> 2015-05-06 7:33 ` Christoph Hellwig 1 sibling, 1 reply; 18+ messages in thread From: Jason Gunthorpe @ 2015-05-05 22:38 UTC (permalink / raw) To: Tom Talpey Cc: Christoph Hellwig, Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On Tue, May 05, 2015 at 05:32:21PM -0400, Tom Talpey wrote: > >Do you have any information on these attempts and why the failed? Note > >that the only interesting ones would be for in-kernel consumers. > >Userspace verbs are another order of magnitude more problems, so they're > >not too interesting. > > Hmm, most of these are userspace API experiences, and I would not be > so quick as to dismiss their applicability, or their lessons. The specific use-case of a RDMA to/from a logical linear region broken up into HW pages is incredibly kernel specific, and very friendly to hardware support. Heck, on modern systems 100% of these requirements can be solved just by using the IOMMU. No need for the HCA at all. (HCA may be more performant, of course) This is a huge pain for everyone. ie The Lustre devs were talking about how Lustre is not performant on newer HCAs because their code doesn't support the new MR scheme. It makes sense to me to have a dedicated API for this work load: 'post outbound rdma send/write of page region' 'prepare inbound rdma write of page region' 'post rdma read, result into page region' 'complete X' I'd love to see someone propose some patches :) Jason -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <20150505223855.GA7696-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <20150505223855.GA7696-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> @ 2015-05-06 0:16 ` Tom Talpey [not found] ` <55495D41.5090502-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org> 2015-05-06 7:01 ` Bart Van Assche 1 sibling, 1 reply; 18+ messages in thread From: Tom Talpey @ 2015-05-06 0:16 UTC (permalink / raw) To: Jason Gunthorpe Cc: Christoph Hellwig, Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA, Steve French I'm adding Steve French because I'm about to talk about SMB. On 5/5/2015 6:38 PM, Jason Gunthorpe wrote: > On Tue, May 05, 2015 at 05:32:21PM -0400, Tom Talpey wrote: > >>> Do you have any information on these attempts and why the failed? Note >>> that the only interesting ones would be for in-kernel consumers. >>> Userspace verbs are another order of magnitude more problems, so they're >>> not too interesting. >> >> Hmm, most of these are userspace API experiences, and I would not be >> so quick as to dismiss their applicability, or their lessons. > > The specific use-case of a RDMA to/from a logical linear region broken > up into HW pages is incredibly kernel specific, and very friendly to > hardware support. > > Heck, on modern systems 100% of these requirements can be solved just > by using the IOMMU. No need for the HCA at all. (HCA may be more > performant, of course) I don't agree on "100%", because IOMMUs don't have the same protection attributes as RDMA adapters (local R, local W, remote R, remote W). Also they don't support handles for page lists quite like STags/RMRs, so they require additional (R)DMA scatter/gather. But, I agree with your point that they translate addresses just great. > This is a huge pain for everyone. ie The Lustre devs were talking > about how Lustre is not performant on newer HCAs because their code > doesn't support the new MR scheme. > > It makes sense to me to have a dedicated API for this work load: > > 'post outbound rdma send/write of page region' A bunch of writes followed by a send is a common sequence, but not very complex (I think). > 'prepare inbound rdma write of page region' This is memory registration, with remote writability. That's what the rpcrdma_register_external() API in xprtrdma/verbs.c does. It takes a private rpcrdma structure, but it supports multiple memreg strategies and pretty much does what you expect. I'm sure someone could abstract it upward. > 'post rdma read, result into page region' The svcrdma stuff in the NFS RDMA server has this, it's called from the XDR decoding. > 'complete X' This is trickier - invalidation has many interesting error cases. But, on a sunny day with the breeze at our backs, sure. > I'd love to see someone propose some patches :) I'd like to mention something else. Many upper layers basically want a socket, but memory registration and explicit RDMA break that. There have been some relatively awful solutions to make it all transparent, let's not go there. The RPC/RDMA protocol was designed to tuck underneath RPC and XDR, so, while not socket-like, it allowed RPC to hide RDMA from (for example) NFS. NFS therefore did not have to change. I thought transparency was a good idea at the time. SMB Direct, in Windows, presents a socket-like interface for messaging (connection, send/receive, etc), but makes memory registration and RDMA Read / Write explicit. It's the SMB3 protocol that drives RDMA, which it does only for SMB_READ and SMB_WRITE. The SMB3 upper layer knows it's on an RDMA-capable connection, and "sets up" the transfer by explicitly deciding to do an RDMA, which it does by asking the SMB Direct driver to register memory. It then gets back one or more handles, which it sends to the server in the SMB3 layer message. The server performs the RDMA, and the reply indicates the result. After which, the SMB3 upper layer explicitly de-registers. If Linux upper layers considered adopting a similar approach by carefully inserting RDMA operations conditionally, it can make the lower layer's job much more efficient. And, efficiency is speed. And in the end, the API throughout the stack will be simpler. MHO. Tom. -- 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 ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <55495D41.5090502-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <55495D41.5090502-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org> @ 2015-05-06 16:20 ` Jason Gunthorpe 0 siblings, 0 replies; 18+ messages in thread From: Jason Gunthorpe @ 2015-05-06 16:20 UTC (permalink / raw) To: Tom Talpey Cc: Christoph Hellwig, Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA, Steve French On Tue, May 05, 2015 at 08:16:01PM -0400, Tom Talpey wrote: > >The specific use-case of a RDMA to/from a logical linear region broken > >up into HW pages is incredibly kernel specific, and very friendly to > >hardware support. > > > >Heck, on modern systems 100% of these requirements can be solved just > >by using the IOMMU. No need for the HCA at all. (HCA may be more > >performant, of course) > > I don't agree on "100%", because IOMMUs don't have the same protection > attributes as RDMA adapters (local R, local W, remote R, remote W). No, you do get protection - the IOMMU isn't the only resource, it would still have to be combined with several pre-setup MR's that have the proper protection attributes. You'd map the page list into the address space that is covered by a MR that has the protection attributes needed. > Also they don't support handles for page lists quite like > STags/RMRs, so they require additional (R)DMA scatter/gather. But, I > agree with your point that they translate addresses just great. ??? the entire point of using the IOMMU in a context like this is to linearize the page list into DMA'able address. How could you ever need to scatter/gather when your memory is linear? > >'post outbound rdma send/write of page region' > > A bunch of writes followed by a send is a common sequence, but not > very complex (I think). So, I wasn't clear, I mean a general API that can post a SEND or RDMA WRITE using a logically linear page list as the data source. So this results in one of: 1) A SEND with a gather list 2) A SEND with a temporary linearized MR 3) A series of RDMA WRITE with gather lists 4) A RDMA WRITE with a temporary linearized MR Picking one depends on the performance of the HCA and the various features it supports. Even just the really simple options of #1 and #3 become a bit more complex when you want to take advantage of transparent huge pages to reduce gather list length. For instance, deciding when to trade off 3 vs 4 is going to be very driver specific.. > >'prepare inbound rdma write of page region' > > This is memory registration, with remote writability. That's what > the rpcrdma_register_external() API in xprtrdma/verbs.c does. It > takes a private rpcrdma structure, but it supports multiple memreg > strategies and pretty much does what you expect. I'm sure someone > could abstract it upward. Right, most likely an implementation would just pull the NFS code into the core, I think it is the broadest version we have? > >'complete X' > > This is trickier - invalidation has many interesting error cases. > But, on a sunny day with the breeze at our backs, sure. I don't mean send+invalidate, this is the 'free' for the 'alloc' the above APIs might need (ie the temporary MR). You can't fail to free the MR - that would be an insane API :) > If Linux upper layers considered adopting a similar approach by > carefully inserting RDMA operations conditionally, it can make > the lower layer's job much more efficient. And, efficiency is speed. > And in the end, the API throughout the stack will be simpler. No idea for Linux. It seems to me most of the use cases we are talking about here not actually assuming a socket, NFS-RDMA, SRP, iSER, Lustre are all explicitly driving verbs and explicity working with pages lists for their high speed side. Does that mean we are already doing what you are talking about? Jason -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <20150505223855.GA7696-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org> 2015-05-06 0:16 ` Tom Talpey @ 2015-05-06 7:01 ` Bart Van Assche [not found] ` <5549BC33.30905-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org> 1 sibling, 1 reply; 18+ messages in thread From: Bart Van Assche @ 2015-05-06 7:01 UTC (permalink / raw) To: Jason Gunthorpe, Tom Talpey Cc: Christoph Hellwig, Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On 05/06/15 00:38, Jason Gunthorpe wrote: > Heck, on modern systems 100% of these requirements can be solved just > by using the IOMMU. No need for the HCA at all. (HCA may be more > performant, of course) Hello Jason, Any performance tests I have run so far with the IOMMU enabled show much worse results than the same test with the IOMMU disabled. The perf tool learned me that this performance difference is due to lock contention caused by the IOMMU kernel code. I have not yet tried to verify whether this is an implementation issue or something fundamental. This is why I'm not enthusiast about any approach that relies on the IOMMU being enabled. Bart. -- 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 ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <5549BC33.30905-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <5549BC33.30905-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org> @ 2015-05-06 16:38 ` Jason Gunthorpe 0 siblings, 0 replies; 18+ messages in thread From: Jason Gunthorpe @ 2015-05-06 16:38 UTC (permalink / raw) To: Bart Van Assche Cc: Tom Talpey, Christoph Hellwig, Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On Wed, May 06, 2015 at 09:01:07AM +0200, Bart Van Assche wrote: > On 05/06/15 00:38, Jason Gunthorpe wrote: > >Heck, on modern systems 100% of these requirements can be solved just > >by using the IOMMU. No need for the HCA at all. (HCA may be more > >performant, of course) > > Hello Jason, > > Any performance tests I have run so far with the IOMMU enabled show > much worse results than the same test with the IOMMU disabled. The > perf tool learned me that this performance difference is due to lock > contention caused by the IOMMU kernel code. I have not yet tried to > verify whether this is an implementation issue or something > fundamental. I'm not surprised, I think that is well known. Just to be clear I'm not saying we should rely on the IOMMU, or even implement anything that uses it - but as a thought exercise, the fact we could implement a page list API entirely with the dumbest HCA and the IOMMU suggests strongly to me it is a sane API direction to look at. If you did have a dumb HCA, using the IOMMU is probably alot faster that doing a heavy MR registration or doing operations 'page at a time'. Which would be slower than using a smart HCA with the IOMMU turned off, for that work load. Jason -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <554936E5.80607-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org> 2015-05-05 22:38 ` Jason Gunthorpe @ 2015-05-06 7:33 ` Christoph Hellwig 1 sibling, 0 replies; 18+ messages in thread From: Christoph Hellwig @ 2015-05-06 7:33 UTC (permalink / raw) To: Tom Talpey Cc: Christoph Hellwig, Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On Tue, May 05, 2015 at 05:32:21PM -0400, Tom Talpey wrote: > >But that whole painpoint only existist for userspace ib verbs consumers. > >And in-kernel consumer fits into the "pinned" or "wired" categegory, > >as any local DMA requires it. > > True, but I think there's a bit more to it. For example, the buffer > cache is pinned, but the data on the page isn't dedicated to an i/o, > it's shared among file-layer stuff. Of course, a file-layer RDMA > protocol needs to play by those rules, but I'll use it as a warning > that it's not always simple. Actually there is no buffer cache anymore, and the page cache now keeps pages under writeback stable, that is doesn't allow modifications while the page is written back. Not that it matters, as both direct I/O for filesystems or SG_IO for block devices allows I/O to user pages that can be modified while dma is in progress. So pretty much every in kernel user has to deal with this case, maybe with the exception of network protocols. > >The contiguous requirements isn't something we can alway guarantee. > >While a lot of I/O will have that form the form where there are holes > >can happen, although it's not common. > > Yeah, and the important takeaway is that a memory registration API > can't hide this - meaning, the upper layer needs to address it (hah!). > Often, once an upper layer has to do this, it can do better by doing > it itself. But that's perhaps too philosophical here. Let me just > say that transparency has proved to be the enemy of performance. Yes, I don't think that something that should be worked around at an API at a low level. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <20150505210627.GA5941-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 2015-05-05 21:32 ` Tom Talpey @ 2015-05-06 7:09 ` Bart Van Assche [not found] ` <5549BE30.8020505-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org> 1 sibling, 1 reply; 18+ messages in thread From: Bart Van Assche @ 2015-05-06 7:09 UTC (permalink / raw) To: Christoph Hellwig, Tom Talpey Cc: Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On 05/05/15 23:06, Christoph Hellwig wrote: > The contiguous requirements isn't something we can alway guarantee. > While a lot of I/O will have that form the form where there are holes > can happen, although it's not common. Indeed. That is why there is code in the SRP initiator that uses multiple FRWR registrations when a discontiguous SG-list is passed to that driver by the SCSI mid-layer. Some time ago I had posted a test program that makes the SCSI mid-layer submit a discontiguous I/O request to a SCSI LLD (see also https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg21224.html). Bart. -- 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 ^ permalink raw reply [flat|nested] 18+ messages in thread
[parent not found: <5549BE30.8020505-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>]
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <5549BE30.8020505-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org> @ 2015-05-06 7:29 ` Christoph Hellwig 0 siblings, 0 replies; 18+ messages in thread From: Christoph Hellwig @ 2015-05-06 7:29 UTC (permalink / raw) To: Bart Van Assche Cc: Christoph Hellwig, Tom Talpey, Chuck Lever, Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On Wed, May 06, 2015 at 09:09:36AM +0200, Bart Van Assche wrote: > On 05/05/15 23:06, Christoph Hellwig wrote: > >The contiguous requirements isn't something we can alway guarantee. > >While a lot of I/O will have that form the form where there are holes > >can happen, although it's not common. > > Indeed. That is why there is code in the SRP initiator that uses multiple > FRWR registrations when a discontiguous SG-list is passed to that driver by > the SCSI mid-layer. Some time ago I had posted a test program that makes the > SCSI mid-layer submit a discontiguous I/O request to a SCSI LLD (see also > https://www.mail-archive.com/linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org/msg21224.html). Note that block layer now has the (fairly misnamed) QUEUE_FLAG_SG_GAPS flag, which ensures drivers don't see S/G lists like this one. I haven't ever seen normal TYPE_FS producers submit bios like that, so in practice the effect is to reject vectored SG_IO uses like your test program. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 [not found] ` <20150505172540.GA19442-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org> 2015-05-05 18:14 ` Tom Talpey @ 2015-05-06 12:15 ` Sagi Grimberg 1 sibling, 0 replies; 18+ messages in thread From: Sagi Grimberg @ 2015-05-06 12:15 UTC (permalink / raw) To: Christoph Hellwig, Chuck Lever Cc: Linux NFS Mailing List, linux-rdma-u79uwXL29TY76Z2rM5mHXA On 5/5/2015 8:25 PM, Christoph Hellwig wrote: > On Tue, May 05, 2015 at 12:04:00PM -0400, Chuck Lever wrote: >>> Just curious if you ever though of moving this into the generic >>> rdma layer? >> >> Not really. The new files are really just shims that adapt the RPC/RDMA >> transport to memory registration verbs. There?s only a few hundred lines >> per registration mode, and it?s all fairly specific to RPC/RDMA. > > While it's using RPC/RDMA specific data structures it basically > abstracts out the action of mapping a number of pages onto the rdma > hardware. There isn't a whole lot of interaction with the actual > sunrpc layer except for a few hardcoded limits. > > Btw, this is not a critique of the code, it's an obvious major > improvement of what was there before, it justs seems like it would be > nice to move it up to a higher layer. > >>> And from I see we litterly dont use them much different from the generic >>> dma mapping API helpers (at a very high level) so it seems it should >>> be easy to move a slightly expanded version of your API to the core >>> code. >> >> IMO FRWR is the only registration mode that has legs for the long term, >> and is specifically designed for storage. >> >> If you are not working on a legacy piece of code that has to support >> older HCAs, why not stay with FRWR? Hey Christoph, I agree here, FMRs (and FMR pools) are not supported over VFs. Also, I've seen some unpredictable performance in certain workloads because the fmr pool maintains a flush thread that executes a HW sync (terribly blocking on mlx4 devices) when hitting some dirty_watermark... If you are writing a driver, I suggest to stick FRWR as well. > > The raw FRWR API seems like an absolute nightmare, and I'm bound to > get it wrong at first :) This is only half joking, but despite that > it's the first target for sure. It's just very frustrating that there > is no usable common API. The FRWR API is a work request interface. The advantage here is the option to concatenate it with a send/rdma work request and save an extra send queue lock and more importantly a doorbell. This matters in high workloads. The iser target is doing this and I have a patch for the initiator code as well. I'm not sure that providing an API that allows you to do post-lists might be simpler... Sagi. -- 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 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1
@ 2015-03-13 21:26 Chuck Lever
0 siblings, 0 replies; 18+ messages in thread
From: Chuck Lever @ 2015-03-13 21:26 UTC (permalink / raw)
To: linux-rdma-u79uwXL29TY76Z2rM5mHXA
This is a series of client-side patches for NFS/RDMA. In preparation
for increasing the transport credit limit and maximum rsize/wsize,
I've re-factored the memory registration logic into separate files,
invoked via a method API.
Two optimizations appear in this series:
The old code pre-allocated 64 MRs for every RPC, and attached 64 MRs
to each RPC before posting it. The new code attaches just enough MRs
to handle each RPC. When no data payload chunk is needed, no MRs are
attached to the RPC. For modern HCAs, only one MR is needed for NFS
read or write data payloads.
The final patch in the series splits the rb_lock in two in order to
reduce lock contention.
The series is also available in the nfs-rdma-for-4.1 topic branch at
git://linux-nfs.org/projects/cel/cel-2.6.git
---
Chuck Lever (16):
xprtrdma: Display IPv6 addresses and port numbers correctly
xprtrdma: Perform a full marshal on retransmit
xprtrdma: Add vector of ops for each memory registration strategy
xprtrdma: Add a "max_payload" op for each memreg mode
xprtrdma: Add a "register_external" op for each memreg mode
xprtrdma: Add a "deregister_external" op for each memreg mode
xprtrdma: Add "init MRs" memreg op
xprtrdma: Add "reset MRs" memreg op
xprtrdma: Add "destroy MRs" memreg op
xprtrdma: Add "open" memreg op
xprtrdma: Handle non-SEND completions via a callout
xprtrdma: Acquire FMRs in rpcrdma_fmr_register_external()
xprtrdma: Acquire MRs in rpcrdma_register_external()
xprtrdma: Remove rpcrdma_ia::ri_memreg_strategy
xprtrdma: Make rpcrdma_{un}map_one() into inline functions
xprtrdma: Split rb_lock
include/linux/sunrpc/xprtrdma.h | 3
net/sunrpc/xprtrdma/Makefile | 3
net/sunrpc/xprtrdma/fmr_ops.c | 270 +++++++++++
net/sunrpc/xprtrdma/frwr_ops.c | 485 ++++++++++++++++++++
net/sunrpc/xprtrdma/physical_ops.c | 110 +++++
net/sunrpc/xprtrdma/rpc_rdma.c | 82 ++-
net/sunrpc/xprtrdma/transport.c | 65 ++-
net/sunrpc/xprtrdma/verbs.c | 856 +++---------------------------------
net/sunrpc/xprtrdma/xprt_rdma.h | 108 ++++-
9 files changed, 1096 insertions(+), 886 deletions(-)
create mode 100644 net/sunrpc/xprtrdma/fmr_ops.c
create mode 100644 net/sunrpc/xprtrdma/frwr_ops.c
create mode 100644 net/sunrpc/xprtrdma/physical_ops.c
--
Chuck Lever
--
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
^ permalink raw reply [flat|nested] 18+ messages in threadend of thread, other threads:[~2015-05-06 16:38 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20150313211124.22471.14517.stgit@manet.1015granger.net>
[not found] ` <20150313211124.22471.14517.stgit-FYjufvaPoItvLzlybtyyYzGyq/o6K9yX@public.gmane.org>
2015-05-05 15:44 ` [PATCH v1 00/16] NFS/RDMA patches proposed for 4.1 Christoph Hellwig
[not found] ` <20150505154411.GA16729-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-05-05 16:04 ` Chuck Lever
[not found] ` <5E1B32EA-9803-49AA-856D-BF0E1A5DFFF4-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2015-05-05 17:25 ` Christoph Hellwig
[not found] ` <20150505172540.GA19442-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-05-05 18:14 ` Tom Talpey
[not found] ` <55490886.4070502-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2015-05-05 19:10 ` Christoph Hellwig
[not found] ` <20150505191012.GA21164-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-05-05 20:57 ` Tom Talpey
[not found] ` <55492ED3.7000507-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2015-05-05 21:06 ` Christoph Hellwig
[not found] ` <20150505210627.GA5941-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-05-05 21:32 ` Tom Talpey
[not found] ` <554936E5.80607-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2015-05-05 22:38 ` Jason Gunthorpe
[not found] ` <20150505223855.GA7696-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-05-06 0:16 ` Tom Talpey
[not found] ` <55495D41.5090502-CLs1Zie5N5HQT0dZR+AlfA@public.gmane.org>
2015-05-06 16:20 ` Jason Gunthorpe
2015-05-06 7:01 ` Bart Van Assche
[not found] ` <5549BC33.30905-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-05-06 16:38 ` Jason Gunthorpe
2015-05-06 7:33 ` Christoph Hellwig
2015-05-06 7:09 ` Bart Van Assche
[not found] ` <5549BE30.8020505-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-05-06 7:29 ` Christoph Hellwig
2015-05-06 12:15 ` Sagi Grimberg
2015-03-13 21:26 Chuck Lever
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox