assert(what);
assert(me);
+ if (access("/proc/swaps", F_OK) < 0) {
+ log_info("Swap not supported, ignoring fstab swap entry for %s.", what);
+ return 0;
+ }
+
if (detect_container(NULL) > 0) {
log_info("Running in a container, ignoring fstab swap entry for %s.", what);
return 0;
if (!what)
return log_oom();
- if (detect_container(NULL) > 0 && is_device_path(what)) {
+ if (is_device_path(what) && path_is_read_only_fs("sys") > 0) {
log_info("Running in a container, ignoring fstab device entry for %s.", what);
continue;
}
return log_oom();
}
- if (!arg_usr_what || !arg_usr_options)
+ if (!arg_usr_what)
return 0;
what = fstab_node_to_udev_node(arg_usr_what);
return -1;
}
- opts = arg_usr_options;
+ if (!arg_usr_options)
+ opts = arg_root_rw > 0 ? "rw" : "ro";
+ else if (!mount_test_option(arg_usr_options, "ro") &&
+ !mount_test_option(arg_usr_options, "rw"))
+ opts = strappenda(arg_usr_options, ",", arg_root_rw > 0 ? "rw" : "ro");
+ else
+ opts = arg_usr_options;
log_debug("Found entry what=%s where=/sysroot/usr type=%s", what, strna(arg_usr_fstype));
return add_mount(what,
}
free(arg_root_what);
+ free(arg_root_fstype);
+ free(arg_root_options);
+
+ free(arg_usr_what);
+ free(arg_usr_fstype);
+ free(arg_usr_options);
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
}