SMB3 and RDMA support

Richard Sharpe realrichardsharpe at
Sun May 18 15:58:06 MDT 2014

On Sun, May 18, 2014 at 1:29 PM, Michael Adam <obnox at> wrote:
> The purpose of forking as I intended it would be to take the
> established RDMA connection with it and do the RDMA for the
> connection from the child daemon.

OK. That was not how I was intending it.

> What would be the benefit of forking if all RDMA traffic
> still goes through the main daemon?
>> > Forking without fd-passing gives us one rdma-proxy-daemon per
>> > rdma-connection. The ideal solution would (or might) be the
>> > solution where there is no proxy daemon at all any more and
>> > the rdma traffic is done by the initial smbd process for the
>> > client.
>> I don't understand the comments about one RDMA deamon per smbd.
>> I was not suggesting that
> No I was not implying that you suggested something.
> I was explaining that, when we can fork but can't afterwards
> fd-pass the rdma-connection to the smbd process, we are stuck
> not with one rdma-proxy per smbd but with one rdma-proxy per
> rdma connection.

OK, I understand better now.

>> and it cannot be supported by the user-level RDMA
>> support in Linux or FreeBSD in any case.
> Why is that? I don't understand it.

My statement was directed at the concept of passing RDMA connections
around, which I now see you were not suggesting.

>> >> 5. The smbd-d forks an smbd (the smbd-d is really just an smbd
>> >> anyhow), and communicates with this child via a UNIX-domain socket
>> >> (transfers the SMB requests and responses via this UNIX-domain
>> >> socket.)
>> >
>> > No! The smbd-d does not fork a child. (At least not in the
>> > approach we discussed since we assumed that libibverbs can't
>> > cope with forking established rdma connections.)
>> That was not the intent. The child process would do no RDMA requests,
>> and would have been protected by ibv_fork_init().
> I think I don't quite understand your thinking yet.
> It was definitely my intent to let the child process do RDMA.

I have changed my mind about ibv_fork_init as I mentioned in my other
response. I think it is too risky at this stage, so we will have to
have a single, separate, process doing the RDMA operations ... I will
redraw the diagram to explain what I mean, and it should be closer to
what I think you described earlier.

Richard Sharpe

More information about the samba-technical mailing list