linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [BUG] remount ro on loopback mount leaves unmountable filesystem behind
@ 2008-05-13  8:50 David Chinner
  2008-05-13 10:23 ` Christoph Hellwig
  0 siblings, 1 reply; 6+ messages in thread
From: David Chinner @ 2008-05-13  8:50 UTC (permalink / raw)
  To: lkml; +Cc: linux-fsdevel

The following steps will leave an unmountable filesystem
behind. This test "works" using ext3 or XFS. XFS version is
as follows replacing steps with ext3 specific commands results
in the same unmountable filesystem problem:

$ mount -t xfs /dev/sdb6 /mnt/scratch
$ mkdir /mnt/scratch/mnt
$ touch /mnt/scratch/img
$ mkfs.xfs -f -d file,name=/mnt/scratch/img,size=1g
$ mount -t xfs -o loop /mnt/scratch/img /mnt/scratch/mnt

All normal up to here. I can unmount everything just fine.

$ umount /mnt/scratch/mnt
$ umount /mnt/scratch
$

Same thing, but remounting the loop filesystem readonly
before unmounting:

$ mount -t xfs /dev/sdb6 /mnt/scratch
$ mkdir /mnt/scratch/mnt
$ touch /mnt/scratch/img
$ mkfs.xfs -f -d file,name=/mnt/scratch/img,size=1g
$ mount -t xfs -o loop /mnt/scratch/img /mnt/scratch/mnt
$ mount -t xfs -o remount,ro /mnt/scratch/img /mnt/scratch/mnt
$ umount /mnt/scratch/mnt
$ umount /mnt/scratch
umount: /mnt/scratch: device is busy
umount: /mnt/scratch: device is busy
$

At this point /mnt/scratch is unmountable. lsof shows no open
references to the filesytem, so it would seem to be a reference
count leak somewhere....

Reproduced on 2.6.25-rc3 on ia64 and x86_64, and UML on
2.6.26-pre-rc1. Found when changing XFSQA test 073 to host
loopback images and mounts mounts on something other than /tmp.

Cheers,

Dave.
-- 
Dave Chinner
Principal Engineer
SGI Australian Software Group

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [BUG] remount ro on loopback mount leaves unmountable filesystem behind
  2008-05-13  8:50 [BUG] remount ro on loopback mount leaves unmountable filesystem behind David Chinner
@ 2008-05-13 10:23 ` Christoph Hellwig
  2008-05-13 12:07   ` David Chinner
  2008-05-13 22:55   ` Karel Zak
  0 siblings, 2 replies; 6+ messages in thread
From: Christoph Hellwig @ 2008-05-13 10:23 UTC (permalink / raw)
  To: David Chinner; +Cc: lkml, linux-fsdevel, util-linux-ng

On Tue, May 13, 2008 at 06:50:47PM +1000, David Chinner wrote:
> Same thing, but remounting the loop filesystem readonly
> before unmounting:
> 
> $ mount -t xfs /dev/sdb6 /mnt/scratch
> $ mkdir /mnt/scratch/mnt
> $ touch /mnt/scratch/img
> $ mkfs.xfs -f -d file,name=/mnt/scratch/img,size=1g
> $ mount -t xfs -o loop /mnt/scratch/img /mnt/scratch/mnt
> $ mount -t xfs -o remount,ro /mnt/scratch/img /mnt/scratch/mnt
> $ umount /mnt/scratch/mnt
> $ umount /mnt/scratch
> umount: /mnt/scratch: device is busy
> umount: /mnt/scratch: device is busy

This is a problem in mount, no the kernel.  Before the remount the
/etc mtab looks something like this:

/qemu/test.img /mnt xfs rw,loop=/dev/loop0 0 0

and after it looks something like this:

/qemu/test.img /mnt xfs ro 0 0

As a workaround do a losetup -d /dev/loop0 after unmounting the
filesystem.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [BUG] remount ro on loopback mount leaves unmountable filesystem behind
  2008-05-13 10:23 ` Christoph Hellwig
@ 2008-05-13 12:07   ` David Chinner
  2008-05-13 12:42     ` Christoph Hellwig
  2008-05-13 22:55   ` Karel Zak
  1 sibling, 1 reply; 6+ messages in thread
From: David Chinner @ 2008-05-13 12:07 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: David Chinner, lkml, linux-fsdevel, util-linux-ng

On Tue, May 13, 2008 at 06:23:40AM -0400, Christoph Hellwig wrote:
> On Tue, May 13, 2008 at 06:50:47PM +1000, David Chinner wrote:
> > Same thing, but remounting the loop filesystem readonly
> > before unmounting:
> > 
> > $ mount -t xfs /dev/sdb6 /mnt/scratch
> > $ mkdir /mnt/scratch/mnt
> > $ touch /mnt/scratch/img
> > $ mkfs.xfs -f -d file,name=/mnt/scratch/img,size=1g
> > $ mount -t xfs -o loop /mnt/scratch/img /mnt/scratch/mnt
> > $ mount -t xfs -o remount,ro /mnt/scratch/img /mnt/scratch/mnt
> > $ umount /mnt/scratch/mnt
> > $ umount /mnt/scratch
> > umount: /mnt/scratch: device is busy
> > umount: /mnt/scratch: device is busy
> 
> This is a problem in mount, no the kernel.  Before the remount the
> /etc mtab looks something like this:
> 
> /qemu/test.img /mnt xfs rw,loop=/dev/loop0 0 0
> 
> and after it looks something like this:
> 
> /qemu/test.img /mnt xfs ro 0 0
> 
> As a workaround do a losetup -d /dev/loop0 after unmounting the
> filesystem.

Hmmm - I even considered that and tried a '-o remount,ro,loop'
but that obviously doesn't work with dynamic loop device instantiation,
either.

/me didn't read all the way to the bottom of the extremely verbose
mount man page so didn't find the bit about losetup -d....

Anyway, I'll hard code loop device numbers into the script so
I can just forget about this problem. Thanks, Christoph.

Cheers,

Dave.
-- 
Dave Chinner
Principal Engineer
SGI Australian Software Group

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [BUG] remount ro on loopback mount leaves unmountable filesystem behind
  2008-05-13 12:07   ` David Chinner
@ 2008-05-13 12:42     ` Christoph Hellwig
  2008-05-13 17:10       ` H. Peter Anvin
  0 siblings, 1 reply; 6+ messages in thread
From: Christoph Hellwig @ 2008-05-13 12:42 UTC (permalink / raw)
  To: David Chinner; +Cc: Christoph Hellwig, lkml, linux-fsdevel, util-linux-ng

On Tue, May 13, 2008 at 10:07:10PM +1000, David Chinner wrote:
> Anyway, I'll hard code loop device numbers into the script so
> I can just forget about this problem. Thanks, Christoph.

hardcoding them is a little dangerous because a system might aswell
have them in use already, e.g. for CD images.  Just use losetup -f to
find the first free one and keep it in a shell variable.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [BUG] remount ro on loopback mount leaves unmountable filesystem behind
  2008-05-13 12:42     ` Christoph Hellwig
@ 2008-05-13 17:10       ` H. Peter Anvin
  0 siblings, 0 replies; 6+ messages in thread
From: H. Peter Anvin @ 2008-05-13 17:10 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: David Chinner, lkml, linux-fsdevel, util-linux-ng

Christoph Hellwig wrote:
> On Tue, May 13, 2008 at 10:07:10PM +1000, David Chinner wrote:
>> Anyway, I'll hard code loop device numbers into the script so
>> I can just forget about this problem. Thanks, Christoph.
> 
> hardcoding them is a little dangerous because a system might aswell
> have them in use already, e.g. for CD images.  Just use losetup -f to
> find the first free one and keep it in a shell variable.

losetup -f is racy, too.  losetup -sf is safe, however.

	-hpa

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [BUG] remount ro on loopback mount leaves unmountable filesystem behind
  2008-05-13 10:23 ` Christoph Hellwig
  2008-05-13 12:07   ` David Chinner
@ 2008-05-13 22:55   ` Karel Zak
  1 sibling, 0 replies; 6+ messages in thread
From: Karel Zak @ 2008-05-13 22:55 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: David Chinner, lkml, linux-fsdevel, util-linux-ng

On Tue, May 13, 2008 at 06:23:40AM -0400, Christoph Hellwig wrote:
> On Tue, May 13, 2008 at 06:50:47PM +1000, David Chinner wrote:
> > Same thing, but remounting the loop filesystem readonly
> > before unmounting:
> > 
> > $ mount -t xfs /dev/sdb6 /mnt/scratch
> > $ mkdir /mnt/scratch/mnt
> > $ touch /mnt/scratch/img
> > $ mkfs.xfs -f -d file,name=/mnt/scratch/img,size=1g
> > $ mount -t xfs -o loop /mnt/scratch/img /mnt/scratch/mnt
> > $ mount -t xfs -o remount,ro /mnt/scratch/img /mnt/scratch/mnt
> > $ umount /mnt/scratch/mnt
> > $ umount /mnt/scratch
> > umount: /mnt/scratch: device is busy
> > umount: /mnt/scratch: device is busy
> 
> This is a problem in mount, no the kernel.  Before the remount the
> /etc mtab looks something like this:
> 
> /qemu/test.img /mnt xfs rw,loop=/dev/loop0 0 0
> 
> and after it looks something like this:
> 
> /qemu/test.img /mnt xfs ro 0 0

 Yes, that's mount(8) bug. It doesn't read old options from /etc/mtab
 when you remount by "mount -o remount <src> <dest>".

> As a workaround do a losetup -d /dev/loop0 after unmounting the
> filesystem.

 ... or use "mount -o remount <dest>", for example:

   mount -t xfs -o remount,ro /mnt/scratch/mnt


    Karel

-- 
 Karel Zak  <kzak@redhat.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-05-13 22:56 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-13  8:50 [BUG] remount ro on loopback mount leaves unmountable filesystem behind David Chinner
2008-05-13 10:23 ` Christoph Hellwig
2008-05-13 12:07   ` David Chinner
2008-05-13 12:42     ` Christoph Hellwig
2008-05-13 17:10       ` H. Peter Anvin
2008-05-13 22:55   ` Karel Zak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).