Skip to content

Commit bc89ac8

Browse files
Josef 'Jeff' Sipekbehlendorf
authored andcommitted
Illumos 5045 - use atomic_{inc,dec}_* instead of atomic_add_*
5045 use atomic_{inc,dec}_* instead of atomic_add_* Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: Garrett D'Amore <garrett@damore.org> Approved by: Robert Mustacchi <rm@joyent.com> References: https://www.illumos.org/issues/5045 illumos/illumos-gate@1a5e258 Porting notes: - All changes to non-ZFS files dropped. - Changes to zfs_vfsops.c dropped because they were Illumos specific. Ported-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #4220
1 parent e3e670d commit bc89ac8

File tree

7 files changed

+70
-73
lines changed

7 files changed

+70
-73
lines changed

include/sys/refcount.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ typedef struct refcount {
8686
#define refcount_destroy_many(rc, number) ((rc)->rc_count = 0)
8787
#define refcount_is_zero(rc) ((rc)->rc_count == 0)
8888
#define refcount_count(rc) ((rc)->rc_count)
89-
#define refcount_add(rc, holder) atomic_add_64_nv(&(rc)->rc_count, 1)
90-
#define refcount_remove(rc, holder) atomic_add_64_nv(&(rc)->rc_count, -1)
89+
#define refcount_add(rc, holder) atomic_inc_64_nv(&(rc)->rc_count)
90+
#define refcount_remove(rc, holder) atomic_dec_64_nv(&(rc)->rc_count)
9191
#define refcount_add_many(rc, number, holder) \
9292
atomic_add_64_nv(&(rc)->rc_count, number)
9393
#define refcount_remove_many(rc, number, holder) \

module/zfs/dbuf.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ dbuf_hash_insert(dmu_buf_impl_t *db)
230230
db->db_hash_next = h->hash_table[idx];
231231
h->hash_table[idx] = db;
232232
mutex_exit(DBUF_HASH_MUTEX(h, idx));
233-
atomic_add_64(&dbuf_hash_count, 1);
233+
atomic_inc_64(&dbuf_hash_count);
234234

235235
return (NULL);
236236
}
@@ -266,7 +266,7 @@ dbuf_hash_remove(dmu_buf_impl_t *db)
266266
*dbp = db->db_hash_next;
267267
db->db_hash_next = NULL;
268268
mutex_exit(DBUF_HASH_MUTEX(h, idx));
269-
atomic_add_64(&dbuf_hash_count, -1);
269+
atomic_dec_64(&dbuf_hash_count);
270270
}
271271

272272
static arc_evict_func_t dbuf_do_evict;

module/zfs/fm.c

Lines changed: 59 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -523,25 +523,25 @@ zfs_zevent_post(nvlist_t *nvl, nvlist_t *detector, zevent_cb_t *cb)
523523

524524
error = nvlist_add_int64_array(nvl, FM_EREPORT_TIME, tv_array, 2);
525525
if (error) {
526-
atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1);
526+
atomic_inc_64(&erpt_kstat_data.erpt_set_failed.value.ui64);
527527
goto out;
528528
}
529529

530530
eid = atomic_inc_64_nv(&zevent_eid);
531531
error = nvlist_add_uint64(nvl, FM_EREPORT_EID, eid);
532532
if (error) {
533-
atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1);
533+
atomic_inc_64(&erpt_kstat_data.erpt_set_failed.value.ui64);
534534
goto out;
535535
}
536536

537537
error = nvlist_size(nvl, &nvl_size, NV_ENCODE_NATIVE);
538538
if (error) {
539-
atomic_add_64(&erpt_kstat_data.erpt_dropped.value.ui64, 1);
539+
atomic_inc_64(&erpt_kstat_data.erpt_dropped.value.ui64);
540540
goto out;
541541
}
542542

543543
if (nvl_size > ERPT_DATA_SZ || nvl_size == 0) {
544-
atomic_add_64(&erpt_kstat_data.erpt_dropped.value.ui64, 1);
544+
atomic_inc_64(&erpt_kstat_data.erpt_dropped.value.ui64);
545545
error = EOVERFLOW;
546546
goto out;
547547
}
@@ -551,7 +551,7 @@ zfs_zevent_post(nvlist_t *nvl, nvlist_t *detector, zevent_cb_t *cb)
551551

552552
ev = zfs_zevent_alloc();
553553
if (ev == NULL) {
554-
atomic_add_64(&erpt_kstat_data.erpt_dropped.value.ui64, 1);
554+
atomic_inc_64(&erpt_kstat_data.erpt_dropped.value.ui64);
555555
error = ENOMEM;
556556
goto out;
557557
}
@@ -1025,8 +1025,7 @@ fm_payload_set(nvlist_t *payload, ...)
10251025
va_end(ap);
10261026

10271027
if (ret)
1028-
atomic_add_64(
1029-
&erpt_kstat_data.payload_set_failed.value.ui64, 1);
1028+
atomic_inc_64(&erpt_kstat_data.payload_set_failed.value.ui64);
10301029
}
10311030

10321031
/*
@@ -1059,24 +1058,24 @@ fm_ereport_set(nvlist_t *ereport, int version, const char *erpt_class,
10591058
int ret;
10601059

10611060
if (version != FM_EREPORT_VERS0) {
1062-
atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1);
1061+
atomic_inc_64(&erpt_kstat_data.erpt_set_failed.value.ui64);
10631062
return;
10641063
}
10651064

10661065
(void) snprintf(ereport_class, FM_MAX_CLASS, "%s.%s",
10671066
FM_EREPORT_CLASS, erpt_class);
10681067
if (nvlist_add_string(ereport, FM_CLASS, ereport_class) != 0) {
1069-
atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1);
1068+
atomic_inc_64(&erpt_kstat_data.erpt_set_failed.value.ui64);
10701069
return;
10711070
}
10721071

10731072
if (nvlist_add_uint64(ereport, FM_EREPORT_ENA, ena)) {
1074-
atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1);
1073+
atomic_inc_64(&erpt_kstat_data.erpt_set_failed.value.ui64);
10751074
}
10761075

10771076
if (nvlist_add_nvlist(ereport, FM_EREPORT_DETECTOR,
10781077
(nvlist_t *)detector) != 0) {
1079-
atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1);
1078+
atomic_inc_64(&erpt_kstat_data.erpt_set_failed.value.ui64);
10801079
}
10811080

10821081
va_start(ap, detector);
@@ -1085,7 +1084,7 @@ fm_ereport_set(nvlist_t *ereport, int version, const char *erpt_class,
10851084
va_end(ap);
10861085

10871086
if (ret)
1088-
atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1);
1087+
atomic_inc_64(&erpt_kstat_data.erpt_set_failed.value.ui64);
10891088
}
10901089

10911090
/*
@@ -1108,19 +1107,19 @@ static int
11081107
fm_fmri_hc_set_common(nvlist_t *fmri, int version, const nvlist_t *auth)
11091108
{
11101109
if (version != FM_HC_SCHEME_VERSION) {
1111-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1110+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
11121111
return (0);
11131112
}
11141113

11151114
if (nvlist_add_uint8(fmri, FM_VERSION, version) != 0 ||
11161115
nvlist_add_string(fmri, FM_FMRI_SCHEME, FM_FMRI_SCHEME_HC) != 0) {
1117-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1116+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
11181117
return (0);
11191118
}
11201119

11211120
if (auth != NULL && nvlist_add_nvlist(fmri, FM_FMRI_AUTHORITY,
11221121
(nvlist_t *)auth) != 0) {
1123-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1122+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
11241123
return (0);
11251124
}
11261125

@@ -1152,22 +1151,22 @@ fm_fmri_hc_set(nvlist_t *fmri, int version, const nvlist_t *auth,
11521151
pairs[i] = fm_nvlist_create(nva);
11531152
if (nvlist_add_string(pairs[i], FM_FMRI_HC_NAME, name) != 0 ||
11541153
nvlist_add_string(pairs[i], FM_FMRI_HC_ID, idstr) != 0) {
1155-
atomic_add_64(
1156-
&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1154+
atomic_inc_64(
1155+
&erpt_kstat_data.fmri_set_failed.value.ui64);
11571156
}
11581157
}
11591158
va_end(ap);
11601159

11611160
if (nvlist_add_nvlist_array(fmri, FM_FMRI_HC_LIST, pairs, npairs) != 0)
1162-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1161+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
11631162

11641163
for (i = 0; i < npairs; i++)
11651164
fm_nvlist_destroy(pairs[i], FM_NVA_RETAIN);
11661165

11671166
if (snvl != NULL) {
11681167
if (nvlist_add_nvlist(fmri, FM_FMRI_HC_SPECIFIC, snvl) != 0) {
1169-
atomic_add_64(
1170-
&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1168+
atomic_inc_64(
1169+
&erpt_kstat_data.fmri_set_failed.value.ui64);
11711170
}
11721171
}
11731172
}
@@ -1192,20 +1191,20 @@ fm_fmri_hc_create(nvlist_t *fmri, int version, const nvlist_t *auth,
11921191
*/
11931192
if (nvlist_lookup_nvlist_array(bboard, FM_FMRI_HC_LIST, &hcl, &n)
11941193
!= 0) {
1195-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1194+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
11961195
return;
11971196
}
11981197

11991198
for (i = 0; i < n; i++) {
12001199
if (nvlist_lookup_string(hcl[i], FM_FMRI_HC_NAME,
12011200
&hcname) != 0) {
1202-
atomic_add_64(
1203-
&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1201+
atomic_inc_64(
1202+
&erpt_kstat_data.fmri_set_failed.value.ui64);
12041203
return;
12051204
}
12061205
if (nvlist_lookup_string(hcl[i], FM_FMRI_HC_ID, &hcid) != 0) {
1207-
atomic_add_64(
1208-
&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1206+
atomic_inc_64(
1207+
&erpt_kstat_data.fmri_set_failed.value.ui64);
12091208
return;
12101209
}
12111210

@@ -1217,8 +1216,8 @@ fm_fmri_hc_create(nvlist_t *fmri, int version, const nvlist_t *auth,
12171216
fm_nvlist_destroy(pairs[j],
12181217
FM_NVA_RETAIN);
12191218
}
1220-
atomic_add_64(
1221-
&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1219+
atomic_inc_64(
1220+
&erpt_kstat_data.fmri_set_failed.value.ui64);
12221221
return;
12231222
}
12241223
}
@@ -1242,8 +1241,8 @@ fm_fmri_hc_create(nvlist_t *fmri, int version, const nvlist_t *auth,
12421241
fm_nvlist_destroy(pairs[j],
12431242
FM_NVA_RETAIN);
12441243
}
1245-
atomic_add_64(
1246-
&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1244+
atomic_inc_64(
1245+
&erpt_kstat_data.fmri_set_failed.value.ui64);
12471246
return;
12481247
}
12491248
}
@@ -1254,7 +1253,7 @@ fm_fmri_hc_create(nvlist_t *fmri, int version, const nvlist_t *auth,
12541253
*/
12551254
if (nvlist_add_nvlist_array(fmri, FM_FMRI_HC_LIST, pairs,
12561255
npairs + n) != 0) {
1257-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1256+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
12581257
return;
12591258
}
12601259

@@ -1264,8 +1263,8 @@ fm_fmri_hc_create(nvlist_t *fmri, int version, const nvlist_t *auth,
12641263

12651264
if (snvl != NULL) {
12661265
if (nvlist_add_nvlist(fmri, FM_FMRI_HC_SPECIFIC, snvl) != 0) {
1267-
atomic_add_64(
1268-
&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1266+
atomic_inc_64(
1267+
&erpt_kstat_data.fmri_set_failed.value.ui64);
12691268
return;
12701269
}
12711270
}
@@ -1291,7 +1290,7 @@ fm_fmri_dev_set(nvlist_t *fmri_dev, int version, const nvlist_t *auth,
12911290
int err = 0;
12921291

12931292
if (version != DEV_SCHEME_VERSION0) {
1294-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1293+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
12951294
return;
12961295
}
12971296

@@ -1312,7 +1311,7 @@ fm_fmri_dev_set(nvlist_t *fmri_dev, int version, const nvlist_t *auth,
13121311
err |= nvlist_add_string(fmri_dev, FM_FMRI_DEV_TGTPTLUN0, tpl0);
13131312

13141313
if (err)
1315-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1314+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
13161315

13171316
}
13181317

@@ -1337,35 +1336,35 @@ fm_fmri_cpu_set(nvlist_t *fmri_cpu, int version, const nvlist_t *auth,
13371336
uint64_t *failedp = &erpt_kstat_data.fmri_set_failed.value.ui64;
13381337

13391338
if (version < CPU_SCHEME_VERSION1) {
1340-
atomic_add_64(failedp, 1);
1339+
atomic_inc_64(failedp);
13411340
return;
13421341
}
13431342

13441343
if (nvlist_add_uint8(fmri_cpu, FM_VERSION, version) != 0) {
1345-
atomic_add_64(failedp, 1);
1344+
atomic_inc_64(failedp);
13461345
return;
13471346
}
13481347

13491348
if (nvlist_add_string(fmri_cpu, FM_FMRI_SCHEME,
13501349
FM_FMRI_SCHEME_CPU) != 0) {
1351-
atomic_add_64(failedp, 1);
1350+
atomic_inc_64(failedp);
13521351
return;
13531352
}
13541353

13551354
if (auth != NULL && nvlist_add_nvlist(fmri_cpu, FM_FMRI_AUTHORITY,
13561355
(nvlist_t *)auth) != 0)
1357-
atomic_add_64(failedp, 1);
1356+
atomic_inc_64(failedp);
13581357

13591358
if (nvlist_add_uint32(fmri_cpu, FM_FMRI_CPU_ID, cpu_id) != 0)
1360-
atomic_add_64(failedp, 1);
1359+
atomic_inc_64(failedp);
13611360

13621361
if (cpu_maskp != NULL && nvlist_add_uint8(fmri_cpu, FM_FMRI_CPU_MASK,
13631362
*cpu_maskp) != 0)
1364-
atomic_add_64(failedp, 1);
1363+
atomic_inc_64(failedp);
13651364

13661365
if (serial_idp == NULL || nvlist_add_string(fmri_cpu,
13671366
FM_FMRI_CPU_SERIAL_ID, (char *)serial_idp) != 0)
1368-
atomic_add_64(failedp, 1);
1367+
atomic_inc_64(failedp);
13691368
}
13701369

13711370
/*
@@ -1386,49 +1385,47 @@ fm_fmri_mem_set(nvlist_t *fmri, int version, const nvlist_t *auth,
13861385
const char *unum, const char *serial, uint64_t offset)
13871386
{
13881387
if (version != MEM_SCHEME_VERSION0) {
1389-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1388+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
13901389
return;
13911390
}
13921391

13931392
if (!serial && (offset != (uint64_t)-1)) {
1394-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1393+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
13951394
return;
13961395
}
13971396

13981397
if (nvlist_add_uint8(fmri, FM_VERSION, version) != 0) {
1399-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1398+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
14001399
return;
14011400
}
14021401

14031402
if (nvlist_add_string(fmri, FM_FMRI_SCHEME, FM_FMRI_SCHEME_MEM) != 0) {
1404-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1403+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
14051404
return;
14061405
}
14071406

14081407
if (auth != NULL) {
14091408
if (nvlist_add_nvlist(fmri, FM_FMRI_AUTHORITY,
14101409
(nvlist_t *)auth) != 0) {
1411-
atomic_add_64(
1412-
&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1410+
atomic_inc_64(
1411+
&erpt_kstat_data.fmri_set_failed.value.ui64);
14131412
}
14141413
}
14151414

14161415
if (nvlist_add_string(fmri, FM_FMRI_MEM_UNUM, unum) != 0) {
1417-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1416+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
14181417
}
14191418

14201419
if (serial != NULL) {
14211420
if (nvlist_add_string_array(fmri, FM_FMRI_MEM_SERIAL_ID,
14221421
(char **)&serial, 1) != 0) {
1423-
atomic_add_64(
1424-
&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1422+
atomic_inc_64(
1423+
&erpt_kstat_data.fmri_set_failed.value.ui64);
14251424
}
1426-
if (offset != (uint64_t)-1) {
1427-
if (nvlist_add_uint64(fmri, FM_FMRI_MEM_OFFSET,
1428-
offset) != 0) {
1429-
atomic_add_64(&erpt_kstat_data.
1430-
fmri_set_failed.value.ui64, 1);
1431-
}
1425+
if (offset != (uint64_t)-1 && nvlist_add_uint64(fmri,
1426+
FM_FMRI_MEM_OFFSET, offset) != 0) {
1427+
atomic_inc_64(
1428+
&erpt_kstat_data.fmri_set_failed.value.ui64);
14321429
}
14331430
}
14341431
}
@@ -1438,28 +1435,28 @@ fm_fmri_zfs_set(nvlist_t *fmri, int version, uint64_t pool_guid,
14381435
uint64_t vdev_guid)
14391436
{
14401437
if (version != ZFS_SCHEME_VERSION0) {
1441-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1438+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
14421439
return;
14431440
}
14441441

14451442
if (nvlist_add_uint8(fmri, FM_VERSION, version) != 0) {
1446-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1443+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
14471444
return;
14481445
}
14491446

14501447
if (nvlist_add_string(fmri, FM_FMRI_SCHEME, FM_FMRI_SCHEME_ZFS) != 0) {
1451-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1448+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
14521449
return;
14531450
}
14541451

14551452
if (nvlist_add_uint64(fmri, FM_FMRI_ZFS_POOL, pool_guid) != 0) {
1456-
atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1453+
atomic_inc_64(&erpt_kstat_data.fmri_set_failed.value.ui64);
14571454
}
14581455

14591456
if (vdev_guid != 0) {
14601457
if (nvlist_add_uint64(fmri, FM_FMRI_ZFS_VDEV, vdev_guid) != 0) {
1461-
atomic_add_64(
1462-
&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
1458+
atomic_inc_64(
1459+
&erpt_kstat_data.fmri_set_failed.value.ui64);
14631460
}
14641461
}
14651462
}

0 commit comments

Comments
 (0)