]> git.neil.brown.name Git - history.git/commitdiff
Merge 2.5.11 into sysvfs development tree
authorChristoph Hellwig <hch@sb.bsdonline.org>
Mon, 29 Apr 2002 15:03:14 +0000 (17:03 +0200)
committerChristoph Hellwig <hch@sb.bsdonline.org>
Mon, 29 Apr 2002 15:03:14 +0000 (17:03 +0200)
1  2 
fs/sysv/inode.c
fs/sysv/itree.c
include/linux/fs.h

diff --cc fs/sysv/inode.c
index d3f5a864f2ab1f96d301dfd07decd5025a0103b4,29c4cdc2606ffb8f51b2973368184f8684c085bb..29ab0cc3c3f10f0e261d7583cae9073a3afaaaa2
  /* This is only called on sync() and umount(), when s_dirt=1. */
  static void sysv_write_super(struct super_block *sb)
  {
-       if (!(sb->s_flags & MS_RDONLY)) {
-               /* If we are going to write out the super block,
-                  then attach current time stamp.
-                  But if the filesystem was marked clean, keep it clean. */
-               unsigned long time = CURRENT_TIME;
-               unsigned long old_time = fs32_to_cpu(sb, *sb->sv_sb_time);
-               if (sb->sv_type == FSTYPE_SYSV4)
-                       if (*sb->sv_sb_state == cpu_to_fs32(sb, 0x7c269d38 - old_time))
-                               *sb->sv_sb_state = cpu_to_fs32(sb, 0x7c269d38 - time);
-               *sb->sv_sb_time = cpu_to_fs32(sb, time);
-               mark_buffer_dirty(sb->sv_bh2);
+       struct sysv_sb_info *sbi = SYSV_SB(sb);
+       unsigned long time = CURRENT_TIME, old_time;
 +      lock_kernel();
+       if (sb->s_flags & MS_RDONLY)
+               goto clean;
+       /*
+        * If we are going to write out the super block,
+        * then attach current time stamp.
+        * But if the filesystem was marked clean, keep it clean.
+        */
+       old_time = fs32_to_cpu(sbi, *sbi->s_sb_time);
+       if (sbi->s_type == FSTYPE_SYSV4) {
+               if (*sbi->s_sb_state == cpu_to_fs32(sbi, 0x7c269d38 - old_time))
+                       *sbi->s_sb_state = cpu_to_fs32(sbi, 0x7c269d38 - time);
+               *sbi->s_sb_time = cpu_to_fs32(sbi, time);
+               mark_buffer_dirty(sbi->s_bh2);
        }
+ clean:
        sb->s_dirt = 0;
 +      unlock_kernel();
  }
  
  static void sysv_put_super(struct super_block *sb)
diff --cc fs/sysv/itree.c
index 74476c196b0fcf4a8f0acdeda5e6df19c33a4bf7,ff1c4fbaf64063e6743b7dd311eff49c7f4ba60d..30517561bbbdd17be4f3f111764555b97ff4cfd8
@@@ -108,7 -111,7 +111,8 @@@ static Indirect *get_branch(struct inod
        return NULL;
  
  changed:
+       read_unlock(&pointers_lock);
 +      brelse(bh);
        *err = -EAGAIN;
        goto no_block;
  failure:
index f994ff0969b0e86edeed4ec31125cda67fab198f,f51363d77790e4ccf22e0d9cef09ff1255d05ae3..aab0f8daf8c937c6ecf2c67f4b0852bf1052c598
@@@ -679,7 -679,7 +679,6 @@@ struct quota_mount_option
  
  #include <linux/ext3_fs_sb.h>
  #include <linux/hpfs_fs_sb.h>
- #include <linux/sysv_fs_sb.h>
 -#include <linux/ntfs_fs_sb.h>
  #include <linux/ufs_fs_sb.h>
  #include <linux/romfs_fs_sb.h>
  #include <linux/adfs_fs_sb.h>
@@@ -723,7 -723,7 +722,6 @@@ struct super_block 
        union {
                struct ext3_sb_info     ext3_sb;
                struct hpfs_sb_info     hpfs_sb;
-               struct sysv_sb_info     sysv_sb;
 -              struct ntfs_sb_info     ntfs_sb;
                struct ufs_sb_info      ufs_sb;
                struct romfs_sb_info    romfs_sb;
                struct adfs_sb_info     adfs_sb;