summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_log.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2017-08-25 11:07:13 +0200
committerIngo Molnar <mingo@kernel.org>2017-08-25 11:07:13 +0200
commit3a9ff4fd04cc6ad199419508c8ea6eb839e0262d (patch)
treef3933b082ea1743e63e93a16190c6ce32175c96a /fs/xfs/xfs_log.c
parent9c8783201cb58e9af8ddeb0cc68f37b0a44ca16c (diff)
parent90a6cd503982bfd33ce8c70eb49bd2dd33bc6325 (diff)
downloadlinux-3a9ff4fd04cc6ad199419508c8ea6eb839e0262d.tar.gz
linux-3a9ff4fd04cc6ad199419508c8ea6eb839e0262d.tar.bz2
linux-3a9ff4fd04cc6ad199419508c8ea6eb839e0262d.zip
Merge branch 'linus' into sched/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/xfs/xfs_log.c')
-rw-r--r--fs/xfs/xfs_log.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
index 0053bcf2b10a..4ebd0bafc914 100644
--- a/fs/xfs/xfs_log.c
+++ b/fs/xfs/xfs_log.c
@@ -749,9 +749,20 @@ xfs_log_mount_finish(
return 0;
}
+ /*
+ * During the second phase of log recovery, we need iget and
+ * iput to behave like they do for an active filesystem.
+ * xfs_fs_drop_inode needs to be able to prevent the deletion
+ * of inodes before we're done replaying log items on those
+ * inodes. Turn it off immediately after recovery finishes
+ * so that we don't leak the quota inodes if subsequent mount
+ * activities fail.
+ */
+ mp->m_super->s_flags |= MS_ACTIVE;
error = xlog_recover_finish(mp->m_log);
if (!error)
xfs_log_work_queue(mp);
+ mp->m_super->s_flags &= ~MS_ACTIVE;
return error;
}