@@ -1745,23 +1745,19 @@ ztest_object_unlock(ztest_ds_t *zd, uint64_t object)
1745
1745
ztest_rll_unlock (rll );
1746
1746
}
1747
1747
1748
- static rl_t *
1749
- ztest_range_lock (ztest_ds_t * zd , uint64_t object , uint64_t offset ,
1748
+ static void
1749
+ ztest_range_lock (ztest_ds_t * zd , rl_t * rl , uint64_t object , uint64_t offset ,
1750
1750
uint64_t size , rl_type_t type )
1751
1751
{
1752
1752
uint64_t hash = object ^ (offset % (ZTEST_RANGE_LOCKS + 1 ));
1753
1753
rll_t * rll = & zd -> zd_range_lock [hash & (ZTEST_RANGE_LOCKS - 1 )];
1754
- rl_t * rl ;
1755
1754
1756
- rl = umem_alloc (sizeof (* rl ), UMEM_NOFAIL );
1757
1755
rl -> rl_object = object ;
1758
1756
rl -> rl_offset = offset ;
1759
1757
rl -> rl_size = size ;
1760
1758
rl -> rl_lock = rll ;
1761
1759
1762
1760
ztest_rll_lock (rll , type );
1763
-
1764
- return (rl );
1765
1761
}
1766
1762
1767
1763
static void
@@ -1770,8 +1766,6 @@ ztest_range_unlock(rl_t *rl)
1770
1766
rll_t * rll = rl -> rl_lock ;
1771
1767
1772
1768
ztest_rll_unlock (rll );
1773
-
1774
- umem_free (rl , sizeof (* rl ));
1775
1769
}
1776
1770
1777
1771
static void
@@ -2200,7 +2194,7 @@ ztest_replay_write(void *arg1, void *arg2, boolean_t byteswap)
2200
2194
dmu_tx_t * tx ;
2201
2195
dmu_buf_t * db ;
2202
2196
arc_buf_t * abuf = NULL ;
2203
- rl_t * rl ;
2197
+ rl_t rl ;
2204
2198
2205
2199
if (byteswap )
2206
2200
byteswap_uint64_array (lr , sizeof (* lr ));
@@ -2224,7 +2218,7 @@ ztest_replay_write(void *arg1, void *arg2, boolean_t byteswap)
2224
2218
bt = NULL ;
2225
2219
2226
2220
ztest_object_lock (zd , lr -> lr_foid , ZTRL_READER );
2227
- rl = ztest_range_lock (zd , lr -> lr_foid , offset , length , ZTRL_WRITER );
2221
+ ztest_range_lock (zd , & rl , lr -> lr_foid , offset , length , ZTRL_WRITER );
2228
2222
2229
2223
VERIFY0 (dmu_bonus_hold (os , lr -> lr_foid , FTAG , & db ));
2230
2224
@@ -2249,7 +2243,7 @@ ztest_replay_write(void *arg1, void *arg2, boolean_t byteswap)
2249
2243
if (abuf != NULL )
2250
2244
dmu_return_arcbuf (abuf );
2251
2245
dmu_buf_rele (db , FTAG );
2252
- ztest_range_unlock (rl );
2246
+ ztest_range_unlock (& rl );
2253
2247
ztest_object_unlock (zd , lr -> lr_foid );
2254
2248
return (ENOSPC );
2255
2249
}
@@ -2315,7 +2309,7 @@ ztest_replay_write(void *arg1, void *arg2, boolean_t byteswap)
2315
2309
2316
2310
dmu_tx_commit (tx );
2317
2311
2318
- ztest_range_unlock (rl );
2312
+ ztest_range_unlock (& rl );
2319
2313
ztest_object_unlock (zd , lr -> lr_foid );
2320
2314
2321
2315
return (0 );
@@ -2329,13 +2323,13 @@ ztest_replay_truncate(void *arg1, void *arg2, boolean_t byteswap)
2329
2323
objset_t * os = zd -> zd_os ;
2330
2324
dmu_tx_t * tx ;
2331
2325
uint64_t txg ;
2332
- rl_t * rl ;
2326
+ rl_t rl ;
2333
2327
2334
2328
if (byteswap )
2335
2329
byteswap_uint64_array (lr , sizeof (* lr ));
2336
2330
2337
2331
ztest_object_lock (zd , lr -> lr_foid , ZTRL_READER );
2338
- rl = ztest_range_lock (zd , lr -> lr_foid , lr -> lr_offset , lr -> lr_length ,
2332
+ ztest_range_lock (zd , & rl , lr -> lr_foid , lr -> lr_offset , lr -> lr_length ,
2339
2333
ZTRL_WRITER );
2340
2334
2341
2335
tx = dmu_tx_create (os );
@@ -2344,7 +2338,7 @@ ztest_replay_truncate(void *arg1, void *arg2, boolean_t byteswap)
2344
2338
2345
2339
txg = ztest_tx_assign (tx , TXG_WAIT , FTAG );
2346
2340
if (txg == 0 ) {
2347
- ztest_range_unlock (rl );
2341
+ ztest_range_unlock (& rl );
2348
2342
ztest_object_unlock (zd , lr -> lr_foid );
2349
2343
return (ENOSPC );
2350
2344
}
@@ -2356,7 +2350,7 @@ ztest_replay_truncate(void *arg1, void *arg2, boolean_t byteswap)
2356
2350
2357
2351
dmu_tx_commit (tx );
2358
2352
2359
- ztest_range_unlock (rl );
2353
+ ztest_range_unlock (& rl );
2360
2354
ztest_object_unlock (zd , lr -> lr_foid );
2361
2355
2362
2356
return (0 );
@@ -2472,12 +2466,12 @@ ztest_get_done(zgd_t *zgd, int error)
2472
2466
{
2473
2467
(void ) error ;
2474
2468
ztest_ds_t * zd = zgd -> zgd_private ;
2475
- uint64_t object = ((rl_t * )zgd -> zgd_lr )-> rl_object ;
2469
+ uint64_t object = ((rl_t * )& zgd -> zgd_lr )-> rl_object ;
2476
2470
2477
2471
if (zgd -> zgd_db )
2478
2472
dmu_buf_rele (zgd -> zgd_db , zgd );
2479
2473
2480
- ztest_range_unlock ((rl_t * )zgd -> zgd_lr );
2474
+ ztest_range_unlock ((rl_t * )& zgd -> zgd_lr );
2481
2475
ztest_object_unlock (zd , object );
2482
2476
2483
2477
umem_free (zgd , sizeof (* zgd ));
@@ -2527,7 +2521,7 @@ ztest_get_data(void *arg, uint64_t arg2, lr_write_t *lr, char *buf,
2527
2521
zgd -> zgd_private = zd ;
2528
2522
2529
2523
if (buf != NULL ) { /* immediate write */
2530
- zgd -> zgd_lr = ( struct zfs_locked_range * ) ztest_range_lock ( zd ,
2524
+ ztest_range_lock ( zd , ( rl_t * ) & zgd -> zgd_lr ,
2531
2525
object , offset , size , ZTRL_READER );
2532
2526
2533
2527
error = dmu_read (os , object , offset , size , buf ,
@@ -2543,7 +2537,7 @@ ztest_get_data(void *arg, uint64_t arg2, lr_write_t *lr, char *buf,
2543
2537
offset = 0 ;
2544
2538
}
2545
2539
2546
- zgd -> zgd_lr = ( struct zfs_locked_range * ) ztest_range_lock ( zd ,
2540
+ ztest_range_lock ( zd , ( rl_t * ) & zgd -> zgd_lr ,
2547
2541
object , offset , size , ZTRL_READER );
2548
2542
2549
2543
error = dmu_buf_hold_noread (os , object , offset , zgd , & db );
@@ -2790,12 +2784,12 @@ ztest_prealloc(ztest_ds_t *zd, uint64_t object, uint64_t offset, uint64_t size)
2790
2784
objset_t * os = zd -> zd_os ;
2791
2785
dmu_tx_t * tx ;
2792
2786
uint64_t txg ;
2793
- rl_t * rl ;
2787
+ rl_t rl ;
2794
2788
2795
2789
txg_wait_synced (dmu_objset_pool (os ), 0 );
2796
2790
2797
2791
ztest_object_lock (zd , object , ZTRL_READER );
2798
- rl = ztest_range_lock (zd , object , offset , size , ZTRL_WRITER );
2792
+ ztest_range_lock (zd , & rl , object , offset , size , ZTRL_WRITER );
2799
2793
2800
2794
tx = dmu_tx_create (os );
2801
2795
@@ -2811,7 +2805,7 @@ ztest_prealloc(ztest_ds_t *zd, uint64_t object, uint64_t offset, uint64_t size)
2811
2805
(void ) dmu_free_long_range (os , object , offset , size );
2812
2806
}
2813
2807
2814
- ztest_range_unlock (rl );
2808
+ ztest_range_unlock (& rl );
2815
2809
ztest_object_unlock (zd , object );
2816
2810
}
2817
2811
0 commit comments