Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Stefan Metzmacher and committed by
Steve French
ff7673f6 94604164

+23 -30
+23 -30
fs/smb/server/transport_rdma.c
··· 41 41 #define SMB_DIRECT_PORT_IWARP 5445 42 42 #define SMB_DIRECT_PORT_INFINIBAND 445 43 43 44 - #define SMB_DIRECT_VERSION_LE cpu_to_le16(SMBDIRECT_V1) 45 - 46 44 /* SMB_DIRECT negotiation timeout (for the server) in seconds */ 47 45 #define SMB_DIRECT_NEGOTIATE_TIMEOUT 5 48 46 ··· 55 57 * This value is possibly decreased during QP creation on hardware limit 56 58 */ 57 59 #define SMB_DIRECT_CM_INITIATOR_DEPTH 8 58 - 59 - /* Maximum number of retries on data transfer operations */ 60 - #define SMB_DIRECT_CM_RETRY 6 61 - /* No need to retry on Receiver Not Ready since SMB_DIRECT manages credits */ 62 - #define SMB_DIRECT_CM_RNR_RETRY 0 63 60 64 61 /* 65 62 * User configurable initial values per SMB_DIRECT transport connection ··· 112 119 struct smb_direct_transport { 113 120 struct ksmbd_transport transport; 114 121 115 - struct smbdirect_socket socket; 122 + struct smbdirect_socket *socket; 116 123 }; 117 124 118 125 static bool smb_direct_logging_needed(struct smbdirect_socket *sc, ··· 189 196 unsigned int get_smbd_max_read_write_size(struct ksmbd_transport *kt) 190 197 { 191 198 struct smb_direct_transport *t; 192 - struct smbdirect_socket *sc; 193 199 const struct smbdirect_socket_parameters *sp; 194 200 195 201 if (kt->ops != &ksmbd_smb_direct_transport_ops) 196 202 return 0; 197 203 198 204 t = SMBD_TRANS(kt); 199 - sc = &t->socket; 200 - sp = smbdirect_socket_get_current_parameters(sc); 205 + sp = smbdirect_socket_get_current_parameters(t->socket); 201 206 202 207 return sp->max_read_write_size; 203 208 } ··· 228 237 t = kzalloc_obj(*t, KSMBD_DEFAULT_GFP); 229 238 if (!t) 230 239 return NULL; 231 - sc = &t->socket; 232 - ret = smbdirect_socket_init_accepting(cm_id, sc); 240 + ret = smbdirect_socket_create_accepting(cm_id, &sc); 233 241 if (ret) 234 - goto socket_init_failed; 242 + goto socket_create_failed; 235 243 smbdirect_socket_set_logging(sc, NULL, 236 244 smb_direct_logging_needed, 237 245 smb_direct_logging_vaprintf); ··· 255 265 conn->transport = KSMBD_TRANS(t); 256 266 KSMBD_TRANS(t)->conn = conn; 257 267 KSMBD_TRANS(t)->ops = &ksmbd_smb_direct_transport_ops; 268 + 269 + t->socket = sc; 258 270 return t; 259 271 260 272 conn_alloc_failed: 261 273 set_workqueue_failed: 262 274 set_settings_failed: 263 275 set_params_failed: 264 - socket_init_failed: 276 + smbdirect_socket_release(sc); 277 + socket_create_failed: 265 278 kfree(t); 266 279 return NULL; 267 280 } 268 281 269 282 static void smb_direct_free_transport(struct ksmbd_transport *kt) 270 283 { 271 - kfree(SMBD_TRANS(kt)); 284 + struct smb_direct_transport *t = SMBD_TRANS(kt); 285 + 286 + smbdirect_socket_release(t->socket); 287 + kfree(t); 272 288 } 273 289 274 290 static void free_transport(struct smb_direct_transport *t) 275 291 { 276 - struct smbdirect_socket *sc = &t->socket; 277 - 278 - smbdirect_socket_destroy_sync(sc); 279 - 292 + smbdirect_socket_shutdown(t->socket); 280 293 ksmbd_conn_free(KSMBD_TRANS(t)->conn); 281 294 } 282 295 ··· 287 294 unsigned int size, int unused) 288 295 { 289 296 struct smb_direct_transport *st = SMBD_TRANS(t); 290 - struct smbdirect_socket *sc = &st->socket; 297 + struct smbdirect_socket *sc = st->socket; 291 298 struct msghdr msg = { .msg_flags = 0, }; 292 299 struct kvec iov = { 293 300 .iov_base = buf, ··· 308 315 bool need_invalidate, unsigned int remote_key) 309 316 { 310 317 struct smb_direct_transport *st = SMBD_TRANS(t); 311 - struct smbdirect_socket *sc = &st->socket; 318 + struct smbdirect_socket *sc = st->socket; 312 319 struct iov_iter iter; 313 320 314 321 iov_iter_kvec(&iter, ITER_SOURCE, iov, niovs, buflen); ··· 323 330 unsigned int desc_len) 324 331 { 325 332 struct smb_direct_transport *st = SMBD_TRANS(t); 326 - struct smbdirect_socket *sc = &st->socket; 333 + struct smbdirect_socket *sc = st->socket; 327 334 328 335 return smbdirect_connection_rdma_xmit(sc, buf, buflen, 329 336 desc, desc_len, false); ··· 335 342 unsigned int desc_len) 336 343 { 337 344 struct smb_direct_transport *st = SMBD_TRANS(t); 338 - struct smbdirect_socket *sc = &st->socket; 345 + struct smbdirect_socket *sc = st->socket; 339 346 340 347 return smbdirect_connection_rdma_xmit(sc, buf, buflen, 341 348 desc, desc_len, true); ··· 344 351 static void smb_direct_disconnect(struct ksmbd_transport *t) 345 352 { 346 353 struct smb_direct_transport *st = SMBD_TRANS(t); 347 - struct smbdirect_socket *sc = &st->socket; 354 + struct smbdirect_socket *sc = st->socket; 348 355 349 - ksmbd_debug(RDMA, "Disconnecting cm_id=%p\n", sc->rdma.cm_id); 356 + ksmbd_debug(RDMA, "Disconnecting sc=%p\n", sc); 350 357 351 358 free_transport(st); 352 359 } ··· 354 361 static void smb_direct_shutdown(struct ksmbd_transport *t) 355 362 { 356 363 struct smb_direct_transport *st = SMBD_TRANS(t); 357 - struct smbdirect_socket *sc = &st->socket; 364 + struct smbdirect_socket *sc = st->socket; 358 365 359 - ksmbd_debug(RDMA, "smb-direct shutdown cm_id=%p\n", sc->rdma.cm_id); 366 + ksmbd_debug(RDMA, "smb-direct shutdown sc=%p\n", sc); 360 367 361 368 smbdirect_socket_shutdown(sc); 362 369 } ··· 364 371 static int smb_direct_prepare(struct ksmbd_transport *t) 365 372 { 366 373 struct smb_direct_transport *st = SMBD_TRANS(t); 367 - struct smbdirect_socket *sc = &st->socket; 374 + struct smbdirect_socket *sc = st->socket; 368 375 int ret; 369 376 370 377 ksmbd_debug(RDMA, "SMB_DIRECT Waiting for connection\n"); ··· 398 405 t = alloc_transport(new_cm_id); 399 406 if (!t) 400 407 return -ENOMEM; 401 - sc = &t->socket; 408 + sc = t->socket; 402 409 403 410 ret = smbdirect_accept_connect_request(sc, &event->param.conn); 404 411 if (ret)