[PATCH] btrfs/237: Use zone cap instead of zone size in fill_size and rest calculation

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



This test will break when zone capacity != zone size because the
calculation of the size to be filled is done using zone_size instead of
the actual capacity available per zone. Fix it by using zone capacity.

The support to extract zone capacity was added to blkzone only from
version 2.37. So zcap will be used only when the blkzone version is
greater or equal to 2.37.

Signed-off-by: Pankaj Raghav <p.raghav@xxxxxxxxxxx>
---
 tests/btrfs/237 | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/tests/btrfs/237 b/tests/btrfs/237
index 96940549..6d3fe2f2 100755
--- a/tests/btrfs/237
+++ b/tests/btrfs/237
@@ -36,7 +36,21 @@ get_data_bg()
 }
 
 zonesize=$(cat /sys/block/$(_short_dev $SCRATCH_DEV)/queue/chunk_sectors)
-zonesize=$((zonesize << 9))
+size=$((zonesize << 9))
+
+# blkzone supports printing zone cap only after version 2.37
+_blkzone_req_major_ver=2
+_blkzone_req_minor_ver=37
+blkzone_ver=$($BLKZONE_PROG --version | cut -d " " -f 4 | cut -d "-" -f 1)
+blkzone_ver=( ${blkzone_ver//./ } )
+blkzone_major_ver=${blkzone_ver[0]}
+blkzone_minor_ver=${blkzone_ver[1]}
+if [[ $blkzone_major_ver -ge $_blkzone_req_major_ver &&\
+	$blkzone_minor_ver -ge $_blkzone_req_minor_ver ]]; then
+	zonecap=$($BLKZONE_PROG report -c 1 $SCRATCH_DEV |\
+		grep -Po "cap ([0x\d]+)+" | cut -d ' ' -f 2)
+	size=$((zonecap << 9))
+fi
 
 _scratch_mkfs >/dev/null 2>&1
 _scratch_mount -o commit=1 # 1s commit time to speed up test
@@ -53,8 +67,8 @@ reclaim_threshold=75
 echo $reclaim_threshold > /sys/fs/btrfs/"$uuid"/bg_reclaim_threshold
 fill_percent=$((reclaim_threshold + 2))
 rest_percent=$((90 - fill_percent)) # make sure we're not creating a new BG
-fill_size=$((zonesize * fill_percent / 100))
-rest=$((zonesize * rest_percent / 100))
+fill_size=$((size * fill_percent / 100))
+rest=$((size * rest_percent / 100))
 
 # step 1, fill FS over $fillsize
 $XFS_IO_PROG -fc "pwrite 0 $fill_size" $SCRATCH_MNT/$seq.test1 >> $seqres.full
-- 
2.25.1




[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux