2009-09-30 06:54:42

by Toshiyuki Okajima

[permalink] [raw]
Subject: [PATCH 2/3][RFC](Repost) ext3: add a message in remount/umount for ext3

From: Toshiyuki Okajima <[email protected]>

ext3 doesn't log a record of having unmounted the filesystem. And ext3 doesn't
log a record when the filesystem is remounted also with read-only. Therefore
in the system log, we cannot judge whether or not at the certain time this
filesystem user touches it.
For enterprise users, they often want to know when a certain filesystem is
mounted/remounted/unmounted.

So, we output the message to the system log when the filesystem is
remounted/unmounted.

Signed-off-by: Toshiyuki Okajima <[email protected]>
---
fs/ext3/super.c | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)

diff -Nurp linux-2.6.31.orig/fs/ext3/super.c linux-2.6.31/fs/ext3/super.c
--- linux-2.6.31.orig/fs/ext3/super.c 2009-09-10 07:13:59.000000000 +0900
+++ linux-2.6.31/fs/ext3/super.c 2009-09-16 14:52:03.000000000 +0900
@@ -328,6 +328,24 @@ void ext3_update_dynamic_rev(struct supe
*/
}

+static void ext3_print_mount_message(struct super_block *sb,
+ int is_remount)
+{
+ char jbuf[BDEVNAME_SIZE + 20] = "internal journal";
+
+ if (EXT3_SB(sb)->s_journal->j_inode == NULL) {
+ sprintf(jbuf, "external journal on ");
+ (void)bdevname(EXT3_SB(sb)->s_journal->j_dev, jbuf + 20);
+ }
+ printk(KERN_INFO "EXT3 FS %s on %s, %s\n",
+ is_remount? "remounted": "mounted", sb->s_id, jbuf);
+}
+
+static void ext3_print_umount_message(struct super_block *sb)
+{
+ printk(KERN_INFO "EXT3 FS unmounted from %s\n", sb->s_id);
+}
+
/*
* Open the external journal device
*/
@@ -448,6 +466,7 @@ static void ext3_put_super (struct super
sb->s_fs_info = NULL;
kfree(sbi->s_blockgroup_lock);
kfree(sbi);
+ ext3_print_umount_message(sb);

unlock_kernel();
}
@@ -1296,15 +1315,6 @@ static int ext3_setup_super(struct super
EXT3_INODES_PER_GROUP(sb),
sbi->s_mount_opt);

- printk(KERN_INFO "EXT3 FS on %s, ", sb->s_id);
- if (EXT3_SB(sb)->s_journal->j_inode == NULL) {
- char b[BDEVNAME_SIZE];