diff options
author | Artem Bityutskiy <artem.bityutskiy@linux.intel.com> | 2012-07-03 09:43:28 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-07-22 15:58:12 -0400 |
commit | 9d46be294d12871adf4206f89168b14d27adb8b5 (patch) | |
tree | 6851c9f7d278bcf8a7cf01ac65f670dbb3aa95bf /fs/sysv | |
parent | eee458936b52bd3a9ff0ff577313b637905fff08 (diff) |
fs/sysv: stop using write_super and s_dirt
It does not look like sysv FS needs 'write_super()' at all, because all it
does is a timestamp update. I cannot test this patch, because this
file-system is so old and probably has not been used by anyone for years,
so there are no tools to create it in Linux. But from the code I see that
marking the superblock as dirty is basically marking the superblock buffers as
drity and then setting the s_dirt flag. And when 'write_super()' is executed to
handle the s_dirt flag, we just update the timestamp and again mark the
superblock buffer as dirty. Seems pointless.
It looks like we can update the timestamp more opprtunistically - on unmount
or remount of sync, and nothing should change.
Thus, this patch removes 'sysv_write_super()' and 's_dirt'.
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/sysv')
-rw-r--r-- | fs/sysv/inode.c | 10 | ||||
-rw-r--r-- | fs/sysv/sysv.h | 1 |
2 files changed, 0 insertions, 11 deletions
diff --git a/fs/sysv/inode.c b/fs/sysv/inode.c index f20ffe32b398..80e1e2b18df1 100644 --- a/fs/sysv/inode.c +++ b/fs/sysv/inode.c | |||
@@ -43,7 +43,6 @@ static int sysv_sync_fs(struct super_block *sb, int wait) | |||
43 | * then attach current time stamp. | 43 | * then attach current time stamp. |
44 | * But if the filesystem was marked clean, keep it clean. | 44 | * But if the filesystem was marked clean, keep it clean. |
45 | */ | 45 | */ |
46 | sb->s_dirt = 0; | ||
47 | old_time = fs32_to_cpu(sbi, *sbi->s_sb_time); | 46 | old_time = fs32_to_cpu(sbi, *sbi->s_sb_time); |
48 | if (sbi->s_type == FSTYPE_SYSV4) { | 47 | if (sbi->s_type == FSTYPE_SYSV4) { |
49 | if (*sbi->s_sb_state == cpu_to_fs32(sbi, 0x7c269d38 - old_time)) | 48 | if (*sbi->s_sb_state == cpu_to_fs32(sbi, 0x7c269d38 - old_time)) |
@@ -57,14 +56,6 @@ static int sysv_sync_fs(struct super_block *sb, int wait) | |||
57 | return 0; | 56 | return 0; |
58 | } | 57 | } |
59 | 58 | ||
60 | static void sysv_write_super(struct super_block *sb) | ||
61 | { | ||
62 | if (!(sb->s_flags & MS_RDONLY)) | ||
63 | sysv_sync_fs(sb, 1); | ||
64 | else | ||
65 | sb->s_dirt = 0; | ||
66 | } | ||
67 | |||
68 | static int sysv_remount(struct super_block *sb, int *flags, char *data) | 59 | static int sysv_remount(struct super_block *sb, int *flags, char *data) |
69 | { | 60 | { |
70 | struct sysv_sb_info *sbi = SYSV_SB(sb); | 61 | struct sysv_sb_info *sbi = SYSV_SB(sb); |
@@ -351,7 +342,6 @@ const struct super_operations sysv_sops = { | |||
351 | .write_inode = sysv_write_inode, | 342 | .write_inode = sysv_write_inode, |
352 | .evict_inode = sysv_evict_inode, | 343 | .evict_inode = sysv_evict_inode, |
353 | .put_super = sysv_put_super, | 344 | .put_super = sysv_put_super, |
354 | .write_super = sysv_write_super, | ||
355 | .sync_fs = sysv_sync_fs, | 345 | .sync_fs = sysv_sync_fs, |
356 | .remount_fs = sysv_remount, | 346 | .remount_fs = sysv_remount, |
357 | .statfs = sysv_statfs, | 347 | .statfs = sysv_statfs, |
diff --git a/fs/sysv/sysv.h b/fs/sysv/sysv.h index 11b07672f6c5..0bc35fdc58e2 100644 --- a/fs/sysv/sysv.h +++ b/fs/sysv/sysv.h | |||
@@ -117,7 +117,6 @@ static inline void dirty_sb(struct super_block *sb) | |||
117 | mark_buffer_dirty(sbi->s_bh1); | 117 | mark_buffer_dirty(sbi->s_bh1); |
118 | if (sbi->s_bh1 != sbi->s_bh2) | 118 | if (sbi->s_bh1 != sbi->s_bh2) |
119 | mark_buffer_dirty(sbi->s_bh2); | 119 | mark_buffer_dirty(sbi->s_bh2); |
120 | sb->s_dirt = 1; | ||
121 | } | 120 | } |
122 | 121 | ||
123 | 122 | ||