Re: [RFC] [PATCH] vfs: remount all file-systems R/O on emergency remount.
From: Marco Stornelli <hidden>
Date: 2012-08-24 13:51:03
Also in:
lkml
Il 24/08/2012 15:38, Artem Bityutskiy ha scritto:
On Fri, 2012-08-24 at 15:20 +0200, Marco Stornelli wrote:quoted
Il 24/08/2012 09:26, Artem Bityutskiy ha scritto:quoted
From: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Currently the emergency remount (triggered by Sysrq-u) re-mounting only those file-systems R/O, which have an associated block device (sb->s_bdev). This does not work for file-systems like UBIFS and JFFS2 which work on top of MTD devices (character devices) and always have sb->s_bdev = NULL. This also does not work for tmpfs. Most probably the intention was to avoid re-mounting R/O file-systems like procfs, sysfs, cgroup, and debugfs. However, I do not really see why not to remount them R/O as well in case of emergency. This patch removes the 'sb->s_bdev != NULL' check from 'do_emergency_remount()', so _all_ file-systems will be re-mounted R/O. Tested in Fedora - all file-systems (ext4, ubifs, procfs, sysfs, cgroup, and debugfs) become R/O on Sysrq-u with this patch. Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>Does it make sense to remount r/o for example debugfs in this case? Maybe if there is something wrong I want enable something to catch debug info. Similar things for other pseudo-fs. Sure, the s_bdev seems a strong check. We could add a new flag to know if the emergency remount should be happen. It would give us the fs granularity, and maybe it could be turned on/off with the mount.May be. Or may be you are in situation that you really want all processes top modifying anything in debugfs. This depends on the "emergency" you deal with. You can always re-mount debugfs back to rw by hands using something like: mount -t debufs -o remount,rw none /sys/kernel/debug
Obviously :) Maybe it's the sign that we want let the user decide what to do if the "default behavior" is not ok. Note: has ubifs got the field s_mtd != null? Maybe to solve the specific problem we could just write (sb->s_bdev != NULL || sb->s_mtd != NULL). Marco