diff options
author | Arkadiusz Miśkiewicz | 2017-02-02 18:09:25 (GMT) |
---|---|---|
committer | Arkadiusz Miśkiewicz | 2017-02-02 18:09:25 (GMT) |
commit | d72932882f41fa358f6cabe07ba340848905c815 (patch) | |
tree | c97637e9cea3f4556eb1fa551d0ca1d5b8a29e1c /kernel-small_fixes.patch | |
parent | 53badc7f4955f109c2815063203b36e44c7918e2 (diff) | |
download | kernel-d72932882f41fa358f6cabe07ba340848905c815.zip kernel-d72932882f41fa358f6cabe07ba340848905c815.tar.gz |
- up to 4.9.7
Diffstat (limited to 'kernel-small_fixes.patch')
-rw-r--r-- | kernel-small_fixes.patch | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/kernel-small_fixes.patch b/kernel-small_fixes.patch index a5fbdf6..1bc4a8f 100644 --- a/kernel-small_fixes.patch +++ b/kernel-small_fixes.patch @@ -64,54 +64,4 @@ index 7a30b8f..dbeddd9 100644 if (next_id % mp->m_quotainfo->qi_dqperchunk) { *id = next_id; -From: Brian Foster <bfoster@redhat.com> -Subject: [PATCH] xfs: prevent quotacheck from overloading inode lru - -Quotacheck runs at mount time in situations where quota accounting must -be recalculated. In doing so, it uses bulkstat to visit every inode in -the filesystem. Historically, every inode processed during quotacheck -was released and immediately tagged for reclaim because quotacheck runs -before the superblock is marked active by the VFS. In other words, -the final iput() lead to an immediate ->destroy_inode() call, which -allowed the XFS background reclaim worker to start reclaiming inodes. - -Commit 17c12bcd3 ("xfs: when replaying bmap operations, don't let -unlinked inodes get reaped") marks the XFS superblock active sooner as -part of the mount process to support caching inodes processed during log -recovery. This occurs before quotacheck and thus means all inodes -processed by quotacheck are inserted to the LRU on release. The -s_umount lock is held until the mount has completed and thus prevents -the shrinkers from operating on the sb. This means that quotacheck can -excessively populate the inode LRU and lead to OOM conditions on systems -without sufficient RAM. - -Update the quotacheck bulkstat handler to set XFS_IGET_DONTCACHE on -inodes processed by quotacheck. This causes ->drop_inode() to return 1 -and in turn causes iput_final() to evict the inode. This preserves the -original quotacheck behavior and prevents it from overloading the LRU -and running out of memory. - -CC: stable@vger.kernel.org # v4.9 -Reported-by: Martin Svec <martin.svec@zoner.cz> -Signed-off-by: Brian Foster <bfoster@redhat.com> ---- - fs/xfs/xfs_qm.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c -index 45e50ea..b669b12 100644 ---- a/fs/xfs/xfs_qm.c -+++ b/fs/xfs/xfs_qm.c -@@ -1177,7 +1177,8 @@ xfs_qm_dqusage_adjust( - * the case in all other instances. It's OK that we do this because - * quotacheck is done only at mount time. - */ -- error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_EXCL, &ip); -+ error = xfs_iget(mp, NULL, ino, XFS_IGET_DONTCACHE, XFS_ILOCK_EXCL, -+ &ip); - if (error) { - *res = BULKSTAT_RV_NOTHING; - return error; --- -2.7.4 |