diff options
Diffstat (limited to 'fs/nilfs2/segment.c')
-rw-r--r-- | fs/nilfs2/segment.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c index 9f6b486b6c01..a1a191634abc 100644 --- a/fs/nilfs2/segment.c +++ b/fs/nilfs2/segment.c | |||
@@ -1440,17 +1440,19 @@ static int nilfs_segctor_collect(struct nilfs_sc_info *sci, | |||
1440 | 1440 | ||
1441 | nilfs_clear_logs(&sci->sc_segbufs); | 1441 | nilfs_clear_logs(&sci->sc_segbufs); |
1442 | 1442 | ||
1443 | err = nilfs_segctor_extend_segments(sci, nilfs, nadd); | ||
1444 | if (unlikely(err)) | ||
1445 | return err; | ||
1446 | |||
1447 | if (sci->sc_stage.flags & NILFS_CF_SUFREED) { | 1443 | if (sci->sc_stage.flags & NILFS_CF_SUFREED) { |
1448 | err = nilfs_sufile_cancel_freev(nilfs->ns_sufile, | 1444 | err = nilfs_sufile_cancel_freev(nilfs->ns_sufile, |
1449 | sci->sc_freesegs, | 1445 | sci->sc_freesegs, |
1450 | sci->sc_nfreesegs, | 1446 | sci->sc_nfreesegs, |
1451 | NULL); | 1447 | NULL); |
1452 | WARN_ON(err); /* do not happen */ | 1448 | WARN_ON(err); /* do not happen */ |
1449 | sci->sc_stage.flags &= ~NILFS_CF_SUFREED; | ||
1453 | } | 1450 | } |
1451 | |||
1452 | err = nilfs_segctor_extend_segments(sci, nilfs, nadd); | ||
1453 | if (unlikely(err)) | ||
1454 | return err; | ||
1455 | |||
1454 | nadd = min_t(int, nadd << 1, SC_MAX_SEGDELTA); | 1456 | nadd = min_t(int, nadd << 1, SC_MAX_SEGDELTA); |
1455 | sci->sc_stage = prev_stage; | 1457 | sci->sc_stage = prev_stage; |
1456 | } | 1458 | } |