diff options
| -rw-r--r-- | fs/ext4/super.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index c1036bc8a539..e046eba24782 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
| @@ -2304,6 +2304,8 @@ static ssize_t session_write_kbytes_show(struct ext4_attr *a, | |||
| 2304 | { | 2304 | { |
| 2305 | struct super_block *sb = sbi->s_buddy_cache->i_sb; | 2305 | struct super_block *sb = sbi->s_buddy_cache->i_sb; |
| 2306 | 2306 | ||
| 2307 | if (!sb->s_bdev->bd_part) | ||
| 2308 | return snprintf(buf, PAGE_SIZE, "0\n"); | ||
| 2307 | return snprintf(buf, PAGE_SIZE, "%lu\n", | 2309 | return snprintf(buf, PAGE_SIZE, "%lu\n", |
| 2308 | (part_stat_read(sb->s_bdev->bd_part, sectors[1]) - | 2310 | (part_stat_read(sb->s_bdev->bd_part, sectors[1]) - |
| 2309 | sbi->s_sectors_written_start) >> 1); | 2311 | sbi->s_sectors_written_start) >> 1); |
| @@ -2314,6 +2316,8 @@ static ssize_t lifetime_write_kbytes_show(struct ext4_attr *a, | |||
| 2314 | { | 2316 | { |
| 2315 | struct super_block *sb = sbi->s_buddy_cache->i_sb; | 2317 | struct super_block *sb = sbi->s_buddy_cache->i_sb; |
| 2316 | 2318 | ||
| 2319 | if (!sb->s_bdev->bd_part) | ||
| 2320 | return snprintf(buf, PAGE_SIZE, "0\n"); | ||
| 2317 | return snprintf(buf, PAGE_SIZE, "%llu\n", | 2321 | return snprintf(buf, PAGE_SIZE, "%llu\n", |
| 2318 | (unsigned long long)(sbi->s_kbytes_written + | 2322 | (unsigned long long)(sbi->s_kbytes_written + |
| 2319 | ((part_stat_read(sb->s_bdev->bd_part, sectors[1]) - | 2323 | ((part_stat_read(sb->s_bdev->bd_part, sectors[1]) - |
| @@ -2575,8 +2579,9 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) | |||
| 2575 | sbi->s_resgid = EXT4_DEF_RESGID; | 2579 | sbi->s_resgid = EXT4_DEF_RESGID; |
| 2576 | sbi->s_inode_readahead_blks = EXT4_DEF_INODE_READAHEAD_BLKS; | 2580 | sbi->s_inode_readahead_blks = EXT4_DEF_INODE_READAHEAD_BLKS; |
| 2577 | sbi->s_sb_block = sb_block; | 2581 | sbi->s_sb_block = sb_block; |
| 2578 | sbi->s_sectors_written_start = part_stat_read(sb->s_bdev->bd_part, | 2582 | if (sb->s_bdev->bd_part) |
| 2579 | sectors[1]); | 2583 | sbi->s_sectors_written_start = |
| 2584 | part_stat_read(sb->s_bdev->bd_part, sectors[1]); | ||
| 2580 | 2585 | ||
| 2581 | unlock_kernel(); | 2586 | unlock_kernel(); |
| 2582 | 2587 | ||
| @@ -3492,10 +3497,14 @@ static int ext4_commit_super(struct super_block *sb, int sync) | |||
| 3492 | */ | 3497 | */ |
| 3493 | if (!(sb->s_flags & MS_RDONLY)) | 3498 | if (!(sb->s_flags & MS_RDONLY)) |
| 3494 | es->s_wtime = cpu_to_le32(get_seconds()); | 3499 | es->s_wtime = cpu_to_le32(get_seconds()); |
| 3495 | es->s_kbytes_written = | 3500 | if (sb->s_bdev->bd_part) |
| 3496 | cpu_to_le64(EXT4_SB(sb)->s_kbytes_written + | 3501 | es->s_kbytes_written = |
| 3502 | cpu_to_le64(EXT4_SB(sb)->s_kbytes_written + | ||
| 3497 | ((part_stat_read(sb->s_bdev->bd_part, sectors[1]) - | 3503 | ((part_stat_read(sb->s_bdev->bd_part, sectors[1]) - |
| 3498 | EXT4_SB(sb)->s_sectors_written_start) >> 1)); | 3504 | EXT4_SB(sb)->s_sectors_written_start) >> 1)); |
| 3505 | else | ||
| 3506 | es->s_kbytes_written = | ||
| 3507 | cpu_to_le64(EXT4_SB(sb)->s_kbytes_written); | ||
| 3499 | ext4_free_blocks_count_set(es, percpu_counter_sum_positive( | 3508 | ext4_free_blocks_count_set(es, percpu_counter_sum_positive( |
| 3500 | &EXT4_SB(sb)->s_freeblocks_counter)); | 3509 | &EXT4_SB(sb)->s_freeblocks_counter)); |
| 3501 | es->s_free_inodes_count = cpu_to_le32(percpu_counter_sum_positive( | 3510 | es->s_free_inodes_count = cpu_to_le32(percpu_counter_sum_positive( |
