diff --git a/cmds/filesystem-usage.c b/cmds/filesystem-usage.c
index bac0f0fd..01729e18 100644
--- a/cmds/filesystem-usage.c
+++ b/cmds/filesystem-usage.c
@@ -806,11 +806,17 @@ int load_chunk_and_device_info(int fd, struct chunk_info **chunkinfo,
  */
 static u64 calc_chunk_size(struct chunk_info *ci)
 {
-	u32 div;
+	u32 div = 1;
 
-	/* No parity + sub_stripes, so order of "-" and "/" does not matter */
-	div = (ci->num_stripes - btrfs_bg_type_to_nparity(ci->type)) /
-	      btrfs_bg_type_to_sub_stripes(ci->type);
+	/*
+	 * The formula doesn't work for RAID1/DUP types, we should just return the
+	 * chunk size
+	 */
+	if (!(ci->type & (BTRFS_BLOCK_GROUP_RAID1_MASK|BTRFS_BLOCK_GROUP_DUP))) {
+		/* No parity + sub_stripes, so order of "-" and "/" does not matter */
+		div = (ci->num_stripes - btrfs_bg_type_to_nparity(ci->type)) /
+			btrfs_bg_type_to_sub_stripes(ci->type);
+	}
 
 	return ci->size / div;
 }