diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2016-06-10 12:03:01 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2016-06-10 12:03:01 +0000 |
commit | 301612afc3ef38a67f1adb329b36dae1bddf9034 (patch) | |
tree | 67480c0403a52379edfa7ff86522e0ea84bf3934 /usr/src/uts/common/fs/zfs/zap.c | |
parent | 3a73555a6bf9a4594d44713855d2396974e5f9ad (diff) | |
parent | bc07d1fd58f705e3a6d5b418433e42cd8e42b7f1 (diff) | |
download | illumos-joyent-301612afc3ef38a67f1adb329b36dae1bddf9034.tar.gz |
[illumos-gate merge]
commit a76660dbabd3d3b161bdead081ce275af6966d2e
7083 create_ramdisk.sh need not check for inuse devices
commit 3f85b2aed8a5768f4c20db925cdf8fc072472037
7036 zvol_swap_004_pos test failed
commit 10e67aa0db0823d5464aafdd681f3c966155c68e
7082 bptree_iterate() passes wrong args to zfs_dbgmsg()
commit 2404c9e6b54f427b32dd0a2d46940d6a4c5299bc
7062 Connections remain in TIME_WAIT too long
7061 local TCP connections should be expediently purged from TIME_WAIT
commit 9adfa60d484ce2435f5af77cc99dcd4e692b6660
6314 buffer overflow in dsl_dataset_name
commit 0c779ad424a92a84d1e07d47cab7f8009189202b
7054 dmu_tx_hold_t should use refcount_t to track space
Diffstat (limited to 'usr/src/uts/common/fs/zfs/zap.c')
-rw-r--r-- | usr/src/uts/common/fs/zfs/zap.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/usr/src/uts/common/fs/zfs/zap.c b/usr/src/uts/common/fs/zfs/zap.c index 26bb8d4b09..43d07ca741 100644 --- a/usr/src/uts/common/fs/zfs/zap.c +++ b/usr/src/uts/common/fs/zfs/zap.c @@ -1317,8 +1317,8 @@ fzap_get_stats(zap_t *zap, zap_stats_t *zs) } int -fzap_count_write(zap_name_t *zn, int add, uint64_t *towrite, - uint64_t *tooverwrite) +fzap_count_write(zap_name_t *zn, int add, refcount_t *towrite, + refcount_t *tooverwrite) { zap_t *zap = zn->zn_zap; zap_leaf_t *l; @@ -1328,9 +1328,11 @@ fzap_count_write(zap_name_t *zn, int add, uint64_t *towrite, * Account for the header block of the fatzap. */ if (!add && dmu_buf_freeable(zap->zap_dbuf)) { - *tooverwrite += zap->zap_dbuf->db_size; + (void) refcount_add_many(tooverwrite, + zap->zap_dbuf->db_size, FTAG); } else { - *towrite += zap->zap_dbuf->db_size; + (void) refcount_add_many(towrite, + zap->zap_dbuf->db_size, FTAG); } /* @@ -1342,10 +1344,13 @@ fzap_count_write(zap_name_t *zn, int add, uint64_t *towrite, * could extend the table. */ if (add) { - if (zap_f_phys(zap)->zap_ptrtbl.zt_blk == 0) - *towrite += zap->zap_dbuf->db_size; - else - *towrite += (zap->zap_dbuf->db_size * 3); + if (zap_f_phys(zap)->zap_ptrtbl.zt_blk == 0) { + (void) refcount_add_many(towrite, + zap->zap_dbuf->db_size, FTAG); + } else { + (void) refcount_add_many(towrite, + zap->zap_dbuf->db_size * 3, FTAG); + } } /* @@ -1358,13 +1363,14 @@ fzap_count_write(zap_name_t *zn, int add, uint64_t *towrite, } if (!add && dmu_buf_freeable(l->l_dbuf)) { - *tooverwrite += l->l_dbuf->db_size; + (void) refcount_add_many(tooverwrite, l->l_dbuf->db_size, FTAG); } else { /* * If this an add operation, the leaf block could split. * Hence, we need to account for an additional leaf block. */ - *towrite += (add ? 2 : 1) * l->l_dbuf->db_size; + (void) refcount_add_many(towrite, + (add ? 2 : 1) * l->l_dbuf->db_size, FTAG); } zap_put_leaf(l); |