On 2022/9/29 19:28, Lukas Czerner wrote:
Hi,
indeed we'd like to avoid killing the instance that was not ran because
of noexecute. Can you try the following patch?
Thanks!
-Lukas
Yes, you're right, I think we can fix it in this way.
diff --git a/misc/fsck.c b/misc/fsck.c
index 1f6ec7d9..91edbf17 100644
--- a/misc/fsck.c
+++ b/misc/fsck.c
@@ -547,6 +547,8 @@ static int kill_all(int signum)
for (inst = instance_list; inst; inst = inst->next) {
if (inst->flags & FLAG_DONE)
continue;
+ if (inst->pid == -1)
+ continue;
kill(inst->pid, signum);
n++;
}
diff --git a/misc/fsck.c b/misc/fsck.c
index 1f6ec7d9..8fae7730 100644
--- a/misc/fsck.c
+++ b/misc/fsck.c
@@ -497,9 +497,10 @@ static int execute(const char *type, const char *device, const char *mntpt,
}
/* Fork and execute the correct program. */
- if (noexecute)
+ if (noexecute) {
pid = -1;
- else if ((pid = fork()) < 0) {
+ inst->flags |= FLAG_DONE;
+ } else if ((pid = fork()) < 0) {
perror("fork");
free(inst);
return errno;
@@ -544,6 +545,9 @@ static int kill_all(int signum)
struct fsck_instance *inst;
int n = 0;
+ if (noexecute)
+ return 0;
+
for (inst = instance_list; inst; inst = inst->next) {
if (inst->flags & FLAG_DONE)
continue;
regards,
Zhan Chengbin