Skip to content

Commit 6640052

Browse files
committed
Do not count log pages in stat i_blocks
A NOVA inode uses two kinds of NVMM pages: log pages and data pages. On a remount, NOVA rebuilds the inode and count log pages as stat i_blocks. The stat system call does not declare clearly what i_blocks should include. Just count data pages for i_blocks for consistency.
1 parent 593f927 commit 6640052

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

fs/nova/rebuild.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ static int nova_rebuild_file_inode_tree(struct super_block *sb,
496496
}
497497

498498
ret = nova_rebuild_inode_finish(sb, pi, sih, reb, curr_p);
499-
sih->i_blocks = sih->log_pages + (sih->i_size >> data_bits);
499+
sih->i_blocks = sih->i_size >> data_bits;
500500

501501
out:
502502
// nova_print_inode_log_page(sb, inode);
@@ -685,7 +685,7 @@ int nova_rebuild_dir_inode_tree(struct super_block *sb,
685685
}
686686

687687
ret = nova_rebuild_inode_finish(sb, pi, sih, reb, curr_p);
688-
sih->i_blocks = sih->log_pages;
688+
sih->i_blocks = 0;
689689

690690
out:
691691
// nova_print_dir_tree(sb, sih, ino);
@@ -844,7 +844,7 @@ int nova_restore_snapshot_table(struct super_block *sb, int just_init)
844844
}
845845

846846
ret = nova_rebuild_inode_finish(sb, pi, sih, reb, curr_p);
847-
sih->i_blocks = sih->log_pages + (sih->i_size >> data_bits);
847+
sih->i_blocks = sih->i_size >> data_bits;
848848

849849
out:
850850
// nova_print_inode_log_page(sb, inode);

0 commit comments

Comments
 (0)