diff options
author | Andriy Gapon <avg@FreeBSD.org> | 2019-10-15 14:13:01 +0000 |
---|---|---|
committer | Andriy Gapon <avg@FreeBSD.org> | 2019-10-15 14:13:01 +0000 |
commit | f21865af24bc49220343581d5261ef9d9c641f69 (patch) | |
tree | 0c6950cb43dfe7ff923f831e9b87ce00c603eaa7 /uts/common/fs/zfs/dnode.c | |
parent | 9aab037f9285496e41e79c4d8c5d456acb8ec137 (diff) | |
download | src-f21865af24bc49220343581d5261ef9d9c641f69.tar.gz src-f21865af24bc49220343581d5261ef9d9c641f69.zip |
10452 ZoL: merge in large dnode feature fixes
illumos/illumos-gate@946342a260bbae359b48bf142ec1fe40792ee862
https://github.com/illumos/illumos-gate/commit/946342a260bbae359b48bf142ec1fe40792ee862
https://www.illumos.org/issues/10452
illumos is missing a few small follow up ZoL bug fixes for the large dnode
feature. We should pull those in.
Those commits are in the ZoL tree as (newest to oldest):
PR 8435 - 75d6b7ddca269542279975f716a343bb40a79baf - Add missing copyright
notice to large_dnode tests
PR 7433 - e14a32b1c844d924b9f093375c0badcf10f61741 - Fix object reclaim when
using large dnodes
PR 6616 - 48fbb9ddbf2281911560dfbc2821aa8b74127315 - Free objects when
receiving full stream as clone
PR 6695 - 39f56627ae988d09b4e3803c01c22b2026b2310e - receive_freeobjects()
skips freeing some object
Portions contributed by: Ned Bass <bass6@llnl.gov>
Portions contributed by: Tom Caputi <tcaputi@datto.com>
Author: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Notes
Notes:
svn path=/vendor-sys/illumos/dist/; revision=353551
Diffstat (limited to 'uts/common/fs/zfs/dnode.c')
-rw-r--r-- | uts/common/fs/zfs/dnode.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/uts/common/fs/zfs/dnode.c b/uts/common/fs/zfs/dnode.c index 1305a4f64aa9..6c1d91ddfa98 100644 --- a/uts/common/fs/zfs/dnode.c +++ b/uts/common/fs/zfs/dnode.c @@ -683,8 +683,7 @@ dnode_reallocate(dnode_t *dn, dmu_object_type_t ot, int blocksize, ASSERT(DMU_OT_IS_VALID(bonustype)); ASSERT3U(bonuslen, <=, DN_BONUS_SIZE(spa_maxdnodesize(dmu_objset_spa(dn->dn_objset)))); - - dn_slots = dn_slots > 0 ? dn_slots : DNODE_MIN_SLOTS; + ASSERT3U(bonuslen, <=, DN_BONUS_SIZE(dn_slots << DNODE_SHIFT)); dnode_free_interior_slots(dn); DNODE_STAT_BUMP(dnode_reallocate); |