diff options
author | Lin Ling <Lin.Ling@Sun.COM> | 2010-06-02 14:51:30 -0700 |
---|---|---|
committer | Lin Ling <Lin.Ling@Sun.COM> | 2010-06-02 14:51:30 -0700 |
commit | a0e4757d0a6af35e4f970785eae9598f525e5a12 (patch) | |
tree | fc2c6abfff88a0f840ef35c0c0f02578edcaf080 /usr/src/uts/common | |
parent | 88acca042ae2c1a7a6a8bb2dcc6641d798574cd4 (diff) | |
download | illumos-joyent-a0e4757d0a6af35e4f970785eae9598f525e5a12.tar.gz |
6956280 mutex problem in bpobj_iterate_impl()
Diffstat (limited to 'usr/src/uts/common')
-rw-r--r-- | usr/src/uts/common/fs/zfs/bpobj.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/usr/src/uts/common/fs/zfs/bpobj.c b/usr/src/uts/common/fs/zfs/bpobj.c index f81c48aca6..d69a1a7f47 100644 --- a/usr/src/uts/common/fs/zfs/bpobj.c +++ b/usr/src/uts/common/fs/zfs/bpobj.c @@ -210,8 +210,10 @@ bpobj_iterate_impl(bpobj_t *bpo, bpobj_itor_t func, void *arg, dmu_tx_t *tx, ASSERT(bpo->bpo_havecomp); err = dmu_object_info(bpo->bpo_os, bpo->bpo_phys->bpo_subobjs, &doi); - if (err) + if (err) { + mutex_exit(&bpo->bpo_lock); return (err); + } epb = doi.doi_data_block_size / sizeof (uint64_t); for (i = bpo->bpo_phys->bpo_num_subobjs - 1; i >= 0; i--) { |