diff options
| author | maybee <none@none> | 2006-12-14 11:54:54 -0800 |
|---|---|---|
| committer | maybee <none@none> | 2006-12-14 11:54:54 -0800 |
| commit | b6130ead041e56a0331b89b333bdddab8afb9b1c (patch) | |
| tree | 8aa57452349f20fdc68e56cc27c349c8ede9635f | |
| parent | f7832c8d6c8b1d0020951f2b254dca0a6a741824 (diff) | |
| download | illumos-joyent-b6130ead041e56a0331b89b333bdddab8afb9b1c.tar.gz | |
6493634 zvol should return ENOTSUP on DKIOCGVTOC ioctl
6496365 assertion failed: refcount_count(&tx->tx_space_written) + delta <= tx->tx_space_towrite
| -rw-r--r-- | usr/src/uts/common/fs/zfs/dmu_tx.c | 8 | ||||
| -rw-r--r-- | usr/src/uts/common/fs/zfs/zvol.c | 6 |
2 files changed, 12 insertions, 2 deletions
diff --git a/usr/src/uts/common/fs/zfs/dmu_tx.c b/usr/src/uts/common/fs/zfs/dmu_tx.c index 6b6aa7a136..13fd8d4d9d 100644 --- a/usr/src/uts/common/fs/zfs/dmu_tx.c +++ b/usr/src/uts/common/fs/zfs/dmu_tx.c @@ -545,11 +545,15 @@ dmu_tx_hold_zap(dmu_tx_t *tx, uint64_t object, int add, char *name) return; } + /* + * Use max block size here, since we don't know how much + * the size will change between now and the dbuf dirty call. + */ if (dsl_dataset_block_freeable(dn->dn_objset->os_dsl_dataset, dn->dn_phys->dn_blkptr[0].blk_birth)) - txh->txh_space_tooverwrite += dn->dn_datablksz; + txh->txh_space_tooverwrite += SPA_MAXBLOCKSIZE; else - txh->txh_space_towrite += dn->dn_datablksz; + txh->txh_space_towrite += SPA_MAXBLOCKSIZE; return; } diff --git a/usr/src/uts/common/fs/zfs/zvol.c b/usr/src/uts/common/fs/zfs/zvol.c index 2bacd61654..951b1a5d08 100644 --- a/usr/src/uts/common/fs/zfs/zvol.c +++ b/usr/src/uts/common/fs/zfs/zvol.c @@ -1068,6 +1068,12 @@ zvol_ioctl(dev_t dev, int cmd, intptr_t arg, int flag, cred_t *cr, int *rvalp) } return (error); + case DKIOCGGEOM: + case DKIOCGVTOC: + /* commands using these (like prtvtoc) expect ENOTSUP */ + error = ENOTSUP; + break; + default: error = ENOTTY; break; |
