aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/f2fs/gc.c')
-rw-r--r--fs/f2fs/gc.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index 644aa3808273..eda8230deb0c 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -430,28 +430,22 @@ next_step:
430 */ 430 */
431block_t start_bidx_of_node(unsigned int node_ofs) 431block_t start_bidx_of_node(unsigned int node_ofs)
432{ 432{
433 block_t start_bidx; 433 unsigned int indirect_blks = 2 * NIDS_PER_BLOCK + 4;
434 unsigned int bidx, indirect_blks; 434 unsigned int bidx;
435 int dec;
436 435
437 indirect_blks = 2 * NIDS_PER_BLOCK + 4; 436 if (node_ofs == 0)
437 return 0;
438 438
439 start_bidx = 1; 439 if (node_ofs <= 2) {
440 if (node_ofs == 0) {
441 start_bidx = 0;
442 } else if (node_ofs <= 2) {
443 bidx = node_ofs - 1; 440 bidx = node_ofs - 1;
444 } else if (node_ofs <= indirect_blks) { 441 } else if (node_ofs <= indirect_blks) {
445 dec = (node_ofs - 4) / (NIDS_PER_BLOCK + 1); 442 int dec = (node_ofs - 4) / (NIDS_PER_BLOCK + 1);
446 bidx = node_ofs - 2 - dec; 443 bidx = node_ofs - 2 - dec;
447 } else { 444 } else {
448 dec = (node_ofs - indirect_blks - 3) / (NIDS_PER_BLOCK + 1); 445 int dec = (node_ofs - indirect_blks - 3) / (NIDS_PER_BLOCK + 1);
449 bidx = node_ofs - 5 - dec; 446 bidx = node_ofs - 5 - dec;
450 } 447 }
451 448 return bidx * ADDRS_PER_BLOCK + ADDRS_PER_INODE;
452 if (start_bidx)
453 start_bidx = bidx * ADDRS_PER_BLOCK + ADDRS_PER_INODE;
454 return start_bidx;
455} 449}
456 450
457static int check_dnode(struct f2fs_sb_info *sbi, struct f2fs_summary *sum, 451static int check_dnode(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,