> -----Original Message----- > From: samba-technical [mailto:[email protected]] > On Behalf Of Long Li via samba-technical > Sent: Sunday, November 5, 2017 10:37 AM > To: Matthew Wilcox <[email protected]>; Pavel Shilovsky > <[email protected]> > Cc: linux-cifs <[email protected]>; Stephen Hemminger > <[email protected]>; [email protected]; samba-technical > <[email protected]>; Kernel Mailing List <linux- > [email protected]>; Steve French <[email protected]> > Subject: RE: [Patch v5 08/21] CIFS: SMBD: Upper layer reconnects to SMB > Direct session > > > -----Original Message----- > > From: Matthew Wilcox > > Sent: Wednesday, November 1, 2017 12:45 PM > > To: Pavel Shilovsky <[email protected]>; Long Li > > <[email protected]> > > Cc: Steve French <[email protected]>; linux-cifs <linux- > > [email protected]>; samba-technical > > <[email protected]>; > > Kernel Mailing List <[email protected]>; linux- > > [email protected]; Tom Talpey <[email protected]>; Stephen > > Hemminger <[email protected]>; Long Li <[email protected]> > > Subject: RE: [Patch v5 08/21] CIFS: SMBD: Upper layer reconnects to > > SMB Direct session > > > > From: Pavel Shilovsky [mailto:[email protected]] > > > 2017-10-18 16:09 GMT-07:00 Long Li <[email protected]>: > > > > From: Long Li <[email protected]> > > > > > > > > Do a reconnect on SMB Direct when it is used as the connection. > > > > Reconnect > > > can > > > > happen for many reasons and it's mostly the decision of SMB2 upper > > layer. > > > > > > > > Signed-off-by: Long Li <[email protected]> > > > > --- > > > > fs/cifs/connect.c | 7 +++++++ > > > > 1 file changed, 7 insertions(+) > > > > > > > > diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index > > > > 2c0b34a..8ca3c13 100644 > > > > --- a/fs/cifs/connect.c > > > > +++ b/fs/cifs/connect.c > > > > @@ -406,7 +406,14 @@ cifs_reconnect(struct TCP_Server_Info > > > > *server) > > > > > > > > /* we should try only the port we connected to before */ > > > > mutex_lock(&server->srv_mutex); > > > > +#ifdef CONFIG_CIFS_SMB_DIRECT > > > > + if (server->rdma) > > > > + rc = smbd_reconnect(server); > > > > + else > > > > + rc = generic_ip_connect(server); > > > > > > Minor: here and in other similar places we can remove #else part > > > below and put #endif before else block above. > > > > > > > +#else > > > > rc = generic_ip_connect(server); > > > > +#endif > > > > I'd suggest rather: > > > > #ifdef CONFIG_CIFS_SMB_DIRECT > > #define cifs_rdma_enabled(server) ((server)->rdma) > > #else > > #define cifs_rdma_enabled(server) 0 > > #endif > > > > Then we don't need an ifdef in the users, just: > > > > if (cifs_rdma_enabled(server)) > > rc = smbd_reconnect(server); > > else > > rc = generic_ip_connect(server);
It doesn't work well, because smbd_reconnect is defined when CONFIG_CIFS_SMB_DIRECT is set. Now the compiler is complaining it can't find this function. Maybe compiler is not smart enough :) I have sent v6 for all the other comments.

