From: Lennart Poettering Date: Sat, 25 Sep 2010 11:47:31 +0000 (+0200) Subject: readahead-replay: delay ready notification until we queued first read X-Git-Tag: v11~87 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=902a339c93f44bc7290bede2f91f3a5c7cb16402 readahead-replay: delay ready notification until we queued first read --- diff --git a/src/readahead-collect.c b/src/readahead-collect.c index fe35da700..6b9fb4650 100644 --- a/src/readahead-collect.c +++ b/src/readahead-collect.c @@ -54,6 +54,7 @@ * * - detect ssd/lvm/... on btrfs * - read ahead directories + * - sd_readahead_cancel */ static int btrfs_defrag(int fd) { diff --git a/src/readahead-replay.c b/src/readahead-replay.c index 58d9468c4..c01f73e6a 100644 --- a/src/readahead-replay.c +++ b/src/readahead-replay.c @@ -114,7 +114,7 @@ static int replay(const char *root) { char line[LINE_MAX]; int r = 0; char *pack_fn = NULL, c; - bool on_ssd; + bool on_ssd, ready = false; int prio; assert(root); @@ -168,9 +168,7 @@ static int replay(const char *root) { if (ioprio_set(IOPRIO_WHO_PROCESS, getpid(), prio) < 0) log_warning("Failed to set IDLE IO priority class: %m"); - sd_notify(0, - "READY=1\n" - "STATUS=Replaying readahead data"); + sd_notify(0, "STATUS=Replaying readahead data"); log_debug("Replaying..."); @@ -181,8 +179,18 @@ static int replay(const char *root) { r = k; goto finish; } + + if (!ready) { + /* We delay the ready notification until we + * queued at least one read */ + sd_notify(0, "READY=1"); + ready = true; + } } + if (!ready) + sd_notify(0, "READY=1"); + if (ferror(pack)) { log_error("Failed to read pack file."); r = -EIO;