|
@@ -2035,6 +2035,8 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
|
|
|
sbi->s_resgid = EXT4_DEF_RESGID;
|
|
|
sbi->s_inode_readahead_blks = EXT4_DEF_INODE_READAHEAD_BLKS;
|
|
|
sbi->s_sb_block = sb_block;
|
|
|
+ sbi->s_sectors_written_start = part_stat_read(sb->s_bdev->bd_part,
|
|
|
+ sectors[1]);
|
|
|
|
|
|
unlock_kernel();
|
|
|
|
|
@@ -2072,6 +2074,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
|
|
|
sb->s_magic = le16_to_cpu(es->s_magic);
|
|
|
if (sb->s_magic != EXT4_SUPER_MAGIC)
|
|
|
goto cantfind_ext4;
|
|
|
+ sbi->s_kbytes_written = le64_to_cpu(es->s_kbytes_written);
|
|
|
|
|
|
/* Set defaults before we parse the mount options */
|
|
|
def_mount_opts = le32_to_cpu(es->s_default_mount_opts);
|
|
@@ -2921,6 +2924,10 @@ static int ext4_commit_super(struct super_block *sb,
|
|
|
set_buffer_uptodate(sbh);
|
|
|
}
|
|
|
es->s_wtime = cpu_to_le32(get_seconds());
|
|
|
+ es->s_kbytes_written =
|
|
|
+ cpu_to_le64(EXT4_SB(sb)->s_kbytes_written +
|
|
|
+ ((part_stat_read(sb->s_bdev->bd_part, sectors[1]) -
|
|
|
+ EXT4_SB(sb)->s_sectors_written_start) >> 1));
|
|
|
ext4_free_blocks_count_set(es, percpu_counter_sum_positive(
|
|
|
&EXT4_SB(sb)->s_freeblocks_counter));
|
|
|
es->s_free_inodes_count = cpu_to_le32(percpu_counter_sum_positive(
|