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) {
int main(int argc, char*argv[]) {
int r;
+ const char *root;
log_set_target(LOG_TARGET_SYSLOG_OR_KMSG);
log_parse_environment();
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 (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 (replay(optind < argc ? argv[optind] : "/") < 0)
+ if (replay(root) < 0)
return 1;
return 0;