Skip to contentSkip to conversation

ext4: yield during large unlinks

PATCH New Theodore Ts'o 1 participant 1 message Jul 12, 2013 ext4 file system

lore
Share & tools
lore

Theodore Ts'o

author maintainer
#0 lore raw

PATCH 1/1 ext4: yield during large unlinks

During large unlink operations on files with extents, we can use a lot of CPU time. This adds a cond_resched() call when starting to examine the next level of a multi-level extent tree. Multi-level extent trees are rare in the first place, and this should rarely be executed.

---
 fs/ext4/extents.c | 3 +++
 1 file changed, 3 insertions(+)
fs/ext4/extents.c +3 -0
index 3d99b18..cc4731fd 100644
@@ -2861,6 +2861,9 @@ again:
 				err = PTR_ERR(bh);
 				break;
 			}
+			/* Yield here to deal with large extent trees. Should be
+			 * a no-op if we did IO for the above sb_bread. */
+			cond_resched();
 			if (WARN_ON(i + 1 > depth)) {
 				err = -EIO;
 				break;
Signature · 1 line
1.7.12.rc0.22.gcdd159b