mirror of
				https://git.proxmox.com/git/mirror_zfs
				synced 2025-11-04 08:36:37 +00:00 
			
		
		
		
	Fix coverity defects: CID 155928
CID 155928: Integer handling issues (DIVIDE_BY_ZERO) In the current vdev label, the leaf count is always non-zero but it doesn't hurt to check the count for future proofing. Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Don Brady <don.brady@intel.com> Closes #5749
This commit is contained in:
		
							parent
							
								
									582cc01416
								
							
						
					
					
						commit
						cd5083c00c
					
				@ -2303,7 +2303,7 @@ dump_nvlist_stats(nvlist_t *nvl, size_t cap)
 | 
			
		||||
{
 | 
			
		||||
	zdb_nvl_stats_t stats = { 0 };
 | 
			
		||||
	size_t size, sum = 0, total;
 | 
			
		||||
	size_t noise, average;
 | 
			
		||||
	size_t noise;
 | 
			
		||||
 | 
			
		||||
	/* requires nvlist with non-unique names for stat collection */
 | 
			
		||||
	VERIFY0(nvlist_alloc(&stats.zns_string, 0, 0));
 | 
			
		||||
@ -2344,15 +2344,18 @@ dump_nvlist_stats(nvlist_t *nvl, size_t cap)
 | 
			
		||||
	(void) printf("%12s %4d %6d bytes (%5.2f%%)\n\n", "nvlists:",
 | 
			
		||||
	    stats.zns_list_count, (int)size, 100.0 * size / total);
 | 
			
		||||
 | 
			
		||||
	average = stats.zns_leaf_total / stats.zns_leaf_count;
 | 
			
		||||
	(void) printf("%12s %4d %6d bytes average\n",
 | 
			
		||||
	    "leaf vdevs:", stats.zns_leaf_count, (int)average);
 | 
			
		||||
	(void) printf("%24d bytes largest\n", (int)stats.zns_leaf_largest);
 | 
			
		||||
	if (stats.zns_leaf_count > 0) {
 | 
			
		||||
		size_t average = stats.zns_leaf_total / stats.zns_leaf_count;
 | 
			
		||||
 | 
			
		||||
	if (dump_opt['l'] >= 3)
 | 
			
		||||
		(void) printf("  space for %d additional leaf vdevs\n",
 | 
			
		||||
		    (int)((cap - total) / average));
 | 
			
		||||
		(void) printf("%12s %4d %6d bytes average\n", "leaf vdevs:",
 | 
			
		||||
		    stats.zns_leaf_count, (int)average);
 | 
			
		||||
		(void) printf("%24d bytes largest\n",
 | 
			
		||||
		    (int)stats.zns_leaf_largest);
 | 
			
		||||
 | 
			
		||||
		if (dump_opt['l'] >= 3 && average > 0)
 | 
			
		||||
			(void) printf("  space for %d additional leaf vdevs\n",
 | 
			
		||||
			    (int)((cap - total) / average));
 | 
			
		||||
	}
 | 
			
		||||
	(void) printf("\n");
 | 
			
		||||
 | 
			
		||||
	nvlist_free(stats.zns_string);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user