@@ -287,7 +287,7 @@ static void send_done(struct ib_cq *cq, struct ib_wc *wc)
287
287
if (wc -> status != IB_WC_SUCCESS || wc -> opcode != IB_WC_SEND ) {
288
288
log_rdma_send (ERR , "wc->status=%d wc->opcode=%d\n" ,
289
289
wc -> status , wc -> opcode );
290
- mempool_free (request , info -> request_mempool );
290
+ mempool_free (request , sc -> send_io . mem . pool );
291
291
smbd_disconnect_rdma_connection (info );
292
292
return ;
293
293
}
@@ -297,7 +297,7 @@ static void send_done(struct ib_cq *cq, struct ib_wc *wc)
297
297
298
298
wake_up (& info -> wait_post_send );
299
299
300
- mempool_free (request , info -> request_mempool );
300
+ mempool_free (request , sc -> send_io . mem . pool );
301
301
}
302
302
303
303
static void dump_smbdirect_negotiate_resp (struct smbdirect_negotiate_resp * resp )
@@ -692,7 +692,7 @@ static int smbd_post_send_negotiate_req(struct smbd_connection *info)
692
692
struct smbdirect_send_io * request ;
693
693
struct smbdirect_negotiate_req * packet ;
694
694
695
- request = mempool_alloc (info -> request_mempool , GFP_KERNEL );
695
+ request = mempool_alloc (sc -> send_io . mem . pool , GFP_KERNEL );
696
696
if (!request )
697
697
return rc ;
698
698
@@ -751,7 +751,7 @@ static int smbd_post_send_negotiate_req(struct smbd_connection *info)
751
751
smbd_disconnect_rdma_connection (info );
752
752
753
753
dma_mapping_failed :
754
- mempool_free (request , info -> request_mempool );
754
+ mempool_free (request , sc -> send_io . mem . pool );
755
755
return rc ;
756
756
}
757
757
@@ -883,7 +883,7 @@ static int smbd_post_send_iter(struct smbd_connection *info,
883
883
goto wait_send_queue ;
884
884
}
885
885
886
- request = mempool_alloc (info -> request_mempool , GFP_KERNEL );
886
+ request = mempool_alloc (sc -> send_io . mem . pool , GFP_KERNEL );
887
887
if (!request ) {
888
888
rc = - ENOMEM ;
889
889
goto err_alloc ;
@@ -977,7 +977,7 @@ static int smbd_post_send_iter(struct smbd_connection *info,
977
977
request -> sge [i ].addr ,
978
978
request -> sge [i ].length ,
979
979
DMA_TO_DEVICE );
980
- mempool_free (request , info -> request_mempool );
980
+ mempool_free (request , sc -> send_io . mem . pool );
981
981
982
982
/* roll back receive credits and credits to be offered */
983
983
spin_lock (& info -> lock_new_credits_offered );
@@ -1235,7 +1235,7 @@ static int allocate_receive_buffers(struct smbd_connection *info, int num_buf)
1235
1235
init_waitqueue_head (& info -> wait_receive_queues );
1236
1236
1237
1237
for (i = 0 ; i < num_buf ; i ++ ) {
1238
- response = mempool_alloc (info -> response_mempool , GFP_KERNEL );
1238
+ response = mempool_alloc (sc -> recv_io . mem . pool , GFP_KERNEL );
1239
1239
if (!response )
1240
1240
goto allocate_failed ;
1241
1241
@@ -1255,17 +1255,18 @@ static int allocate_receive_buffers(struct smbd_connection *info, int num_buf)
1255
1255
list_del (& response -> list );
1256
1256
info -> count_receive_queue -- ;
1257
1257
1258
- mempool_free (response , info -> response_mempool );
1258
+ mempool_free (response , sc -> recv_io . mem . pool );
1259
1259
}
1260
1260
return - ENOMEM ;
1261
1261
}
1262
1262
1263
1263
static void destroy_receive_buffers (struct smbd_connection * info )
1264
1264
{
1265
+ struct smbdirect_socket * sc = & info -> socket ;
1265
1266
struct smbdirect_recv_io * response ;
1266
1267
1267
1268
while ((response = get_receive_buffer (info )))
1268
- mempool_free (response , info -> response_mempool );
1269
+ mempool_free (response , sc -> recv_io . mem . pool );
1269
1270
}
1270
1271
1271
1272
/* Implement idle connection timer [MS-SMBD] 3.1.6.2 */
@@ -1377,11 +1378,11 @@ void smbd_destroy(struct TCP_Server_Info *server)
1377
1378
rdma_destroy_id (sc -> rdma .cm_id );
1378
1379
1379
1380
/* free mempools */
1380
- mempool_destroy (info -> request_mempool );
1381
- kmem_cache_destroy (info -> request_cache );
1381
+ mempool_destroy (sc -> send_io . mem . pool );
1382
+ kmem_cache_destroy (sc -> send_io . mem . cache );
1382
1383
1383
- mempool_destroy (info -> response_mempool );
1384
- kmem_cache_destroy (info -> response_cache );
1384
+ mempool_destroy (sc -> recv_io . mem . pool );
1385
+ kmem_cache_destroy (sc -> recv_io . mem . cache );
1385
1386
1386
1387
sc -> status = SMBDIRECT_SOCKET_DESTROYED ;
1387
1388
@@ -1429,12 +1430,14 @@ int smbd_reconnect(struct TCP_Server_Info *server)
1429
1430
1430
1431
static void destroy_caches_and_workqueue (struct smbd_connection * info )
1431
1432
{
1433
+ struct smbdirect_socket * sc = & info -> socket ;
1434
+
1432
1435
destroy_receive_buffers (info );
1433
1436
destroy_workqueue (info -> workqueue );
1434
- mempool_destroy (info -> response_mempool );
1435
- kmem_cache_destroy (info -> response_cache );
1436
- mempool_destroy (info -> request_mempool );
1437
- kmem_cache_destroy (info -> request_cache );
1437
+ mempool_destroy (sc -> recv_io . mem . pool );
1438
+ kmem_cache_destroy (sc -> recv_io . mem . cache );
1439
+ mempool_destroy (sc -> send_io . mem . pool );
1440
+ kmem_cache_destroy (sc -> send_io . mem . cache );
1438
1441
}
1439
1442
1440
1443
#define MAX_NAME_LEN 80
@@ -1449,19 +1452,19 @@ static int allocate_caches_and_workqueue(struct smbd_connection *info)
1449
1452
return - ENOMEM ;
1450
1453
1451
1454
scnprintf (name , MAX_NAME_LEN , "smbdirect_send_io_%p" , info );
1452
- info -> request_cache =
1455
+ sc -> send_io . mem . cache =
1453
1456
kmem_cache_create (
1454
1457
name ,
1455
1458
sizeof (struct smbdirect_send_io ) +
1456
1459
sizeof (struct smbdirect_data_transfer ),
1457
1460
0 , SLAB_HWCACHE_ALIGN , NULL );
1458
- if (!info -> request_cache )
1461
+ if (!sc -> send_io . mem . cache )
1459
1462
return - ENOMEM ;
1460
1463
1461
- info -> request_mempool =
1464
+ sc -> send_io . mem . pool =
1462
1465
mempool_create (sp -> send_credit_target , mempool_alloc_slab ,
1463
- mempool_free_slab , info -> request_cache );
1464
- if (!info -> request_mempool )
1466
+ mempool_free_slab , sc -> send_io . mem . cache );
1467
+ if (!sc -> send_io . mem . pool )
1465
1468
goto out1 ;
1466
1469
1467
1470
scnprintf (name , MAX_NAME_LEN , "smbdirect_recv_io_%p" , info );
@@ -1472,17 +1475,17 @@ static int allocate_caches_and_workqueue(struct smbd_connection *info)
1472
1475
sizeof (struct smbdirect_data_transfer )),
1473
1476
.usersize = sp -> max_recv_size - sizeof (struct smbdirect_data_transfer ),
1474
1477
};
1475
- info -> response_cache =
1478
+ sc -> recv_io . mem . cache =
1476
1479
kmem_cache_create (name ,
1477
1480
sizeof (struct smbdirect_recv_io ) + sp -> max_recv_size ,
1478
1481
& response_args , SLAB_HWCACHE_ALIGN );
1479
- if (!info -> response_cache )
1482
+ if (!sc -> recv_io . mem . cache )
1480
1483
goto out2 ;
1481
1484
1482
- info -> response_mempool =
1485
+ sc -> recv_io . mem . pool =
1483
1486
mempool_create (sp -> recv_credit_max , mempool_alloc_slab ,
1484
- mempool_free_slab , info -> response_cache );
1485
- if (!info -> response_mempool )
1487
+ mempool_free_slab , sc -> recv_io . mem . cache );
1488
+ if (!sc -> recv_io . mem . pool )
1486
1489
goto out3 ;
1487
1490
1488
1491
scnprintf (name , MAX_NAME_LEN , "smbd_%p" , info );
@@ -1501,13 +1504,13 @@ static int allocate_caches_and_workqueue(struct smbd_connection *info)
1501
1504
out5 :
1502
1505
destroy_workqueue (info -> workqueue );
1503
1506
out4 :
1504
- mempool_destroy (info -> response_mempool );
1507
+ mempool_destroy (sc -> recv_io . mem . pool );
1505
1508
out3 :
1506
- kmem_cache_destroy (info -> response_cache );
1509
+ kmem_cache_destroy (sc -> recv_io . mem . cache );
1507
1510
out2 :
1508
- mempool_destroy (info -> request_mempool );
1511
+ mempool_destroy (sc -> send_io . mem . pool );
1509
1512
out1 :
1510
- kmem_cache_destroy (info -> request_cache );
1513
+ kmem_cache_destroy (sc -> send_io . mem . cache );
1511
1514
return - ENOMEM ;
1512
1515
}
1513
1516
0 commit comments