_cleanup_strv_free_ char **wanted_by = NULL, **required_by = NULL;
_cleanup_fclose_ FILE *f = NULL;
int r;
+ struct stat sb;
assert(what);
assert(where);
fprintf(f, "Before=%s\n", target_unit);
if (passno != 0) {
- r = generator_write_fsck_deps(f, dest, what, where, fstype);
- if (r < 0)
- return r;
+ if (streq(where, "/usr") && stat("/run/initramfs/fsck-usr", &sb) == 0)
+ ; /* skip /usr fsck if it has already been checked in the initramfs */
+ else {
+ r = generator_write_fsck_deps(f, dest, what, where, fstype);
+ if (r < 0)
+ return r;
+ }
}
r = generator_write_blockdev_dependency(f, what);
Wants=systemd-fsckd.socket
After=systemd-fsckd.socket
ConditionPathIsReadWrite=!/
+ConditionPathExists=!/run/initramfs/fsck-root
OnFailure=emergency.target
OnFailureJobMode=replace-irreversibly