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>
This commit is contained in:
parent
eee458936b
commit
9d46be294d
|
@ -43,7 +43,6 @@ static int sysv_sync_fs(struct super_block *sb, int wait)
|
||||||
* then attach current time stamp.
|
* then attach current time stamp.
|
||||||
* But if the filesystem was marked clean, keep it clean.
|
* But if the filesystem was marked clean, keep it clean.
|
||||||
*/
|
*/
|
||||||
sb->s_dirt = 0;
|
|
||||||
old_time = fs32_to_cpu(sbi, *sbi->s_sb_time);
|
old_time = fs32_to_cpu(sbi, *sbi->s_sb_time);
|
||||||
if (sbi->s_type == FSTYPE_SYSV4) {
|
if (sbi->s_type == FSTYPE_SYSV4) {
|
||||||
if (*sbi->s_sb_state == cpu_to_fs32(sbi, 0x7c269d38 - old_time))
|
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)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sysv_write_super(struct super_block *sb)
|
|
||||||
{
|
|
||||||
if (!(sb->s_flags & MS_RDONLY))
|
|
||||||
sysv_sync_fs(sb, 1);
|
|
||||||
else
|
|
||||||
sb->s_dirt = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int sysv_remount(struct super_block *sb, int *flags, char *data)
|
static int sysv_remount(struct super_block *sb, int *flags, char *data)
|
||||||
{
|
{
|
||||||
struct sysv_sb_info *sbi = SYSV_SB(sb);
|
struct sysv_sb_info *sbi = SYSV_SB(sb);
|
||||||
|
@ -351,7 +342,6 @@ const struct super_operations sysv_sops = {
|
||||||
.write_inode = sysv_write_inode,
|
.write_inode = sysv_write_inode,
|
||||||
.evict_inode = sysv_evict_inode,
|
.evict_inode = sysv_evict_inode,
|
||||||
.put_super = sysv_put_super,
|
.put_super = sysv_put_super,
|
||||||
.write_super = sysv_write_super,
|
|
||||||
.sync_fs = sysv_sync_fs,
|
.sync_fs = sysv_sync_fs,
|
||||||
.remount_fs = sysv_remount,
|
.remount_fs = sysv_remount,
|
||||||
.statfs = sysv_statfs,
|
.statfs = sysv_statfs,
|
||||||
|
|
|
@ -117,7 +117,6 @@ static inline void dirty_sb(struct super_block *sb)
|
||||||
mark_buffer_dirty(sbi->s_bh1);
|
mark_buffer_dirty(sbi->s_bh1);
|
||||||
if (sbi->s_bh1 != sbi->s_bh2)
|
if (sbi->s_bh1 != sbi->s_bh2)
|
||||||
mark_buffer_dirty(sbi->s_bh2);
|
mark_buffer_dirty(sbi->s_bh2);
|
||||||
sb->s_dirt = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue