From: Artem Bityutskiy <[email protected]>
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 <[email protected]>
---
fs/super.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/super.c b/fs/super.c
index 0902cfa..95cf173 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -812,7 +812,7 @@ static void do_emergency_remount(struct work_struct *work)
sb->s_count++;
spin_unlock(&sb_lock);
down_write(&sb->s_umount);
- if (sb->s_root && sb->s_bdev && (sb->s_flags & MS_BORN) &&
+ if (sb->s_root && (sb->s_flags & MS_BORN) &&
!(sb->s_flags & MS_RDONLY)) {
/*
* What lock protects sb->s_flags??
--
1.7.10.4
Il 24/08/2012 09:26, Artem Bityutskiy ha scritto:
> From: Artem Bityutskiy <[email protected]>
>
> 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 <[email protected]>
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.
Marco
On Fri, 2012-08-24 at 15:20 +0200, Marco Stornelli wrote:
> Il 24/08/2012 09:26, Artem Bityutskiy ha scritto:
> > From: Artem Bityutskiy <[email protected]>
> >
> > 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 <[email protected]>
>
> 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
--
Best Regards,
Artem Bityutskiy
Il 24/08/2012 15:38, Artem Bityutskiy ha scritto:
> On Fri, 2012-08-24 at 15:20 +0200, Marco Stornelli wrote:
>> Il 24/08/2012 09:26, Artem Bityutskiy ha scritto:
>>> From: Artem Bityutskiy <[email protected]>
>>>
>>> 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 <[email protected]>
>>
>> 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