Your message dated Mon, 25 Jan 2016 14:35:48 +0100 with message-id <[email protected]> and subject line Re: Bug#812589: fsck -M has stopped working has caused the Debian Bug report #812589, regarding fsck -M has stopped working to be marked as done.
This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact [email protected] immediately.) -- 812589: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=812589 Debian Bug Tracking System Contact [email protected] with problems
--- Begin Message ---Package: util-linux Version: 2.27.1-1 Architecture: i386 (libmount1 and libblkid1 are also 2.27.1.) My most recent reboot (and it's been a while, so it may be some dependent library or new 4.4 kernel or something) failed in checkfs.sh. Upon debugging, it appeared that the invocation of "fsck -C -M -A -a" was, despite the -M flag, trying to check /dev/sda2, my root file system. e2fsck of course complained about this, leading to a recovery shell and a need for manual intervention. $ cat /var/log/fsck/checkfs Log of fsck -C -M -A -a Sun Jan 24 20:36:30 2016 fsck from util-linux 2.27.1 /dev/sda2 is mounted. e2fsck: Cannot continue, aborting. fsck exited with status code 8 Sun Jan 24 20:36:30 2016 ---------------- Running fsck under strace shows the following interesting parts (boring bits like memory allocation elided): open("/etc/fstab", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 read(3, ...) close(3) = 0 lstat64("/dev", {st_mode=S_IFDIR|0755, st_size=3420, ...}) = 0 lstat64("/dev/sda2", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 2), ...}) = 0 stat64("/dev/sda2", {st_mode=S_IFBLK|0660, st_rdev=makedev(8, 2), ...}) = 0 # NFclue why it needs a stat() after lstat() says it's not a symlink stat64("/sbin/fsck.ext4", ...) = 0 # Path search open("/proc/self/mountinfo", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 read(3, "13 0 8:2 / / rw,relatime - ext4 "..., 1024) = 638 # That's the right root file system readlink("/proc/self", "2690", 4095) = 4 lstat64("/proc/2690/mountinfo", {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 # Not sure what's being reverified here open("/proc/cmdline", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 5 read(5, "auto BOOT_IMAGE=Linux ro root=802 "..., 1024) = 155 close(5) = 0 getcwd("$HOME", 4096) # No, not literally, I've substituted lstat64("$HOME/802", ...) = -1 ENOENT # This looks wrong read(3, "", 1024) = 0 close(3) = 0 ... then it clone()s and tries to run fsck.ext4. I'd think the process of elimination would go as follows: - For each line in /etc/fstab - If it's a real file system for which we have an fsck, stat the device node. - Search /proc/self/mountinfo for the same device mode. If it's mounted already (rw or ro), skip it. Poking around the code, I also found some debug options. Trying LIBMOUNT_DEBUG=all LIBBLKID_DEBUG=all fsck -C -M -A produces: 7320: libmount: INIT: library debug mask: 0xffff 7320: libmount: INIT: library version: 2.27.0 7320: libmount: INIT: feature: selinux 7320: libmount: INIT: feature: assert 7320: libmount: INIT: feature: debug Available "LIBMOUNT_DEBUG=<name>[,...]|<mask>" debug masks: all [0xffff] : info about all subsystems cache [0x0004] : paths and tags cache cxt [0x0200] : library context (handler) diff [0x0400] : mountinfo changes tracking fs [0x0040] : FS abstraction help [0x0001] : this help locks [0x0010] : mtab and utab locking options [0x0008] : mount options parsing tab [0x0020] : fstab, mtab, mounninfo routines update [0x0080] : mtab, utab updates utils [0x0100] : misc library utils monitor [0x0800] : mount tables monitor 7320: libmount: CACHE: [0x9480048]: alloc fsck from util-linux 2.27.1 7320: libmount: TAB: [0x9480068]: alloc 7320: libmount: TAB: [0x9480068]: /etc/fstab: start parsing [entries=0, filter=not] 7320: libmount: TAB: [0x9480068]: add entry: /dev/sda2 / 7320: libmount: TAB: [0x9480068]: add entry: UUID=[swap device] none 7320: libmount: TAB: [0x9480068]: add entry: proc /proc 7320: libmount: TAB: [0x9480068]: add entry: sys /sys 7320: libmount: TAB: [0x9480068]: add entry: dev /dev 7320: libmount: TAB: [0x9480068]: add entry: devpts /dev/pts 7320: libmount: TAB: [0x9480068]: add entry: [network mount redacted] 7320: libmount: TAB: [0x9480068]: add entry: /dev/sr0 /media/cdrom0 7320: libmount: TAB: [0x9480068]: add entry: /dev/mmcblk0p1 /mnt 7320: libmount: FS: [0x9480b30]: free [refcount=0] 7320: libmount: TAB: [0x9480068]: /etc/fstab: stop parsing (9 entries) 7320: libmount: TAB: [0x9480068]: parsing done [filename=/etc/fstab, rc=0] 7320: libmount: CACHE: [0x9480048]: canonicalize path /dev/sda2 7320: libmount: CACHE: [0x9480048]: add entry [ 1] (path): /dev/sda2: /dev/sda2 7320: libmount: TAB: [0x9480068]: lookup TARGET: '/' 7320: libmount: TAB: [0x9480130]: alloc 7320: libmount: TAB: [0x9480130]: mtab parse: ignore mtab 7320: libmount: TAB: [0x9480130]: mtab parse: #1 read mountinfo 7320: libmount: TAB: [0x9480130]: /proc/self/mountinfo: start parsing [entries=0, filter=not] 7320: libmount: TAB: [0x9480130]: add entry: /dev/root / 7320: libmount: CACHE: canonicalize path /proc/self/mountinfo 7320: libmount: TAB: TID for /proc/self/mountinfo is 7320 7320: libmount: TAB: [0x9480130]: root FS: 802 7320: libmount: CACHE: [0x9480048]: canonicalize path 802 7320: libmount: CACHE: [0x9480048]: add entry [ 2] (path): 802: 802 7320: libmount: TAB: [0x9480130]: canonical root FS: 802 7320: libmount: TAB: [0x9480130]: add entry: sysfs /sys 7320: libmount: TAB: [0x9480130]: add entry: tmpfs /run 7320: libmount: TAB: [0x9480130]: add entry: tmpfs /run/lock 7320: libmount: TAB: [0x9480130]: add entry: proc /proc 7320: libmount: TAB: [0x9480130]: add entry: devtmpfs /dev 7320: libmount: TAB: [0x9480130]: add entry: tmpfs /run/shm 7320: libmount: TAB: [0x9480130]: add entry: devpts /dev/pts 7320: libmount: FS: [0x9482ca8]: free [refcount=0] 7320: libmount: TAB: [0x9480130]: /proc/self/mountinfo: stop parsing (8 entries) 7320: libmount: TAB: [0x9480130]: parsing done [filename=/proc/self/mountinfo, rc=0] 7320: libmount: TAB: [0x9480130]: mtab parse: #2 read utab 7320: libmount: TAB: [0x9480130]: lookup SOURCE: '/dev/sda2' 7320: libmount: TAB: [0x9480130]: lookup SRCPATH: '/dev/sda2' 7320: libmount: TAB: [0x9480130]: lookup canonical SRCPATH: '/dev/sda2' 7321: libblkid: INIT: library debug mask: 0xffff 7321: libblkid: INIT: library version: 2.27.0 [02-Nov-2015] Available "LIBBLKID_DEBUG=<name>[,...]|<mask>" debug masks: all [0xffff] : info about all subsystems cache [0x0004] : blkid tags cache config [0x0008] : config file utils dev [0x0010] : device utils devname [0x0020] : /proc/partitions evaluation devno [0x0040] : convertions to device name evaluate [0x0080] : tags resolving help [0x0001] : this help lowprobe [0x0100] : superblock/raids/partitions probing probe [0x0200] : devices verification read [0x0400] : cache parsing save [0x0800] : cache writing tag [0x1000] : tags utils 7321: libblkid: CACHE: creating blkid cache (using default cache) 7321: libblkid: CONFIG: reading config file: /etc/blkid.conf. 7321: libblkid: CONFIG: /etc/blkid.conf: does not exist, using built-in default 7321: libblkid: TAG: looking for /dev/sda2 in cache e2fsck 1.43-WIP (18-May-2015) /dev/sda2 is mounted. e2fsck: Cannot continue, aborting. There are a lot of wrappers in libmount (not to meantion a dearth of useful contents in libmount/docs/) which make it hard for me to be sure what things *should* be doing, so I haven't pinpointed where it's going wrong, but hopefully this information is useful.
--- End Message ---
--- Begin Message ---Hello anonymous! Thanks for your bug report, but I'm not able to reproduce it and it lacks information needed to investigate it. (Tagged as such in a separate email to the bug tracking system.) On Mon, Jan 25, 2016 at 06:37:15AM -0500, [email protected] wrote: > Package: util-linux > Version: 2.27.1-1 > Architecture: i386 > > (libmount1 and libblkid1 are also 2.27.1.) > > My most recent reboot (and it's been a while, so it may be some dependent > library or new 4.4 kernel or something) failed in checkfs.sh. > > Upon debugging, it appeared that the invocation of "fsck -C -M -A -a" > was, despite the -M flag, trying to check /dev/sda2, my root file > system. > > e2fsck of course complained about this, leading to a recovery shell > and a need for manual intervention. > > $ cat /var/log/fsck/checkfs > Log of fsck -C -M -A -a > Sun Jan 24 20:36:30 2016 > > fsck from util-linux 2.27.1 > /dev/sda2 is mounted. > e2fsck: Cannot continue, aborting. > > > fsck exited with status code 8 > [...] > Poking around the code, I also found some debug options. > Trying LIBMOUNT_DEBUG=all LIBBLKID_DEBUG=all fsck -C -M -A > produces: Also adding -V (for verbose) would give some additional information. > > 7320: libmount: INIT: library debug mask: 0xffff > 7320: libmount: INIT: library version: 2.27.0 > 7320: libmount: INIT: feature: selinux > 7320: libmount: INIT: feature: assert > 7320: libmount: INIT: feature: debug > Available "LIBMOUNT_DEBUG=<name>[,...]|<mask>" debug masks: > all [0xffff] : info about all subsystems > cache [0x0004] : paths and tags cache > cxt [0x0200] : library context (handler) > diff [0x0400] : mountinfo changes tracking > fs [0x0040] : FS abstraction > help [0x0001] : this help > locks [0x0010] : mtab and utab locking > options [0x0008] : mount options parsing > tab [0x0020] : fstab, mtab, mounninfo routines > update [0x0080] : mtab, utab updates > utils [0x0100] : misc library utils > monitor [0x0800] : mount tables monitor > 7320: libmount: CACHE: [0x9480048]: alloc > fsck from util-linux 2.27.1 > 7320: libmount: TAB: [0x9480068]: alloc > 7320: libmount: TAB: [0x9480068]: /etc/fstab: start parsing [entries=0, > filter=not] > 7320: libmount: TAB: [0x9480068]: add entry: /dev/sda2 / > 7320: libmount: TAB: [0x9480068]: add entry: UUID=[swap device] none > 7320: libmount: TAB: [0x9480068]: add entry: proc /proc > 7320: libmount: TAB: [0x9480068]: add entry: sys /sys > 7320: libmount: TAB: [0x9480068]: add entry: dev /dev > 7320: libmount: TAB: [0x9480068]: add entry: devpts /dev/pts > 7320: libmount: TAB: [0x9480068]: add entry: [network mount redacted] > 7320: libmount: TAB: [0x9480068]: add entry: /dev/sr0 /media/cdrom0 > 7320: libmount: TAB: [0x9480068]: add entry: /dev/mmcblk0p1 /mnt > 7320: libmount: FS: [0x9480b30]: free [refcount=0] > 7320: libmount: TAB: [0x9480068]: /etc/fstab: stop parsing (9 entries) > 7320: libmount: TAB: [0x9480068]: parsing done [filename=/etc/fstab, > rc=0] > 7320: libmount: CACHE: [0x9480048]: canonicalize path /dev/sda2 > 7320: libmount: CACHE: [0x9480048]: add entry [ 1] (path): /dev/sda2: > /dev/sda2 > 7320: libmount: TAB: [0x9480068]: lookup TARGET: '/' > 7320: libmount: TAB: [0x9480130]: alloc > 7320: libmount: TAB: [0x9480130]: mtab parse: ignore mtab > 7320: libmount: TAB: [0x9480130]: mtab parse: #1 read mountinfo > 7320: libmount: TAB: [0x9480130]: /proc/self/mountinfo: start parsing > [entries=0, filter=not] > 7320: libmount: TAB: [0x9480130]: add entry: /dev/root / > 7320: libmount: CACHE: canonicalize path /proc/self/mountinfo > 7320: libmount: TAB: TID for /proc/self/mountinfo is 7320 > 7320: libmount: TAB: [0x9480130]: root FS: 802 > 7320: libmount: CACHE: [0x9480048]: canonicalize path 802 > 7320: libmount: CACHE: [0x9480048]: add entry [ 2] (path): 802: 802 > 7320: libmount: TAB: [0x9480130]: canonical root FS: 802 This '802' business looks weird. Having your complete /proc/self/mountinfo would be useful. > 7320: libmount: TAB: [0x9480130]: add entry: sysfs /sys > 7320: libmount: TAB: [0x9480130]: add entry: tmpfs /run > 7320: libmount: TAB: [0x9480130]: add entry: tmpfs /run/lock > 7320: libmount: TAB: [0x9480130]: add entry: proc /proc > 7320: libmount: TAB: [0x9480130]: add entry: devtmpfs /dev > 7320: libmount: TAB: [0x9480130]: add entry: tmpfs /run/shm > 7320: libmount: TAB: [0x9480130]: add entry: devpts /dev/pts > 7320: libmount: FS: [0x9482ca8]: free [refcount=0] > 7320: libmount: TAB: [0x9480130]: /proc/self/mountinfo: stop parsing (8 > entries) > 7320: libmount: TAB: [0x9480130]: parsing done > [filename=/proc/self/mountinfo, rc=0] > 7320: libmount: TAB: [0x9480130]: mtab parse: #2 read utab > 7320: libmount: TAB: [0x9480130]: lookup SOURCE: '/dev/sda2' > 7320: libmount: TAB: [0x9480130]: lookup SRCPATH: '/dev/sda2' > 7320: libmount: TAB: [0x9480130]: lookup canonical SRCPATH: '/dev/sda2' This is where things should return true for is_mounted(...) but apparently doesn't for you. In verbose mode you should get: "/dev/sda2 is mounted" Without access to your mountinfo there's not much I can do to help you out and without a proper submitter address I'm not able to reach you, so I'm closing this bug report. You need to find out what's broken on your system. Feel free to report back once you find it. > 7321: libblkid: INIT: library debug mask: 0xffff > 7321: libblkid: INIT: library version: 2.27.0 [02-Nov-2015] > Available "LIBBLKID_DEBUG=<name>[,...]|<mask>" debug masks: > all [0xffff] : info about all subsystems > cache [0x0004] : blkid tags cache > config [0x0008] : config file utils > dev [0x0010] : device utils > devname [0x0020] : /proc/partitions evaluation > devno [0x0040] : convertions to device name > evaluate [0x0080] : tags resolving > help [0x0001] : this help > lowprobe [0x0100] : superblock/raids/partitions probing > probe [0x0200] : devices verification > read [0x0400] : cache parsing > save [0x0800] : cache writing > tag [0x1000] : tags utils > 7321: libblkid: CACHE: creating blkid cache (using default cache) > 7321: libblkid: CONFIG: reading config file: /etc/blkid.conf. > 7321: libblkid: CONFIG: /etc/blkid.conf: does not exist, using built-in > default > 7321: libblkid: TAG: looking for /dev/sda2 in cache > e2fsck 1.43-WIP (18-May-2015) > /dev/sda2 is mounted. > e2fsck: Cannot continue, aborting. > > > There are a lot of wrappers in libmount (not to meantion a dearth of > useful contents in libmount/docs/) which make it hard for me to be sure > what things *should* be doing, so I haven't pinpointed where it's going > wrong, but hopefully this information is useful. Regards, Andreas Henriksson
--- End Message ---

