From 817b1b6e7b6f9b8890a550c7c7efabdba41dd352 Mon Sep 17 00:00:00 2001 From: Matthew Ahrens Date: Thu, 29 Jun 2017 10:18:03 -0700 Subject: Clean up large dnode code Resolves issues discovered when porting to OpenZFS. * Lint warnings. * Made dnode_move_impl() large dnode aware. This functionality is currently unused on Linux. Reviewed-by: Ned Bass Reviewed-by: Brian Behlendorf Signed-off-by: Matthew Ahrens Closes #6262 --- cmd/ztest/ztest.c | 1 + module/zfs/dbuf.c | 3 ++- module/zfs/dnode.c | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cmd/ztest/ztest.c b/cmd/ztest/ztest.c index 39fbfd993..b9eef07e1 100644 --- a/cmd/ztest/ztest.c +++ b/cmd/ztest/ztest.c @@ -4986,6 +4986,7 @@ ztest_dmu_commit_callbacks(ztest_ds_t *zd, uint64_t id) * are consistent what was stored in the block tag when it was created, * and that its unused bonus buffer space has not been overwritten. */ +/* ARGSUSED */ void ztest_verify_dnode_bt(ztest_ds_t *zd, uint64_t id) { diff --git a/module/zfs/dbuf.c b/module/zfs/dbuf.c index 70cc3108d..f4e24e209 100644 --- a/module/zfs/dbuf.c +++ b/module/zfs/dbuf.c @@ -3419,7 +3419,8 @@ dbuf_write_ready(zio_t *zio, arc_buf_t *buf, void *vdb) if (dn->dn_type == DMU_OT_DNODE) { i = 0; while (i < db->db.db_size) { - dnode_phys_t *dnp = db->db.db_data + i; + dnode_phys_t *dnp = + (void *)(((char *)db->db.db_data) + i); i += DNODE_MIN_SIZE; if (dnp->dn_type != DMU_OT_NONE) { diff --git a/module/zfs/dnode.c b/module/zfs/dnode.c index fd4acbbaa..57156484b 100644 --- a/module/zfs/dnode.c +++ b/module/zfs/dnode.c @@ -330,7 +330,7 @@ dnode_buf_byteswap(void *vbuf, size_t size) ASSERT((size & (sizeof (dnode_phys_t)-1)) == 0); while (i < size) { - dnode_phys_t *dnp = vbuf + i; + dnode_phys_t *dnp = (void *)(((char *)vbuf) + i); dnode_byteswap(dnp); i += DNODE_MIN_SIZE; @@ -733,6 +733,7 @@ dnode_move_impl(dnode_t *odn, dnode_t *ndn) ndn->dn_datablkszsec = odn->dn_datablkszsec; ndn->dn_datablksz = odn->dn_datablksz; ndn->dn_maxblkid = odn->dn_maxblkid; + ndn->dn_num_slots = odn->dn_num_slots; bcopy(&odn->dn_next_nblkptr[0], &ndn->dn_next_nblkptr[0], sizeof (odn->dn_next_nblkptr)); bcopy(&odn->dn_next_nlevels[0], &ndn->dn_next_nlevels[0], -- cgit v1.2.3