diff options
author | Alex Shi <alex.shi@linaro.org> | 2015-03-30 11:38:40 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2015-03-30 11:38:40 +0800 |
commit | 88720d8b842c59efcc0c4dc17e2107f4dae502f5 (patch) | |
tree | 967e60ace88cd9e4f9819042eedf3be6a445bb54 /fs/nilfs2/segment.c | |
parent | ba0bfedf4c9cad58f56a7038d1462ffc21cd33df (diff) | |
parent | 73895725a9401bd3454757fcfa7d691270ac7498 (diff) |
Merge tag 'v3.10.73' into linux-linaro-lskHEADlinux-linaro-lsk
This is the 3.10.73 stable release
Diffstat (limited to 'fs/nilfs2/segment.c')
-rw-r--r-- | fs/nilfs2/segment.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c index b3c95c1a4700..99294a286e66 100644 --- a/fs/nilfs2/segment.c +++ b/fs/nilfs2/segment.c @@ -1906,6 +1906,7 @@ static void nilfs_segctor_drop_written_files(struct nilfs_sc_info *sci, struct the_nilfs *nilfs) { struct nilfs_inode_info *ii, *n; + int during_mount = !(sci->sc_super->s_flags & MS_ACTIVE); int defer_iput = false; spin_lock(&nilfs->ns_inode_lock); @@ -1918,10 +1919,10 @@ static void nilfs_segctor_drop_written_files(struct nilfs_sc_info *sci, brelse(ii->i_bh); ii->i_bh = NULL; list_del_init(&ii->i_dirty); - if (!ii->vfs_inode.i_nlink) { + if (!ii->vfs_inode.i_nlink || during_mount) { /* - * Defer calling iput() to avoid a deadlock - * over I_SYNC flag for inodes with i_nlink == 0 + * Defer calling iput() to avoid deadlocks if + * i_nlink == 0 or mount is not yet finished. */ list_add_tail(&ii->i_dirty, &sci->sc_iput_queue); defer_iput = true; |