mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-25 18:59:33 +03:00
4188 assertion failed in dmu_tx_hold_free(): dn_datablkshift != 0
Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: Christopher Siden <christopher.siden@delphix.com> Approved by: Garrett D'Amore <garrett@damore.org> Refences: https://www.illumos.org/issues/4188 illumos/illumos-gate@bb411a08b0 Ported-by: Chris Dunlop <chris@onthe.net.au> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #2091
This commit is contained in:
parent
8b4646494c
commit
2e7b7657cd
@ -656,9 +656,16 @@ dmu_tx_hold_free(dmu_tx_t *tx, uint64_t object, uint64_t off, uint64_t len)
|
|||||||
uint64_t end = (off + len) >> shift;
|
uint64_t end = (off + len) >> shift;
|
||||||
uint64_t i;
|
uint64_t i;
|
||||||
|
|
||||||
ASSERT(dn->dn_datablkshift != 0);
|
|
||||||
ASSERT(dn->dn_indblkshift != 0);
|
ASSERT(dn->dn_indblkshift != 0);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* dnode_reallocate() can result in an object with indirect
|
||||||
|
* blocks having an odd data block size. In this case,
|
||||||
|
* just check the single block.
|
||||||
|
*/
|
||||||
|
if (dn->dn_datablkshift == 0)
|
||||||
|
start = end = 0;
|
||||||
|
|
||||||
zio = zio_root(tx->tx_pool->dp_spa,
|
zio = zio_root(tx->tx_pool->dp_spa,
|
||||||
NULL, NULL, ZIO_FLAG_CANFAIL);
|
NULL, NULL, ZIO_FLAG_CANFAIL);
|
||||||
for (i = start; i <= end; i++) {
|
for (i = start; i <= end; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user