[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: mount command fails with 'relatime' kernel option
From:       Denys Vlasenko <vda.linux () googlemail ! com>
Date:       2008-06-24 18:15:30
Message-ID: 200806242015.30156.vda.linux () googlemail ! com
[Download RAW message or body]

Soory for extra late reply.

On Tuesday 18 December 2007 17:29, Michele Sanges wrote:
> > Pity, you did non specify "strace -s 512" option and we don't see full strings.
> > Can you redo it?
> 
> Yes, are the attached files strace_1 and strace_2 respectively.
> 
> 
> > Can you also check whether busybox's "mount -o remount /" and util-linux's one
> > differ (I mean, does util-linux one work? If yes, post its strace too please).
> 
> Yes, it works; the strace output is the attached file strace_3.

To rehash:

Fails: busybox mount -o remount /
Works: (util-linux) mount -o remount /
Works: busybox mount -o remount /dev/root /

Busybox with only one argument (failing one) looks into
/proc/mounts, collects existing opts, and tries to apply this.

Busybox with two arguments doesnt do it, it assumes
that this mount has all opts explicitedly specified on cmdline.

Util-linux mount with one param is EITHER
* does not scan /proc/mounts (if given remount opt, or maybe
  even never),
OR
* is too clever: it discovers that /dev/root is /dev/sda5,
  THEN looks into /proc/mounts and doesn't find it there,
  and then happily does (re)mount without opts.

In order to fix it in busybox mount
I need to figure out which of the above is the case.
If you can help me with that, great.

Strace bits are below:


execve("/bin/mount", ["mount", "-o", "remount", "/"], [/* 13 vars */]) = 0
brk(0)                                  = 0x9717000
...
open("/proc/mounts", O_RDONLY)          = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "
	rootfs / rootfs rw 0 0
	/dev/root / ext3 ro,relatime,data=ordered 0 0
	/dev /dev tmpfs rw,relatime 0 0
	/proc /proc proc rw,relatime 0 0
	/sys /sys sysfs rw,relatime 0 0
	tmpfs /dev/shm tmpfs rw,relatime 0 0
	devpts /dev/pts devpts rw,relatime 0 0
	usbfs /proc/bus/usb usbfs rw,relatime 0 0
	/dev/sda5 /mnt ext3 rw,relatime,data=ordered 0 0
", 1024) = 333
read(3, "", 1024)                       = 0
stat64("/dev/root", {st_mode=S_IFBLK|0600, st_rdev=makedev(8, 8), ...}) = 0
mount("/dev/root", "/", 0x80e3624, MS_RDONLY|MS_REMOUNT|MS_SILENT, \
"relatime,data=ordered") = -1 EINVAL (Invalid argument) write(2, "mount: mounting \
/dev/root on / failed: Invalid argument\n", 56) = 56 exit_group(-1)                   \
= ?


util-linux:

execve("/bin/mount", ["mount", "-o", "remount", "/"], [/* 57 vars */]) = 0
...
read(3,
        "rootfs / rootfs rw 0 0
        /dev/root / ext3 rw,relatime,data=ordered 0 0  <============
        /dev /dev tmpfs rw,relatime 0 0
        /proc /proc proc rw,relatime 0 0
        /sys /sys sysfs rw,relatime 0 0
        /proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
        devpts /dev/pts devpts rw,relatime 0 0
        tmpfs /dev/shm tmpfs rw,relatime 0 0
        /dev/sda6 /mnt/appoggio ext3 rw,relatime,data=ordered 0 0
        /dev/sda8 /mnt/linuxbox ext3 rw,relatime,data=ordered 0 0
        none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
        sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,r
        "..., 1024) = 720
...
mount("/dev/sda5", "/", 0xb9638ba8, MS_MGC_VAL|MS_REMOUNT, NULL) = 0


busybox with explicit param:

execve("/bin/mount", ["mount", "-o", "remount", "/dev/root", "/"], [/* 13 vars */]) = \
                0
...
mount("/dev/root", "/", NULL, MS_REMOUNT|MS_SILENT, NULL) = 0


--
vda
_______________________________________________
busybox mailing list
busybox@busybox.net
http://busybox.net/cgi-bin/mailman/listinfo/busybox


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic