diff options
Diffstat (limited to 'misc/fsck.c')
-rw-r--r-- | misc/fsck.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/misc/fsck.c b/misc/fsck.c index 1d92c54c..5228b917 100644 --- a/misc/fsck.c +++ b/misc/fsck.c @@ -123,6 +123,7 @@ int serialize = 0; int skip_root = 0; int like_mount = 0; int notitle = 0; +int parallel_root = 0; char *progname; char *fstype = NULL; struct fs_info *filesys_info; @@ -555,16 +556,18 @@ static int check_all(NOARGS) /* * Find and check the root filesystem first. */ - for (fs = filesys_info; fs; fs = fs->next) { - if (!strcmp(fs->mountpt, "/")) - break; - } - if (fs && !skip_root && !ignore(fs)) { - fsck_device(fs->device); - fs->flags |= FLAG_DONE; - status |= wait_all(); - if (status > EXIT_NONDESTRUCT) - return status; + if (!parallel_root) { + for (fs = filesys_info; fs; fs = fs->next) { + if (!strcmp(fs->mountpt, "/")) + break; + } + if (fs && !skip_root && !ignore(fs)) { + fsck_device(fs->device); + fs->flags |= FLAG_DONE; + status |= wait_all(); + if (status > EXIT_NONDESTRUCT) + return status; + } } if (fs) fs->flags |= FLAG_DONE; @@ -699,6 +702,9 @@ static void PRS(int argc, char *argv[]) case 'M': like_mount++; break; + case 'P': + parallel_root++; + break; case 's': serialize++; break; |