bug-parted
[Top][All Lists]
Advanced

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

Re: F16 broken, rawhide ok? [Re: loop-related regression on Fedora 16


From: Jim Meyering
Subject: Re: F16 broken, rawhide ok? [Re: loop-related regression on Fedora 16
Date: Wed, 04 Jan 2012 14:28:54 +0100

Jim Meyering wrote:
> Brian C. Lane wrote:
>> On Wed, Dec 21, 2011 at 07:30:43PM +0100, Jim Meyering wrote:
>>> On Fedora 16 (3.1.5-6.fc16.x86_64), the two t8000*loop.sh tests have
>>> been failing for some time.  I've finally investigated and found it is
>>> due to this:
>>
>> It may be related to commit 1eb0cc30 where loop_get_partition_range was
>> added. It reads from '/sys/module/loop/parameters/max_part' which on my
>> F15 system (kernel 2.6.41.4-1.fc15.x86_64) returns 0.
>>
>> Partitioned loop devices certainly do work, so I think this is an error.
>> I also am not sure what will happen with systems where loop is not a
>> module.
>
> Hi Brian,
>
> I'm pretty sure this is an F16 kernel-related bug.
> When I create a loop device like this on F16,
>
>     truncate -s10m a && t=$(losetup --show -f a)
>
> and print its ext_range value,
>
>     cat /sys/devices/virtual/block/$(basename $t)/ext_range
>
> I get "1", which means not partitionable, according to disk_max_parts
> in include/linux/genhd.h which just returns gendisk.minors, described
> like this:
>
> struct gendisk {
>       /* major, first_minor and minors are input parameters only,
>        * don't use directly.  Use disk_devt() and disk_max_parts().
>        */
>       int major;                      /* major number of driver */
>       int first_minor;
>       int minors;                     /* maximum number of minors, =1 for
>
> However, when I do the same on rawhide (3.2.0-0.rc7.git4.1.fc17.x86_64),
> I get a reasonable value: 256.
>
> I've just filed a BZ for this:
>   http://bugzilla.redhat.com/771641

This makes us skip those two tests as long as the kernel lacks support:

>From ef106f4a7da003e162024ac99417180169bb59eb Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Wed, 4 Jan 2012 14:26:20 +0100
Subject: [PATCH] tests: skip loop-partitioning tests when ext_range is < 2

* tests/init.cfg (require_partitionable_loop_device_): New function.
* tests/t8001-loop-blkpg.sh: Use it.
* tests/t8000-loop.sh: Use it.
---
 tests/init.cfg            |    8 ++++++++
 tests/t8000-loop.sh       |    2 ++
 tests/t8001-loop-blkpg.sh |    2 ++
 3 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/tests/init.cfg b/tests/init.cfg
index 3109454..6072acd 100644
--- a/tests/init.cfg
+++ b/tests/init.cfg
@@ -82,5 +82,13 @@ require_erasable_()
   $df | grep "^$dev_[0-9]" && fail_ "a partition of $dev_ is already mounted"
 }

+# At least Fedora 16 (kernel 3.1.6-1.fc16.x86_64) fails this test.
+require_partitionable_loop_device_()
+{
+  case $(cat /sys/devices/virtual/block/$(basename $1)/ext_range) in
+    0|1) skip_ your system does not support loop partitioning;;
+  esac
+}
+
 . "$abs_top_srcdir/tests/t-lib-helpers.sh"
 . "$abs_top_srcdir/tests/t-local.sh"
diff --git a/tests/t8000-loop.sh b/tests/t8000-loop.sh
index 92f843e..0939b6f 100755
--- a/tests/t8000-loop.sh
+++ b/tests/t8000-loop.sh
@@ -31,6 +31,8 @@ cleanup_fn_()
 f1=$(pwd)/1; d1=$(loop_setup_ "$f1") \
   || skip_ "is this partition mounted with 'nodev'?"

+require_partitionable_loop_device_ $d1
+
 # Expect this to succeed.
 parted -s $d1 mklabel msdos > err 2>&1 || fail=1
 compare /dev/null err || fail=1     # expect no output
diff --git a/tests/t8001-loop-blkpg.sh b/tests/t8001-loop-blkpg.sh
index 19d2ff9..cb7ba92 100755
--- a/tests/t8001-loop-blkpg.sh
+++ b/tests/t8001-loop-blkpg.sh
@@ -41,6 +41,8 @@ dd if=/dev/zero of=backing_file bs=1M count=4 >/dev/null 2>&1 
|| fail=1
 loopdev=`losetup -f --show backing_file`
 test -z "$loopdev" && fail=1

+require_partitionable_loop_device_ $loopdev
+
 # Expect this to succeed
 parted -s "$loopdev" mklabel msdos > err 2>&1 || fail=1
 compare /dev/null err || fail=1     # expect no output
--
1.7.8.1.391.g2c2ad



reply via email to

[Prev in Thread] Current Thread [Next in Thread]