RE: [PATCH blktests v2] loop/010: do not assume /dev/loop0

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

 



Hi Shinichiro,

> -----Original Message-----
> From: Shinichiro Kawasaki <shinichiro.kawasaki@xxxxxxx>
> Sent: Wednesday, June 26, 2024 7:58 AM
> To: Gulam Mohamed <gulam.mohamed@xxxxxxxxxx>
> Cc: linux-block@xxxxxxxxxxxxxxx; Chaitanya Kulkarni <kch@xxxxxxxxxx>
> Subject: Re: [PATCH blktests v2] loop/010: do not assume /dev/loop0
> 
> On Jun 25, 2024 / 14:10, Gulam Mohamed wrote:
> > Hi Shinichiro,
> >
> > > -----Original Message-----
> > > From: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx>
> > > Sent: Tuesday, June 25, 2024 4:50 PM
> > > To: linux-block@xxxxxxxxxxxxxxx
> > > Cc: Gulam Mohamed <gulam.mohamed@xxxxxxxxxx>; Chaitanya
> Kulkarni
> > > <kch@xxxxxxxxxx>; Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx>
> > > Subject: [PATCH blktests v2] loop/010: do not assume /dev/loop0
> > >
> > > The current implementation of the test case loop/010 assumes that
> > > the prepared loop device is /dev/loop0, which is not always true.
> > > When other loop devices are set up before the test case run, the
> > > assumption is wrong and the test case fails.
> > >
> > > To avoid the failure, use the prepared loop device name stored in
> > > $loop_device instead of /dev/loop0. Adjust the grep string to meet
> > > the device name. Also use "losetup --detach" instead of "losetup
> > > --detach-all" to not detach the loop devices which existed before
> > > the test case runs.
> > >
> > > Fixes: 1c4ae4fed9b4 ("loop: Detect a race condition between loop
> > > detach and
> > > open")
> > > Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx>
> > > ---
> > > Changes from v1:
> > > * Replaced the losetup --find option with the loop device name
> > > * Added the missing "p1" postfix to the blkid argument
> > >
> > >  tests/loop/010 | 23 +++++++++++++++--------
> > >  1 file changed, 15 insertions(+), 8 deletions(-)
> > >
> > > diff --git a/tests/loop/010 b/tests/loop/010 index ea396ec..ade8044
> > > 100755
> > > --- a/tests/loop/010
> > > +++ b/tests/loop/010
> > > @@ -16,18 +16,23 @@ requires() {
> > >  }
> > >
> > >  create_loop() {
> > > +	local dev=$1
> > > +
> > >  	while true
> > >  	do
> > > -		loop_device="$(losetup --partscan --find --show
> > > "${image_file}")"
> > > -		blkid /dev/loop0p1 >& /dev/null
> > > +		if losetup --partscan "$dev" "${image_file}" &> /dev/null;
> > > then
> > > +			blkid "$dev"p1 >& /dev/null
> > > +		fi
> > >  	done
> > >  }
> > >
> > >  detach_loop() {
> > > +	local dev=$1
> > > +
> > >  	while true
> > >  	do
> > > -		if [ -e /dev/loop0 ]; then
> > > -			losetup --detach /dev/loop0 >& /dev/null
> > > +		if [[ -e "$dev" ]]; then
> > > +			losetup --detach "$dev" >& /dev/null
> > >  		fi
> > >  	done
> > >  }
> > > @@ -38,6 +43,7 @@ test() {
> > >  	local create_pid
> > >  	local detach_pid
> > >  	local image_file="$TMPDIR/loopImg"
> > > +	local grep_str
> > >
> > >  	truncate --size 1G "${image_file}"
> > >  	parted --align none --script "${image_file}" mklabel gpt @@ -53,9
> > > +59,9 @@ test() {
> > >  	mkfs.xfs --force "${loop_device}p1" >& /dev/null
> > >  	losetup --detach "${loop_device}" >&  /dev/null
> > >
> > > -	create_loop &
> > > +	create_loop "${loop_device}" &
> > >  	create_pid=$!
> > > -	detach_loop &
> > > +	detach_loop "${loop_device}" &
> > >  	detach_pid=$!
> > >
> > >  	sleep "${TIMEOUT:-90}"
> > > @@ -66,8 +72,9 @@ test() {
> > >  		sleep 1
> > >  	} 2>/dev/null
> > >
> > > -	losetup --detach-all >& /dev/null
> > > -	if _dmesg_since_test_start | grep --quiet "partition scan of loop0
> > > failed (rc=-16)"; then
> > > +	losetup --detach "${loop_device}" >& /dev/null
> > > +	grep_str="partition scan of ${loop_device##*/} failed (rc=-16)"
> >
> > Can you please add this also "__loop_clr_fd: " to the grep_str (please note
> the "space" after ":")? So that the grep string looks like this:
> >
> > "__loop_clr_fd: partition scan of loop0 failed (rc=-16)"
> 
> I'm not sure if this change is a good one. The added string "__loop_clr_fd: "
> will distinguish which function reported the error message: _loop_clr_fd() or
> loop_reread_partitions(). This will make the test more accurate, probably.
> Having said that, the change will make the test fragile against the future
> function name changes. Once the function name changes in the kernel side,
> blktests side change will be required. I would like to reduce the possibility of
> such work.

I agree.

Reviewed-by: Gulam Mohamed <gulam.mohamed@xxxxxxxxxx>

Regards,
Gulam Mohamed.
> 
> >
> > Other than this, it looks good to me.
> >
> > Regards,
> > Gulam Mohamed.
> >
> > > +	if _dmesg_since_test_start | grep --quiet "$grep_str"; then
> > >  		echo "Fail"
> > >  	fi
> > >  	echo "Test complete"
> > > --
> > > 2.45.0
> >
> >





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux