[LTP] [PATCH v2 4/4] lib: mkfs: use 'mke2fs' for formatting extN filesystems
Sandeep Patil
sspatil@google.com
Fri Feb 23 00:11:26 CET 2018
On Mon, Dec 04, 2017 at 05:24:28PM +0100, Cyril Hrubis wrote:
> Hi!
> > @@ -43,7 +45,18 @@ void tst_mkfs_(const char *file, const int lineno, void (cleanup_fn)(void),
> > return;
> > }
> >
> > - snprintf(mkfs, sizeof(mkfs), "mkfs.%s", fs_type);
> > + if (tst_get_mkfs(fs_type, mkfs, NAME_MAX))
> > + tst_brkm(TCONF, cleanup_fn,
> > + "mkfs.%s not found for %s", fs_type, fs_type);
> > +
> > + if (!strcmp(mkfs, "mke2fs")) {
> > + /* insert '-t <fs_type> in arguments here */
> > + argv[pos++] = "-t";
> > + strcat(fs_opts_str, "-t ");
> > + argv[pos++] = fs_type;
> > + strcat(fs_opts_str, fs_type);
> > + strcat(fs_opts_str, " ");
> > + }
>
> Hmm, this is kind of ugly, why do we have tst_get_mkfs() function and
> then this if that fills it's arguments.
>
> Well what about we rather exported the tst_fs_is_supported() function
> and used it here before we even try to assemble the command to format
> the filesystem.
>
> I would have done it as following:
>
> Change the is_supported() to tst_fs_is_supported() what would check for
> mke2fs as a fallback command for ext*. Then the whole logic related to
> mkfs would go into the tst_mkfs() function, including again the fallback
> to mke2fs command for ext*.
>
> Or we can move the ttst_supported_fs_types.c code to tst_mkfs.c (in a
> separate patch) in order to get rid of the artificial boundary between
> the two modules. That should free us to draft better code without a need
> to draft publicly exposed interface between these two modules.
>
> > if (fs_opts) {
> > for (i = 0; fs_opts[i]; i++) {
> > diff --git a/lib/tst_supported_fs_types.c b/lib/tst_supported_fs_types.c
> > index a23b1ed52..a62dda0da 100644
> > --- a/lib/tst_supported_fs_types.c
> > +++ b/lib/tst_supported_fs_types.c
> > @@ -29,31 +29,43 @@ static const char *const fs_type_whitelist[] = {
> > "ext2",
> > "ext3",
> > "ext4",
> > +#ifndef __ANDROID__
> > "xfs",
> > "btrfs",
> > "vfat",
> > "exfat",
> > "ntfs",
> > +#endif
> > NULL
> > };
>
> What is the exact reason for this ifdef? Shouldn't the code handle the
> missing support gracefully even without it?
(I know this is ridiculously late, but ..)
Just wanted to report that we simply solved all of this trouble by making
mkfs.ext[234] symlinks available in Android and we pass 'ext4' as the
filesystem of preference using LTP_DEV_FS_TYPE :-)
Thanks for looking into this.
- ssp
More information about the ltp
mailing list