chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
umount: log failed umounts only once at the end
[elogind.git]
/
src
/
readahead-replay.c
diff --git
a/src/readahead-replay.c
b/src/readahead-replay.c
index 87f2e598b41fbee218a3ad33b577c5b4f855b5ec..0b84528b0ee3d27dbae8cc8ccaa75511e6322200 100644
(file)
--- a/
src/readahead-replay.c
+++ b/
src/readahead-replay.c
@@
-62,7
+62,7
@@
static int unpack_file(FILE *pack) {
if ((fd = open(fn, O_RDONLY|O_CLOEXEC|O_NOATIME|O_NOCTTY|O_NOFOLLOW)) < 0) {
if ((fd = open(fn, O_RDONLY|O_CLOEXEC|O_NOATIME|O_NOCTTY|O_NOFOLLOW)) < 0) {
- if (errno != ENOENT)
+ if (errno != ENOENT
&& errno != EPERM && errno != EACCES
)
log_warning("open(%s) failed: %m", fn);
} else if (file_verify(fd, fn, arg_file_size_max, &st) <= 0) {
log_warning("open(%s) failed: %m", fn);
} else if (file_verify(fd, fn, arg_file_size_max, &st) <= 0) {
@@
-94,7
+94,7
@@
static int unpack_file(FILE *pack) {
any = true;
if (fd >= 0)
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;
}
log_warning("posix_fadvise() failed: %m");
goto finish;
}
@@
-122,7
+122,8
@@
static int replay(const char *root) {
FILE *pack = NULL;
char line[LINE_MAX];
int r = 0;
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;
bool on_ssd, ready = false;
int prio;
int inotify_fd = -1;
@@
-192,7
+193,7
@@
static int replay(const char *root) {
log_debug("Replaying...");
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;
}
log_debug("Got termination request");
goto done;
}
@@
-333,6
+334,7
@@
static int parse_argv(int argc, char *argv[]) {
int main(int argc, char*argv[]) {
int r;
int main(int argc, char*argv[]) {
int r;
+ const char *root;
log_set_target(LOG_TARGET_SYSLOG_OR_KMSG);
log_parse_environment();
log_set_target(LOG_TARGET_SYSLOG_OR_KMSG);
log_parse_environment();
@@
-341,18
+343,25
@@
int main(int argc, char*argv[]) {
if ((r = parse_argv(argc, argv)) <= 0)
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
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;
}
if (!enough_ram()) {
log_info("Disabling readahead replay due to low memory.");
return 0;
}
+ if (detect_virtualization(NULL) > 0) {
+ log_info("Disabling readahead replay due to execution in virtualized environment.");
+ return 0;
+ }
+
if (!(shared = shared_get()))
return 1;
shared->replay = getpid();
__sync_synchronize();
if (!(shared = shared_get()))
return 1;
shared->replay = getpid();
__sync_synchronize();
- if (replay(
optind < argc ? argv[optind] : "/"
) < 0)
+ if (replay(
root
) < 0)
return 1;
return 0;
return 1;
return 0;