nilfs2: add nilfs_set_error
authorRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Mon, 28 Jun 2010 08:49:30 +0000 (17:49 +0900)
committerRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Fri, 23 Jul 2010 01:02:10 +0000 (10:02 +0900)
This function marks error state and write it on super blocks.  This is
a preparation for making super block writeback alternately.

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
fs/nilfs2/super.c

index f23a31b04e14d14decb7e6a3fcd6f9d646ce22cf..4a85dfb70b8e8c86f6364269576771f69bef569a 100644 (file)
@@ -74,6 +74,19 @@ struct kmem_cache *nilfs_btree_path_cache;
 
 static int nilfs_remount(struct super_block *sb, int *flags, char *data);
 
+static void nilfs_set_error(struct nilfs_sb_info *sbi)
+{
+       struct the_nilfs *nilfs = sbi->s_nilfs;
+
+       down_write(&nilfs->ns_sem);
+       if (!(nilfs->ns_mount_state & NILFS_ERROR_FS)) {
+               nilfs->ns_mount_state |= NILFS_ERROR_FS;
+               nilfs->ns_sbp[0]->s_state |= cpu_to_le16(NILFS_ERROR_FS);
+               nilfs_commit_super(sbi, 1);
+       }
+       up_write(&nilfs->ns_sem);
+}
+
 /**
  * nilfs_error() - report failure condition on a filesystem
  *
@@ -99,16 +112,7 @@ void nilfs_error(struct super_block *sb, const char *function,
        va_end(args);
 
        if (!(sb->s_flags & MS_RDONLY)) {
-               struct the_nilfs *nilfs = sbi->s_nilfs;
-
-               down_write(&nilfs->ns_sem);
-               if (!(nilfs->ns_mount_state & NILFS_ERROR_FS)) {
-                       nilfs->ns_mount_state |= NILFS_ERROR_FS;
-                       nilfs->ns_sbp[0]->s_state |=
-                               cpu_to_le16(NILFS_ERROR_FS);
-                       nilfs_commit_super(sbi, 1);
-               }
-               up_write(&nilfs->ns_sem);
+               nilfs_set_error(sbi);
 
                if (nilfs_test_opt(sbi, ERRORS_RO)) {
                        printk(KERN_CRIT "Remounting filesystem read-only\n");