mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
Illumos 5047 - don't use atomic_*_nv if you discard the return value
5047 don't use atomic_*_nv if you discard the return value Author: Josef 'Jeff' Sipek <josef.sipek@nexenta.com> Reviewed by: Garrett D'Amore <garrett@damore.org> Reviewed by: Jason King <jason.brian.king@gmail.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Approved by: Robert Mustacchi <rm@joyent.com> References: https://www.illumos.org/issues/5047 https://github.com/illumos/illumos-gate/commit/640c167 Porting Notes: Several hunks from the original patch where not specific to ZFS and thus were dropped. Ported-by: Chris Dunlop <chris@onthe.net.au> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Richard Yao <ryao@gentoo.org> Issue #3172
This commit is contained in:
parent
7f3e466283
commit
73ad4a9f3c
@ -1647,7 +1647,7 @@ dbuf_clear(dmu_buf_impl_t *db)
|
|||||||
dndb = dn->dn_dbuf;
|
dndb = dn->dn_dbuf;
|
||||||
if (db->db_blkid != DMU_BONUS_BLKID && MUTEX_HELD(&dn->dn_dbufs_mtx)) {
|
if (db->db_blkid != DMU_BONUS_BLKID && MUTEX_HELD(&dn->dn_dbufs_mtx)) {
|
||||||
list_remove(&dn->dn_dbufs, db);
|
list_remove(&dn->dn_dbufs, db);
|
||||||
(void) atomic_dec_32_nv(&dn->dn_dbufs_count);
|
atomic_dec_32(&dn->dn_dbufs_count);
|
||||||
membar_producer();
|
membar_producer();
|
||||||
DB_DNODE_EXIT(db);
|
DB_DNODE_EXIT(db);
|
||||||
/*
|
/*
|
||||||
@ -1832,7 +1832,7 @@ dbuf_create(dnode_t *dn, uint8_t level, uint64_t blkid,
|
|||||||
ASSERT(dn->dn_object == DMU_META_DNODE_OBJECT ||
|
ASSERT(dn->dn_object == DMU_META_DNODE_OBJECT ||
|
||||||
refcount_count(&dn->dn_holds) > 0);
|
refcount_count(&dn->dn_holds) > 0);
|
||||||
(void) refcount_add(&dn->dn_holds, db);
|
(void) refcount_add(&dn->dn_holds, db);
|
||||||
(void) atomic_inc_32_nv(&dn->dn_dbufs_count);
|
atomic_inc_32(&dn->dn_dbufs_count);
|
||||||
|
|
||||||
dprintf_dbuf(db, "db=%p\n", db);
|
dprintf_dbuf(db, "db=%p\n", db);
|
||||||
|
|
||||||
@ -1878,7 +1878,7 @@ dbuf_destroy(dmu_buf_impl_t *db)
|
|||||||
dn = DB_DNODE(db);
|
dn = DB_DNODE(db);
|
||||||
mutex_enter(&dn->dn_dbufs_mtx);
|
mutex_enter(&dn->dn_dbufs_mtx);
|
||||||
list_remove(&dn->dn_dbufs, db);
|
list_remove(&dn->dn_dbufs, db);
|
||||||
(void) atomic_dec_32_nv(&dn->dn_dbufs_count);
|
atomic_dec_32(&dn->dn_dbufs_count);
|
||||||
mutex_exit(&dn->dn_dbufs_mtx);
|
mutex_exit(&dn->dn_dbufs_mtx);
|
||||||
DB_DNODE_EXIT(db);
|
DB_DNODE_EXIT(db);
|
||||||
/*
|
/*
|
||||||
@ -2207,7 +2207,7 @@ dbuf_rele_and_unlock(dmu_buf_impl_t *db, void *tag)
|
|||||||
* until the move completes.
|
* until the move completes.
|
||||||
*/
|
*/
|
||||||
DB_DNODE_ENTER(db);
|
DB_DNODE_ENTER(db);
|
||||||
(void) atomic_dec_32_nv(&DB_DNODE(db)->dn_dbufs_count);
|
atomic_dec_32(&DB_DNODE(db)->dn_dbufs_count);
|
||||||
DB_DNODE_EXIT(db);
|
DB_DNODE_EXIT(db);
|
||||||
/*
|
/*
|
||||||
* The bonus buffer's dnode hold is no longer discounted
|
* The bonus buffer's dnode hold is no longer discounted
|
||||||
|
@ -283,7 +283,7 @@ dmu_bonus_hold(objset_t *os, uint64_t object, void *tag, dmu_buf_t **dbp)
|
|||||||
/* as long as the bonus buf is held, the dnode will be held */
|
/* as long as the bonus buf is held, the dnode will be held */
|
||||||
if (refcount_add(&db->db_holds, tag) == 1) {
|
if (refcount_add(&db->db_holds, tag) == 1) {
|
||||||
VERIFY(dnode_add_ref(dn, db));
|
VERIFY(dnode_add_ref(dn, db));
|
||||||
(void) atomic_inc_32_nv(&dn->dn_dbufs_count);
|
atomic_inc_32(&dn->dn_dbufs_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user