Message ID | 1463570913-6860-1-git-send-email-lede@daniel.thecshore.com |
---|---|
State | Superseded |
Delegated to: | John Crispin |
Headers | show |
On 18/05/2016 13:28, lede@daniel.thecshore.com wrote: > From: Daniel Dickinson <lede@daniel.thecshore.com> > > v2: Fix mixup of dosfsck checking ext* and e2fsck checking vfat. > > vfat is a common filesystem which users may want to mount on an > OpenWrt/LEDE device, so support peforming filesystem checks > before mount for vfat. has this series been test on device and did you verify that the fs check now works properly for both those filesystems ? John > > Signed-off-by: Daniel Dickinson <lede@daniel.thecshore.com> > --- > block.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/block.c b/block.c > index 71ffd0b..5a584cb 100644 > --- a/block.c > +++ b/block.c > @@ -628,24 +628,30 @@ static void check_filesystem(struct blkid_struct_probe *pr) > pid_t pid; > struct stat statbuf; > const char *e2fsck = "/usr/sbin/e2fsck"; > + const char *dosfsck = "/sbin/dosfsck"; > + const char *ckfs; > > /* UBIFS does not need stuff like fsck */ > if (!strncmp(pr->id->name, "ubifs", 5)) > return; > > - if (strncmp(pr->id->name, "ext", 3)) { > + if (!strncmp(pr->id->name, "vfat", 4)) { > + ckfs = dosfsck; > + } else if (!strncmp(pr->id->name, "ext", 3)) { > + ckfs = e2fsck; > + } else { > ULOG_ERR("check_filesystem: %s is not supported\n", pr->id->name); > return; > } > > - if (stat(e2fsck, &statbuf) < 0) { > + if (stat(ckfs, &statbuf) < 0) { > ULOG_ERR("check_filesystem: %s not found\n", e2fsck); > return; > } > > pid = fork(); > if (!pid) { > - execl(e2fsck, e2fsck, "-p", pr->dev, NULL); > + execl(ckfs, ckfs, "-p", pr->dev, NULL); > exit(-1); > } else if (pid > 0) { > int status; >
On 16-05-19 02:07 AM, John Crispin wrote: > > > On 18/05/2016 13:28, lede@daniel.thecshore.com wrote: >> From: Daniel Dickinson <lede@daniel.thecshore.com> >> >> v2: Fix mixup of dosfsck checking ext* and e2fsck checking vfat. >> >> vfat is a common filesystem which users may want to mount on an >> OpenWrt/LEDE device, so support peforming filesystem checks >> before mount for vfat. > > has this series been test on device and did you verify that the fs check > now works properly for both those filesystems ? Not yet, will let you know when. Regards, Daniel
Hopefully before I crash tonight I will have something to report. I'm in the process of a build now. On 16-05-19 02:07 AM, John Crispin wrote: > > > On 18/05/2016 13:28, lede@daniel.thecshore.com wrote: >> From: Daniel Dickinson <lede@daniel.thecshore.com> >> >> v2: Fix mixup of dosfsck checking ext* and e2fsck checking vfat. >> >> vfat is a common filesystem which users may want to mount on an >> OpenWrt/LEDE device, so support peforming filesystem checks >> before mount for vfat. > > has this series been test on device and did you verify that the fs check > now works properly for both those filesystems ? > > John > >> >> Signed-off-by: Daniel Dickinson <lede@daniel.thecshore.com> >> --- >> block.c | 12 +++++++++--- >> 1 file changed, 9 insertions(+), 3 deletions(-) >> >> diff --git a/block.c b/block.c >> index 71ffd0b..5a584cb 100644 >> --- a/block.c >> +++ b/block.c >> @@ -628,24 +628,30 @@ static void check_filesystem(struct blkid_struct_probe *pr) >> pid_t pid; >> struct stat statbuf; >> const char *e2fsck = "/usr/sbin/e2fsck"; >> + const char *dosfsck = "/sbin/dosfsck"; >> + const char *ckfs; >> >> /* UBIFS does not need stuff like fsck */ >> if (!strncmp(pr->id->name, "ubifs", 5)) >> return; >> >> - if (strncmp(pr->id->name, "ext", 3)) { >> + if (!strncmp(pr->id->name, "vfat", 4)) { >> + ckfs = dosfsck; >> + } else if (!strncmp(pr->id->name, "ext", 3)) { >> + ckfs = e2fsck; >> + } else { >> ULOG_ERR("check_filesystem: %s is not supported\n", pr->id->name); >> return; >> } >> >> - if (stat(e2fsck, &statbuf) < 0) { >> + if (stat(ckfs, &statbuf) < 0) { >> ULOG_ERR("check_filesystem: %s not found\n", e2fsck); >> return; >> } >> >> pid = fork(); >> if (!pid) { >> - execl(e2fsck, e2fsck, "-p", pr->dev, NULL); >> + execl(ckfs, ckfs, "-p", pr->dev, NULL); >> exit(-1); >> } else if (pid > 0) { >> int status; >> >
Hi John, It looks like on ar71xx MS_ACL is not defined in linux/fs.h in the default kernel. It must have been added later than 4.1 (I believe that is the version ar71xx is currently on). I guess my desktop system is a newer kernel that has symbols (I didn't have a build tree handy to check at the time). Regards, Daniel On 16-05-19 03:22 AM, Daniel Dickinson wrote: > Hopefully before I crash tonight I will have something to report. I'm > in the process of a build now. > > On 16-05-19 02:07 AM, John Crispin wrote: >> >> >> On 18/05/2016 13:28, lede@daniel.thecshore.com wrote: >>> From: Daniel Dickinson <lede@daniel.thecshore.com> >>> >>> v2: Fix mixup of dosfsck checking ext* and e2fsck checking vfat. >>> >>> vfat is a common filesystem which users may want to mount on an >>> OpenWrt/LEDE device, so support peforming filesystem checks >>> before mount for vfat. >> >> has this series been test on device and did you verify that the fs check >> now works properly for both those filesystems ? >> >> John >> >>> >>> Signed-off-by: Daniel Dickinson <lede@daniel.thecshore.com> >>> --- >>> block.c | 12 +++++++++--- >>> 1 file changed, 9 insertions(+), 3 deletions(-) >>> >>> diff --git a/block.c b/block.c >>> index 71ffd0b..5a584cb 100644 >>> --- a/block.c >>> +++ b/block.c >>> @@ -628,24 +628,30 @@ static void check_filesystem(struct blkid_struct_probe *pr) >>> pid_t pid; >>> struct stat statbuf; >>> const char *e2fsck = "/usr/sbin/e2fsck"; >>> + const char *dosfsck = "/sbin/dosfsck"; >>> + const char *ckfs; >>> >>> /* UBIFS does not need stuff like fsck */ >>> if (!strncmp(pr->id->name, "ubifs", 5)) >>> return; >>> >>> - if (strncmp(pr->id->name, "ext", 3)) { >>> + if (!strncmp(pr->id->name, "vfat", 4)) { >>> + ckfs = dosfsck; >>> + } else if (!strncmp(pr->id->name, "ext", 3)) { >>> + ckfs = e2fsck; >>> + } else { >>> ULOG_ERR("check_filesystem: %s is not supported\n", pr->id->name); >>> return; >>> } >>> >>> - if (stat(e2fsck, &statbuf) < 0) { >>> + if (stat(ckfs, &statbuf) < 0) { >>> ULOG_ERR("check_filesystem: %s not found\n", e2fsck); >>> return; >>> } >>> >>> pid = fork(); >>> if (!pid) { >>> - execl(e2fsck, e2fsck, "-p", pr->dev, NULL); >>> + execl(ckfs, ckfs, "-p", pr->dev, NULL); >>> exit(-1); >>> } else if (pid > 0) { >>> int status; >>> >> > > _______________________________________________ > Lede-dev mailing list > Lede-dev@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/lede-dev >
Oh, it uses MS_POSIXACL. I'll check if that changes in newer trees. On 16-05-19 03:22 AM, Daniel Dickinson wrote: > Hopefully before I crash tonight I will have something to report. I'm > in the process of a build now. > > On 16-05-19 02:07 AM, John Crispin wrote: >> >> >> On 18/05/2016 13:28, lede@daniel.thecshore.com wrote: >>> From: Daniel Dickinson <lede@daniel.thecshore.com> >>> >>> v2: Fix mixup of dosfsck checking ext* and e2fsck checking vfat. >>> >>> vfat is a common filesystem which users may want to mount on an >>> OpenWrt/LEDE device, so support peforming filesystem checks >>> before mount for vfat. >> >> has this series been test on device and did you verify that the fs check >> now works properly for both those filesystems ? >> >> John >> >>> >>> Signed-off-by: Daniel Dickinson <lede@daniel.thecshore.com> >>> --- >>> block.c | 12 +++++++++--- >>> 1 file changed, 9 insertions(+), 3 deletions(-) >>> >>> diff --git a/block.c b/block.c >>> index 71ffd0b..5a584cb 100644 >>> --- a/block.c >>> +++ b/block.c >>> @@ -628,24 +628,30 @@ static void check_filesystem(struct blkid_struct_probe *pr) >>> pid_t pid; >>> struct stat statbuf; >>> const char *e2fsck = "/usr/sbin/e2fsck"; >>> + const char *dosfsck = "/sbin/dosfsck"; >>> + const char *ckfs; >>> >>> /* UBIFS does not need stuff like fsck */ >>> if (!strncmp(pr->id->name, "ubifs", 5)) >>> return; >>> >>> - if (strncmp(pr->id->name, "ext", 3)) { >>> + if (!strncmp(pr->id->name, "vfat", 4)) { >>> + ckfs = dosfsck; >>> + } else if (!strncmp(pr->id->name, "ext", 3)) { >>> + ckfs = e2fsck; >>> + } else { >>> ULOG_ERR("check_filesystem: %s is not supported\n", pr->id->name); >>> return; >>> } >>> >>> - if (stat(e2fsck, &statbuf) < 0) { >>> + if (stat(ckfs, &statbuf) < 0) { >>> ULOG_ERR("check_filesystem: %s not found\n", e2fsck); >>> return; >>> } >>> >>> pid = fork(); >>> if (!pid) { >>> - execl(e2fsck, e2fsck, "-p", pr->dev, NULL); >>> + execl(ckfs, ckfs, "-p", pr->dev, NULL); >>> exit(-1); >>> } else if (pid > 0) { >>> int status; >>> >> > > _______________________________________________ > Lede-dev mailing list > Lede-dev@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/lede-dev >
diff --git a/block.c b/block.c index 71ffd0b..5a584cb 100644 --- a/block.c +++ b/block.c @@ -628,24 +628,30 @@ static void check_filesystem(struct blkid_struct_probe *pr) pid_t pid; struct stat statbuf; const char *e2fsck = "/usr/sbin/e2fsck"; + const char *dosfsck = "/sbin/dosfsck"; + const char *ckfs; /* UBIFS does not need stuff like fsck */ if (!strncmp(pr->id->name, "ubifs", 5)) return; - if (strncmp(pr->id->name, "ext", 3)) { + if (!strncmp(pr->id->name, "vfat", 4)) { + ckfs = dosfsck; + } else if (!strncmp(pr->id->name, "ext", 3)) { + ckfs = e2fsck; + } else { ULOG_ERR("check_filesystem: %s is not supported\n", pr->id->name); return; } - if (stat(e2fsck, &statbuf) < 0) { + if (stat(ckfs, &statbuf) < 0) { ULOG_ERR("check_filesystem: %s not found\n", e2fsck); return; } pid = fork(); if (!pid) { - execl(e2fsck, e2fsck, "-p", pr->dev, NULL); + execl(ckfs, ckfs, "-p", pr->dev, NULL); exit(-1); } else if (pid > 0) { int status;