zdb: Fix big parameter passed by value

This is not in performance critical code, but static analyzers will
complain about it, so lets switch to pass by pointer here.

Reported-by: Coverity (CID-1524384)
Reviewed-by: Damian Szuberski <szuberskidamian@gmail.com>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Closes #14263
This commit is contained in:
Richard Yao 2022-12-04 17:58:46 -05:00 committed by Brian Behlendorf
parent f1100863f7
commit ecccaede68

View File

@ -4341,26 +4341,26 @@ dump_l2arc_log_entries(uint64_t log_entries,
} }
static void static void
dump_l2arc_log_blkptr(l2arc_log_blkptr_t lbps) dump_l2arc_log_blkptr(const l2arc_log_blkptr_t *lbps)
{ {
(void) printf("|\t\tdaddr: %llu\n", (u_longlong_t)lbps.lbp_daddr); (void) printf("|\t\tdaddr: %llu\n", (u_longlong_t)lbps->lbp_daddr);
(void) printf("|\t\tpayload_asize: %llu\n", (void) printf("|\t\tpayload_asize: %llu\n",
(u_longlong_t)lbps.lbp_payload_asize); (u_longlong_t)lbps->lbp_payload_asize);
(void) printf("|\t\tpayload_start: %llu\n", (void) printf("|\t\tpayload_start: %llu\n",
(u_longlong_t)lbps.lbp_payload_start); (u_longlong_t)lbps->lbp_payload_start);
(void) printf("|\t\tlsize: %llu\n", (void) printf("|\t\tlsize: %llu\n",
(u_longlong_t)L2BLK_GET_LSIZE((&lbps)->lbp_prop)); (u_longlong_t)L2BLK_GET_LSIZE(lbps->lbp_prop));
(void) printf("|\t\tasize: %llu\n", (void) printf("|\t\tasize: %llu\n",
(u_longlong_t)L2BLK_GET_PSIZE((&lbps)->lbp_prop)); (u_longlong_t)L2BLK_GET_PSIZE(lbps->lbp_prop));
(void) printf("|\t\tcompralgo: %llu\n", (void) printf("|\t\tcompralgo: %llu\n",
(u_longlong_t)L2BLK_GET_COMPRESS((&lbps)->lbp_prop)); (u_longlong_t)L2BLK_GET_COMPRESS(lbps->lbp_prop));
(void) printf("|\t\tcksumalgo: %llu\n", (void) printf("|\t\tcksumalgo: %llu\n",
(u_longlong_t)L2BLK_GET_CHECKSUM((&lbps)->lbp_prop)); (u_longlong_t)L2BLK_GET_CHECKSUM(lbps->lbp_prop));
(void) printf("|\n\n"); (void) printf("|\n\n");
} }
static void static void
dump_l2arc_log_blocks(int fd, l2arc_dev_hdr_phys_t l2dhdr, dump_l2arc_log_blocks(int fd, const l2arc_dev_hdr_phys_t *l2dhdr,
l2arc_dev_hdr_phys_t *rebuild) l2arc_dev_hdr_phys_t *rebuild)
{ {
l2arc_log_blk_phys_t this_lb; l2arc_log_blk_phys_t this_lb;
@ -4373,13 +4373,13 @@ dump_l2arc_log_blocks(int fd, l2arc_dev_hdr_phys_t l2dhdr,
if (!dump_opt['q']) if (!dump_opt['q'])
print_l2arc_log_blocks(); print_l2arc_log_blocks();
memcpy(lbps, l2dhdr.dh_start_lbps, sizeof (lbps)); memcpy(lbps, l2dhdr->dh_start_lbps, sizeof (lbps));
dev.l2ad_evict = l2dhdr.dh_evict; dev.l2ad_evict = l2dhdr->dh_evict;
dev.l2ad_start = l2dhdr.dh_start; dev.l2ad_start = l2dhdr->dh_start;
dev.l2ad_end = l2dhdr.dh_end; dev.l2ad_end = l2dhdr->dh_end;
if (l2dhdr.dh_start_lbps[0].lbp_daddr == 0) { if (l2dhdr->dh_start_lbps[0].lbp_daddr == 0) {
/* no log blocks to read */ /* no log blocks to read */
if (!dump_opt['q']) { if (!dump_opt['q']) {
(void) printf("No log blocks to read\n"); (void) printf("No log blocks to read\n");
@ -4391,7 +4391,7 @@ dump_l2arc_log_blocks(int fd, l2arc_dev_hdr_phys_t l2dhdr,
L2BLK_GET_PSIZE((&lbps[0])->lbp_prop); L2BLK_GET_PSIZE((&lbps[0])->lbp_prop);
} }
dev.l2ad_first = !!(l2dhdr.dh_flags & L2ARC_DEV_HDR_EVICT_FIRST); dev.l2ad_first = !!(l2dhdr->dh_flags & L2ARC_DEV_HDR_EVICT_FIRST);
for (;;) { for (;;) {
if (!l2arc_log_blkptr_valid(&dev, &lbps[0])) if (!l2arc_log_blkptr_valid(&dev, &lbps[0]))
@ -4412,7 +4412,7 @@ dump_l2arc_log_blocks(int fd, l2arc_dev_hdr_phys_t l2dhdr,
failed++; failed++;
if (!dump_opt['q']) { if (!dump_opt['q']) {
(void) printf("Invalid cksum\n"); (void) printf("Invalid cksum\n");
dump_l2arc_log_blkptr(lbps[0]); dump_l2arc_log_blkptr(&lbps[0]);
} }
break; break;
} }
@ -4449,11 +4449,11 @@ dump_l2arc_log_blocks(int fd, l2arc_dev_hdr_phys_t l2dhdr,
(void) printf("lb[%4llu]\tmagic: %llu\n", (void) printf("lb[%4llu]\tmagic: %llu\n",
(u_longlong_t)rebuild->dh_lb_count, (u_longlong_t)rebuild->dh_lb_count,
(u_longlong_t)this_lb.lb_magic); (u_longlong_t)this_lb.lb_magic);
dump_l2arc_log_blkptr(lbps[0]); dump_l2arc_log_blkptr(&lbps[0]);
} }
if (dump_opt['l'] > 2 && !dump_opt['q']) if (dump_opt['l'] > 2 && !dump_opt['q'])
dump_l2arc_log_entries(l2dhdr.dh_log_entries, dump_l2arc_log_entries(l2dhdr->dh_log_entries,
this_lb.lb_entries, this_lb.lb_entries,
rebuild->dh_lb_count); rebuild->dh_lb_count);
@ -4531,7 +4531,7 @@ dump_l2arc_header(int fd)
(u_longlong_t)l2dhdr.dh_trim_state); (u_longlong_t)l2dhdr.dh_trim_state);
} }
dump_l2arc_log_blocks(fd, l2dhdr, &rebuild); dump_l2arc_log_blocks(fd, &l2dhdr, &rebuild);
/* /*
* The total aligned size of log blocks and the number of log blocks * The total aligned size of log blocks and the number of log blocks
* reported in the header of the device may be less than what zdb * reported in the header of the device may be less than what zdb