diff --git a/tests/btrfs/276 b/tests/btrfs/276
index 944b0c8f..a63b28bb 100755
--- a/tests/btrfs/276
+++ b/tests/btrfs/276
@@ -65,10 +65,17 @@ count_not_shared_extents()
 
 # Create a 16G file as that results in 131072 extents, all with a size of 128K
 # (due to compression), and a fs tree with a height of 3 (root node at level 2).
+#
+# But due to writeback can happen halfway, we may have slightly more extents
+# than 128K, so we allow 5% increase in the number of extents.
+#
 # We want to verify later that fiemap correctly reports the sharedness of each
 # extent, even when it needs to switch from one leaf to the next one and from a
 # node at level 1 to the next node at level 1.
 #
+nr_extents_lower=$((128 * 1024))
+nr_extents_upper=$((128 * 1024 + 128 * 1024 / 20))
+
 $XFS_IO_PROG -f -c "pwrite -b 8M 0 16G" $SCRATCH_MNT/foo | _filter_xfs_io
 
 # Sync to flush delalloc and commit the current transaction, so fiemap will see
@@ -76,13 +83,22 @@ $XFS_IO_PROG -f -c "pwrite -b 8M 0 16G" $SCRATCH_MNT/foo | _filter_xfs_io
 sync
 
 # All extents should be reported as non shared (131072 extents).
-echo "Number of non-shared extents in the whole file: $(count_not_shared_extents)"
+found1=$(count_not_shared_extents)
+echo "Number of non-shared extents in the whole file: ${found1}" >> $seqres.full
+
+if [ $found1 -lt $nr_extents_lower -o $found1 -gt $nr_extents_upper ]; then
+	echo "unexpected initial number of extents, has $found1 expect [$nr_extents_lower, $nr_extents_upper]"
+fi
 
 # Creating a snapshot.
 $BTRFS_UTIL_PROG subvolume snapshot $SCRATCH_MNT $SCRATCH_MNT/snap | _filter_scratch
 
 # We have a snapshot, so now all extents should be reported as shared.
-echo "Number of shared extents in the whole file: $(count_shared_extents)"
+found2=$(count_shared_extents)
+echo "Number of shared extents in the whole file: ${found2}" >> $seqres.full
+if [ $found2 -ne $found1 ]; then
+	echo "unexpected shared extents, has $found2 expect $found1"
+fi
 
 # Now COW two file ranges, of 1M each, in the snapshot's file.
 # So 16 extents should become non-shared after this.
@@ -97,8 +113,18 @@ sync
 
 # Now we should have 16 non-shared extents and 131056 (131072 - 16) shared
 # extents.
-echo "Number of non-shared extents in the whole file: $(count_not_shared_extents)"
-echo "Number of shared extents in the whole file: $(count_shared_extents)"
+found3=$(count_not_shared_extents)
+found4=$(count_shared_extents)
+echo "Number of non-shared extents in the whole file: ${found3}"
+echo "Number of shared extents in the whole file: ${found4}" >> $seqres.full
+
+if [ $found3 != 16 ]; then
+	echo "Unexpected number of non-shared extents, has $found3 expect 16"
+fi
+
+if [ $found4 != $(( $found1 - $found3 )) ]; then
+	echo "Unexpected number of shared extents, has $found4 expect $(( $found1 - $found3 ))"
+fi
 
 # Check that the non-shared extents are indeed in the expected file ranges (each
 # with 8 extents).
@@ -117,7 +143,12 @@ _scratch_remount commit=1
 sleep 1.1
 
 # Now all extents should be reported as not shared (131072 extents).
-echo "Number of non-shared extents in the whole file: $(count_not_shared_extents)"
+found5=$(count_not_shared_extents)
+echo "Number of non-shared extents in the whole file: ${found5}" >> $seqres.full
+
+if [ $found5 != $found1 ]; then
+	echo "Unexpected final number of non-shared extents, has $found5 expect $found1"
+fi
 
 # success, all done
 status=0
diff --git a/tests/btrfs/276.out b/tests/btrfs/276.out
index 3bf5a5e6..e318c2e9 100644
--- a/tests/btrfs/276.out
+++ b/tests/btrfs/276.out
@@ -1,16 +1,12 @@
 QA output created by 276
 wrote 17179869184/17179869184 bytes at offset 0
 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-Number of non-shared extents in the whole file: 131072
 Create a snapshot of 'SCRATCH_MNT' in 'SCRATCH_MNT/snap'
-Number of shared extents in the whole file: 131072
 wrote 1048576/1048576 bytes at offset 8388608
 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 wrote 1048576/1048576 bytes at offset 12884901888
 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
 Number of non-shared extents in the whole file: 16
-Number of shared extents in the whole file: 131056
 Number of non-shared extents in range [8M, 9M): 8
 Number of non-shared extents in range [12G, 12G + 1M): 8
 Delete subvolume (commit): 'SCRATCH_MNT/snap'
-Number of non-shared extents in the whole file: 131072
