File improve-readahead.patch of Package systemd.1408

From 05aa9edde0f9f4077b8120389c93cb0134eda9c5 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Sat, 21 Jan 2012 02:51:13 +0100
Subject: [PATCH] readahead: don't monopolize IO when replaying

---
 TODO                             |    3 +++
 src/readahead/readahead-replay.c |    8 +++++++-
 2 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/src/readahead/readahead-replay.c b/src/readahead/readahead-replay.c
index 00d57c3..0c739c8 100644
--- a/src/readahead-replay.c
+++ b/src/readahead-replay.c
@@ -186,7 +186,13 @@ static int replay(const char *root) {
         if (on_ssd)
                 prio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_IDLE, 0);
         else
-                prio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_RT, 7);
+                /* We are not using RT here, since we'd starve IO that
+                we didn't record (which is for example blkid, since
+                its disk accesses go directly to the block device and
+                are thus not visible in fallocate) to death. However,
+                we do ask for an IO prio that is slightly higher than
+                the default (which is BE. 4) */
+                prio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 2);
 
         if (ioprio_set(IOPRIO_WHO_PROCESS, getpid(), prio) < 0)
                 log_warning("Failed to set IDLE IO priority class: %m");
-- 
1.7.7

openSUSE Build Service is sponsored by