diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-06-21 23:53:20 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-06-21 23:53:20 +0200 |
commit | 87ce22cc0d097d9cd0297d0141eadba6c573c299 (patch) | |
tree | 8b7831ad915705a9ee67aa2e6defdc58dc3e9a9d /src/readahead/readahead-replay.c | |
parent | b4bdfefac3fcf633aa0700a981d854cc49a9725b (diff) |
readahead: merge three binaries into one
since the binaries share much of the same code and we better load only
one binary instead of two from disk at early boot let's merge the three
readahead binaries into one. This also allows us to drop a lot of
duplicated code.
Diffstat (limited to 'src/readahead/readahead-replay.c')
-rw-r--r-- | src/readahead/readahead-replay.c | 94 |
1 files changed, 7 insertions, 87 deletions
diff --git a/src/readahead/readahead-replay.c b/src/readahead/readahead-replay.c index fc2c33fcc1..6e6db601d4 100644 --- a/src/readahead/readahead-replay.c +++ b/src/readahead/readahead-replay.c @@ -44,8 +44,6 @@ #include "readahead-common.h" #include "virt.h" -static off_t arg_file_size_max = READAHEAD_FILE_SIZE_MAX; - static ReadaheadShared *shared = NULL; static int unpack_file(FILE *pack) { @@ -289,103 +287,25 @@ finish: return r; } +int main_replay(const char *root) { -static int help(void) { - - printf("%s [OPTIONS...] [DIRECTORY]\n\n" - "Replay collected read-ahead data on early boot.\n\n" - " -h --help Show this help\n" - " --max-file-size=BYTES Maximum size of files to read ahead\n", - program_invocation_short_name); - - return 0; -} - -static int parse_argv(int argc, char *argv[]) { - - enum { - ARG_FILE_SIZE_MAX - }; - - static const struct option options[] = { - { "help", no_argument, NULL, 'h' }, - { "file-size-max", required_argument, NULL, ARG_FILE_SIZE_MAX }, - { NULL, 0, NULL, 0 } - }; - - int c; - - assert(argc >= 0); - assert(argv); - - while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0) { - - switch (c) { - - case 'h': - help(); - return 0; - - case ARG_FILE_SIZE_MAX: { - unsigned long long ull; - - if (safe_atollu(optarg, &ull) < 0 || ull <= 0) { - log_error("Failed to parse maximum file size %s.", optarg); - return -EINVAL; - } - - arg_file_size_max = (off_t) ull; - break; - } - - case '?': - return -EINVAL; - - default: - log_error("Unknown option code %c", c); - return -EINVAL; - } - } - - if (optind != argc && - optind != argc-1) { - help(); - return -EINVAL; - } - - return 1; -} - -int main(int argc, char*argv[]) { - int r; - const char *root; - - log_set_target(LOG_TARGET_SAFE); - log_parse_environment(); - log_open(); - - umask(0022); - - r = parse_argv(argc, argv); - if (r <= 0) - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; - - root = optind < argc ? argv[optind] : "/"; + if (!root) + root = "/"; if (!enough_ram()) { log_info("Disabling readahead replay due to low memory."); - return 0; + return EXIT_SUCCESS; } shared = shared_get(); if (!shared) - return 1; + return EXIT_FAILURE; shared->replay = getpid(); __sync_synchronize(); if (replay(root) < 0) - return 1; + return EXIT_FAILURE; - return 0; + return EXIT_SUCCESS; } |