diff options
author | mm <mm@FreeBSD.org> | 2013-03-05 15:35:57 +0000 |
---|---|---|
committer | mm <mm@FreeBSD.org> | 2013-03-05 15:35:57 +0000 |
commit | dac548279b6823b3b3589d37d7fa824330e02405 (patch) | |
tree | 4b9de989b244e0df622bee3b18c1df3de9cab396 | |
parent | b4369651e73bf0084e73bc9f88805eb0cf157bc9 (diff) | |
download | FreeBSD-src-dac548279b6823b3b3589d37d7fa824330e02405.zip FreeBSD-src-dac548279b6823b3b3589d37d7fa824330e02405.tar.gz |
Update vendor/illumos/dist and vendor-sys/illumos/dist
to illumos-gate 13977:af7f2603d4d7
Illumos ZFS issues:
3603 panic from bpobj_enqueue_subobj()
3604 zdb should print bpobjs more verbosely
-rw-r--r-- | uts/common/fs/zfs/bpobj.c | 8 | ||||
-rw-r--r-- | uts/common/fs/zfs/dmu.c | 2 |
2 files changed, 8 insertions, 2 deletions
diff --git a/uts/common/fs/zfs/bpobj.c b/uts/common/fs/zfs/bpobj.c index bcb5f33..1b9baa7 100644 --- a/uts/common/fs/zfs/bpobj.c +++ b/uts/common/fs/zfs/bpobj.c @@ -20,7 +20,7 @@ */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2012 by Delphix. All rights reserved. + * Copyright (c) 2013 by Delphix. All rights reserved. */ #include <sys/bpobj.h> @@ -418,6 +418,12 @@ bpobj_enqueue_subobj(bpobj_t *bpo, uint64_t subobj, dmu_tx_t *tx) VERIFY3U(0, ==, dmu_buf_hold(bpo->bpo_os, subsubobjs, 0, FTAG, &subdb, 0)); + /* + * Make sure that we are not asking dmu_write() + * to write more data than we have in our buffer. + */ + VERIFY3U(subdb->db_size, >=, + numsubsub * sizeof (subobj)); dmu_write(bpo->bpo_os, bpo->bpo_phys->bpo_subobjs, bpo->bpo_phys->bpo_num_subobjs * sizeof (subobj), numsubsub * sizeof (subobj), subdb->db_data, tx); diff --git a/uts/common/fs/zfs/dmu.c b/uts/common/fs/zfs/dmu.c index 6ee37ac..3e09873 100644 --- a/uts/common/fs/zfs/dmu.c +++ b/uts/common/fs/zfs/dmu.c @@ -1698,7 +1698,7 @@ dmu_object_info_from_dnode(dnode_t *dn, dmu_object_info_t *doi) doi->doi_checksum = dn->dn_checksum; doi->doi_compress = dn->dn_compress; doi->doi_physical_blocks_512 = (DN_USED_BYTES(dnp) + 256) >> 9; - doi->doi_max_offset = (dnp->dn_maxblkid + 1) * dn->dn_datablksz; + doi->doi_max_offset = (dn->dn_maxblkid + 1) * dn->dn_datablksz; doi->doi_fill_count = 0; for (int i = 0; i < dnp->dn_nblkptr; i++) doi->doi_fill_count += dnp->dn_blkptr[i].blk_fill; |