diff options
| -rw-r--r-- | fs/xfs/xfs_log.c | 11 | ||||
| -rw-r--r-- | fs/xfs/xfs_mount.c | 10 |
2 files changed, 11 insertions, 10 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( | |||
| 749 | return 0; | 749 | return 0; |
| 750 | } | 750 | } |
| 751 | 751 | ||
| 752 | /* | ||
| 753 | * During the second phase of log recovery, we need iget and | ||
| 754 | * iput to behave like they do for an active filesystem. | ||
| 755 | * xfs_fs_drop_inode needs to be able to prevent the deletion | ||
| 756 | * of inodes before we're done replaying log items on those | ||
| 757 | * inodes. Turn it off immediately after recovery finishes | ||
| 758 | * so that we don't leak the quota inodes if subsequent mount | ||
| 759 | * activities fail. | ||
| 760 | */ | ||
| 761 | mp->m_super->s_flags |= MS_ACTIVE; | ||
| 752 | error = xlog_recover_finish(mp->m_log); | 762 | error = xlog_recover_finish(mp->m_log); |
| 753 | if (!error) | 763 | if (!error) |
| 754 | xfs_log_work_queue(mp); | 764 | xfs_log_work_queue(mp); |
| 765 | mp->m_super->s_flags &= ~MS_ACTIVE; | ||
| 755 | 766 | ||
| 756 | return error; | 767 | return error; |
| 757 | } | 768 | } |
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 40d4e8b4e193..151a82db0945 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
| @@ -945,15 +945,6 @@ xfs_mountfs( | |||
| 945 | } | 945 | } |
| 946 | 946 | ||
| 947 | /* | 947 | /* |
| 948 | * During the second phase of log recovery, we need iget and | ||
| 949 | * iput to behave like they do for an active filesystem. | ||
| 950 | * xfs_fs_drop_inode needs to be able to prevent the deletion | ||
| 951 | * of inodes before we're done replaying log items on those | ||
| 952 | * inodes. | ||
| 953 | */ | ||
| 954 | mp->m_super->s_flags |= MS_ACTIVE; | ||
| 955 | |||
| 956 | /* | ||
| 957 | * Finish recovering the file system. This part needed to be delayed | 948 | * Finish recovering the file system. This part needed to be delayed |
| 958 | * until after the root and real-time bitmap inodes were consistently | 949 | * until after the root and real-time bitmap inodes were consistently |
| 959 | * read in. | 950 | * read in. |
| @@ -1028,7 +1019,6 @@ xfs_mountfs( | |||
| 1028 | out_quota: | 1019 | out_quota: |
| 1029 | xfs_qm_unmount_quotas(mp); | 1020 | xfs_qm_unmount_quotas(mp); |
| 1030 | out_rtunmount: | 1021 | out_rtunmount: |
| 1031 | mp->m_super->s_flags &= ~MS_ACTIVE; | ||
| 1032 | xfs_rtunmount_inodes(mp); | 1022 | xfs_rtunmount_inodes(mp); |
| 1033 | out_rele_rip: | 1023 | out_rele_rip: |
| 1034 | IRELE(rip); | 1024 | IRELE(rip); |
