readahead-replay: delay ready notification until we queued first read

This commit is contained in:
Lennart Poettering
2010-09-25 13:47:31 +02:00
parent 41a598e21a
commit 902a339c93
2 changed files with 13 additions and 4 deletions
+1
View File
@@ -54,6 +54,7 @@
*
* - detect ssd/lvm/... on btrfs
* - read ahead directories
* - sd_readahead_cancel
*/
static int btrfs_defrag(int fd) {
+12 -4
View File
@@ -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;