Skip to content

Commit ff7673f

Browse files
metze-sambasmfrench
authored andcommitted
smb: server: make use of smbdirect_socket_create_accepting()/smbdirect_socket_release()
With this we no longer embed struct smbdirect_socket, which will allow us to make it private in the following commits. Cc: Namjae Jeon <linkinjeon@kernel.org> Cc: Steve French <smfrench@gmail.com> Cc: Tom Talpey <tom@talpey.com> Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Signed-off-by: Stefan Metzmacher <metze@samba.org> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent 9460416 commit ff7673f

1 file changed

Lines changed: 23 additions & 30 deletions

File tree

fs/smb/server/transport_rdma.c

Lines changed: 23 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@
4141
#define SMB_DIRECT_PORT_IWARP 5445
4242
#define SMB_DIRECT_PORT_INFINIBAND 445
4343

44-
#define SMB_DIRECT_VERSION_LE cpu_to_le16(SMBDIRECT_V1)
45-
4644
/* SMB_DIRECT negotiation timeout (for the server) in seconds */
4745
#define SMB_DIRECT_NEGOTIATE_TIMEOUT 5
4846

@@ -58,11 +56,6 @@
5856
*/
5957
#define SMB_DIRECT_CM_INITIATOR_DEPTH 8
6058

61-
/* Maximum number of retries on data transfer operations */
62-
#define SMB_DIRECT_CM_RETRY 6
63-
/* No need to retry on Receiver Not Ready since SMB_DIRECT manages credits */
64-
#define SMB_DIRECT_CM_RNR_RETRY 0
65-
6659
/*
6760
* User configurable initial values per SMB_DIRECT transport connection
6861
* as defined in [MS-SMBD] 3.1.1.1
@@ -119,7 +112,7 @@ static struct workqueue_struct *smb_direct_wq;
119112
struct smb_direct_transport {
120113
struct ksmbd_transport transport;
121114

122-
struct smbdirect_socket socket;
115+
struct smbdirect_socket *socket;
123116
};
124117

125118
static bool smb_direct_logging_needed(struct smbdirect_socket *sc,
@@ -196,15 +189,13 @@ void init_smbd_max_io_size(unsigned int sz)
196189
unsigned int get_smbd_max_read_write_size(struct ksmbd_transport *kt)
197190
{
198191
struct smb_direct_transport *t;
199-
struct smbdirect_socket *sc;
200192
const struct smbdirect_socket_parameters *sp;
201193

202194
if (kt->ops != &ksmbd_smb_direct_transport_ops)
203195
return 0;
204196

205197
t = SMBD_TRANS(kt);
206-
sc = &t->socket;
207-
sp = smbdirect_socket_get_current_parameters(sc);
198+
sp = smbdirect_socket_get_current_parameters(t->socket);
208199

209200
return sp->max_read_write_size;
210201
}
@@ -237,10 +228,9 @@ static struct smb_direct_transport *alloc_transport(struct rdma_cm_id *cm_id)
237228
t = kzalloc_obj(*t, KSMBD_DEFAULT_GFP);
238229
if (!t)
239230
return NULL;
240-
sc = &t->socket;
241-
ret = smbdirect_socket_init_accepting(cm_id, sc);
231+
ret = smbdirect_socket_create_accepting(cm_id, &sc);
242232
if (ret)
243-
goto socket_init_failed;
233+
goto socket_create_failed;
244234
smbdirect_socket_set_logging(sc, NULL,
245235
smb_direct_logging_needed,
246236
smb_direct_logging_vaprintf);
@@ -265,36 +255,39 @@ static struct smb_direct_transport *alloc_transport(struct rdma_cm_id *cm_id)
265255
conn->transport = KSMBD_TRANS(t);
266256
KSMBD_TRANS(t)->conn = conn;
267257
KSMBD_TRANS(t)->ops = &ksmbd_smb_direct_transport_ops;
258+
259+
t->socket = sc;
268260
return t;
269261

270262
conn_alloc_failed:
271263
set_workqueue_failed:
272264
set_settings_failed:
273265
set_params_failed:
274-
socket_init_failed:
266+
smbdirect_socket_release(sc);
267+
socket_create_failed:
275268
kfree(t);
276269
return NULL;
277270
}
278271

279272
static void smb_direct_free_transport(struct ksmbd_transport *kt)
280273
{
281-
kfree(SMBD_TRANS(kt));
274+
struct smb_direct_transport *t = SMBD_TRANS(kt);
275+
276+
smbdirect_socket_release(t->socket);
277+
kfree(t);
282278
}
283279

284280
static void free_transport(struct smb_direct_transport *t)
285281
{
286-
struct smbdirect_socket *sc = &t->socket;
287-
288-
smbdirect_socket_destroy_sync(sc);
289-
282+
smbdirect_socket_shutdown(t->socket);
290283
ksmbd_conn_free(KSMBD_TRANS(t)->conn);
291284
}
292285

293286
static int smb_direct_read(struct ksmbd_transport *t, char *buf,
294287
unsigned int size, int unused)
295288
{
296289
struct smb_direct_transport *st = SMBD_TRANS(t);
297-
struct smbdirect_socket *sc = &st->socket;
290+
struct smbdirect_socket *sc = st->socket;
298291
struct msghdr msg = { .msg_flags = 0, };
299292
struct kvec iov = {
300293
.iov_base = buf,
@@ -315,7 +308,7 @@ static int smb_direct_writev(struct ksmbd_transport *t,
315308
bool need_invalidate, unsigned int remote_key)
316309
{
317310
struct smb_direct_transport *st = SMBD_TRANS(t);
318-
struct smbdirect_socket *sc = &st->socket;
311+
struct smbdirect_socket *sc = st->socket;
319312
struct iov_iter iter;
320313

321314
iov_iter_kvec(&iter, ITER_SOURCE, iov, niovs, buflen);
@@ -330,7 +323,7 @@ static int smb_direct_rdma_write(struct ksmbd_transport *t,
330323
unsigned int desc_len)
331324
{
332325
struct smb_direct_transport *st = SMBD_TRANS(t);
333-
struct smbdirect_socket *sc = &st->socket;
326+
struct smbdirect_socket *sc = st->socket;
334327

335328
return smbdirect_connection_rdma_xmit(sc, buf, buflen,
336329
desc, desc_len, false);
@@ -342,7 +335,7 @@ static int smb_direct_rdma_read(struct ksmbd_transport *t,
342335
unsigned int desc_len)
343336
{
344337
struct smb_direct_transport *st = SMBD_TRANS(t);
345-
struct smbdirect_socket *sc = &st->socket;
338+
struct smbdirect_socket *sc = st->socket;
346339

347340
return smbdirect_connection_rdma_xmit(sc, buf, buflen,
348341
desc, desc_len, true);
@@ -351,27 +344,27 @@ static int smb_direct_rdma_read(struct ksmbd_transport *t,
351344
static void smb_direct_disconnect(struct ksmbd_transport *t)
352345
{
353346
struct smb_direct_transport *st = SMBD_TRANS(t);
354-
struct smbdirect_socket *sc = &st->socket;
347+
struct smbdirect_socket *sc = st->socket;
355348

356-
ksmbd_debug(RDMA, "Disconnecting cm_id=%p\n", sc->rdma.cm_id);
349+
ksmbd_debug(RDMA, "Disconnecting sc=%p\n", sc);
357350

358351
free_transport(st);
359352
}
360353

361354
static void smb_direct_shutdown(struct ksmbd_transport *t)
362355
{
363356
struct smb_direct_transport *st = SMBD_TRANS(t);
364-
struct smbdirect_socket *sc = &st->socket;
357+
struct smbdirect_socket *sc = st->socket;
365358

366-
ksmbd_debug(RDMA, "smb-direct shutdown cm_id=%p\n", sc->rdma.cm_id);
359+
ksmbd_debug(RDMA, "smb-direct shutdown sc=%p\n", sc);
367360

368361
smbdirect_socket_shutdown(sc);
369362
}
370363

371364
static int smb_direct_prepare(struct ksmbd_transport *t)
372365
{
373366
struct smb_direct_transport *st = SMBD_TRANS(t);
374-
struct smbdirect_socket *sc = &st->socket;
367+
struct smbdirect_socket *sc = st->socket;
375368
int ret;
376369

377370
ksmbd_debug(RDMA, "SMB_DIRECT Waiting for connection\n");
@@ -405,7 +398,7 @@ static int smb_direct_handle_connect_request(struct rdma_cm_id *new_cm_id,
405398
t = alloc_transport(new_cm_id);
406399
if (!t)
407400
return -ENOMEM;
408-
sc = &t->socket;
401+
sc = t->socket;
409402

410403
ret = smbdirect_accept_connect_request(sc, &event->param.conn);
411404
if (ret)

0 commit comments

Comments
 (0)