diff options
Diffstat (limited to 'fs/nilfs2/segment.c')
-rw-r--r-- | fs/nilfs2/segment.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c index 1f7881ca01c4..9e680a93b13a 100644 --- a/fs/nilfs2/segment.c +++ b/fs/nilfs2/segment.c | |||
@@ -2408,6 +2408,7 @@ static int nilfs_segctor_construct(struct nilfs_sc_info *sci, int mode) | |||
2408 | { | 2408 | { |
2409 | struct nilfs_sb_info *sbi = sci->sc_sbi; | 2409 | struct nilfs_sb_info *sbi = sci->sc_sbi; |
2410 | struct the_nilfs *nilfs = sbi->s_nilfs; | 2410 | struct the_nilfs *nilfs = sbi->s_nilfs; |
2411 | struct nilfs_super_block **sbp; | ||
2411 | int err = 0; | 2412 | int err = 0; |
2412 | 2413 | ||
2413 | nilfs_segctor_accept(sci); | 2414 | nilfs_segctor_accept(sci); |
@@ -2423,8 +2424,11 @@ static int nilfs_segctor_construct(struct nilfs_sc_info *sci, int mode) | |||
2423 | if (test_bit(NILFS_SC_SUPER_ROOT, &sci->sc_flags) && | 2424 | if (test_bit(NILFS_SC_SUPER_ROOT, &sci->sc_flags) && |
2424 | nilfs_discontinued(nilfs)) { | 2425 | nilfs_discontinued(nilfs)) { |
2425 | down_write(&nilfs->ns_sem); | 2426 | down_write(&nilfs->ns_sem); |
2426 | err = nilfs_commit_super( | 2427 | err = -EIO; |
2427 | sbi, nilfs_altsb_need_update(nilfs)); | 2428 | sbp = nilfs_prepare_super(sbi); |
2429 | if (likely(sbp)) | ||
2430 | err = nilfs_commit_super( | ||
2431 | sbi, nilfs_altsb_need_update(nilfs)); | ||
2428 | up_write(&nilfs->ns_sem); | 2432 | up_write(&nilfs->ns_sem); |
2429 | } | 2433 | } |
2430 | } | 2434 | } |