X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Freadahead-replay.c;h=65011ac4be3996d0ff41f92f44e889fdf3cb289a;hb=d68af58657ce0e99594dff199fbb9b319cf6af96;hp=cd89654f983d105e7731b9d2dd7ae4ec7a9ad7ba;hpb=07faed4f99d0c798f92de3032b9c20ca31388494;p=elogind.git diff --git a/src/readahead-replay.c b/src/readahead-replay.c index cd89654f9..65011ac4b 100644 --- a/src/readahead-replay.c +++ b/src/readahead-replay.c @@ -41,6 +41,7 @@ #include "sd-daemon.h" #include "ioprio.h" #include "readahead-common.h" +#include "virt.h" static off_t arg_file_size_max = READAHEAD_FILE_SIZE_MAX; @@ -94,7 +95,7 @@ static int unpack_file(FILE *pack) { any = true; if (fd >= 0) - if (posix_fadvise(fd, b * PAGE_SIZE, (c - b) * PAGE_SIZE, POSIX_FADV_WILLNEED) < 0) { + if (posix_fadvise(fd, b * page_size(), (c - b) * page_size(), POSIX_FADV_WILLNEED) < 0) { log_warning("posix_fadvise() failed: %m"); goto finish; } @@ -122,7 +123,8 @@ static int replay(const char *root) { FILE *pack = NULL; char line[LINE_MAX]; int r = 0; - char *pack_fn = NULL, c; + char *pack_fn = NULL; + int c; bool on_ssd, ready = false; int prio; int inotify_fd = -1; @@ -192,7 +194,7 @@ static int replay(const char *root) { log_debug("Replaying..."); - if (access("/dev/.systemd/readahead/noreplay", F_OK) >= 0) { + if (access("/run/systemd/readahead/noreplay", F_OK) >= 0) { log_debug("Got termination request"); goto done; } @@ -333,14 +335,19 @@ static int parse_argv(int argc, char *argv[]) { int main(int argc, char*argv[]) { int r; + const char *root; log_set_target(LOG_TARGET_SYSLOG_OR_KMSG); log_parse_environment(); log_open(); + umask(0022); + if ((r = parse_argv(argc, argv)) <= 0) return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; + root = optind < argc ? argv[optind] : "/"; + if (!enough_ram()) { log_info("Disabling readahead replay due to low memory."); return 0; @@ -357,7 +364,7 @@ int main(int argc, char*argv[]) { shared->replay = getpid(); __sync_synchronize(); - if (replay(optind < argc ? argv[optind] : "/") < 0) + if (replay(root) < 0) return 1; return 0;