[Oneiric][SRU] Fix loop device notificaitons.

Herton Ronaldo Krzesinski herton.krzesinski at canonical.com
Thu Jan 19 13:15:49 UTC 2012


On Wed, Jan 18, 2012 at 10:46:57AM -0500, Ayan George wrote:
> 
> SRU Justification:
> 
> Impact: The loop device does not emit a change uevent when autoreleasing
> a device.  Programs that depend on uevents (like gvfs and ultimately
> Nautilus) never notice when loop devices are unmounted.
> 
> Bug-Link: https://bugs.launchpad.net/ubuntu/+source/usb-creator/+bug/548546
> 
> Fix: Apply 8a9c594422ecad912d6470888acdee9a1236ad68 from linux mainline
> -- Pass a valid bdev pointer to loop_clr_fd() instead of NULL so that
> it will emit the uevent.
> 
> The patch is very small and applies cleanly to ubuntu-oneiric.
> 
> Testcase:
> 
> (1) In a terminal, start udevadm in monitor mode:
> 
>   $ udevadm monitor
> 
> (2) In another terminal, mount an ISO image using the loopback device:
> 
>   $ sudo mount -o loop -t iso9660 your_image.iso /mnt
> 
> (3) Notice the change uevents that udevadm reports.
> 
> (4) Unmount image:
> 
>   $ sudo umount /mnt
> 
> (5) Note that udevadm does not report any changes.  With the patch
> applied, you will see the kernel noticiations.
> 
> 

> From 8a9c594422ecad912d6470888acdee9a1236ad68 Mon Sep 17 00:00:00 2001
> From: Phillip Susi <psusi at cfl.rr.com>
> Date: Wed, 21 Sep 2011 10:02:13 +0200
> Subject: [PATCH] drivers/block/loop.c: emit uevent on auto release
> 
> The loopback driver failed to emit the change uevent when auto releasing
> the device.  Fixed lo_release() to pass the bdev to loop_clr_fd() so it
> can emit the event.
> 
> Signed-off-by: Phillip Susi <psusi at cfl.rr.com>
> Cc: Jens Axboe <axboe at kernel.dk>
> Cc: Ayan George <ayan at ayan.net>
> Signed-off-by: Andrew Morton <akpm at google.com>
> Signed-off-by: Jens Axboe <axboe at kernel.dk>

ack, and we want a "cherry-picked" from here when applying as usual.

> ---
>  drivers/block/loop.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/block/loop.c b/drivers/block/loop.c
> index b336433..c2ce03c 100644
> --- a/drivers/block/loop.c
> +++ b/drivers/block/loop.c
> @@ -1583,7 +1583,7 @@ static int lo_release(struct gendisk *disk, fmode_t mode)
>  		 * In autoclear mode, stop the loop thread
>  		 * and remove configuration after last close.
>  		 */
> -		err = loop_clr_fd(lo, NULL);
> +		err = loop_clr_fd(lo, lo->lo_device);
>  		if (!err)
>  			goto out_unlocked;
>  	} else {
> -- 
> 1.7.5.4
> 

> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team

-- 
[]'s
Herton



More information about the kernel-team mailing list