[LTP] [PATCH v6 1/8] tst_supported_fs: Implement skip list
Petr Vorel
pvorel@suse.cz
Thu Sep 15 11:36:32 CEST 2022
as it will be needed for $ALL_FILESYSTEMS shell implementation in the
next commit. Pass tmpfs to LVM scripts (as it was required there).
Also print TCONF if there are not supported filesystems.
Acked-by: Richard Palethorpe <rpalethorpe@suse.com>
Reviewed-by: Li Wang <liwang@redhat.com>
Reviewed-by: Cyril Hrubis <chrubis@suse.cz>
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
testcases/lib/tst_supported_fs.c | 70 ++++++++++++++++++----
testcases/misc/lvm/generate_lvm_runfile.sh | 2 +-
testcases/misc/lvm/prepare_lvm.sh | 2 +-
3 files changed, 61 insertions(+), 13 deletions(-)
diff --git a/testcases/lib/tst_supported_fs.c b/testcases/lib/tst_supported_fs.c
index 43eac194f..2b42d5bb3 100644
--- a/testcases/lib/tst_supported_fs.c
+++ b/testcases/lib/tst_supported_fs.c
@@ -5,42 +5,90 @@
*/
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
+#define SKIP_DELIMITER ','
+
#define TST_NO_DEFAULT_MAIN
#include "tst_test.h"
#include "tst_fs.h"
static void usage(void)
{
- fprintf(stderr, "Usage: tst_supported_fs [fs_type]\n");
+ fprintf(stderr, "Usage: tst_supported_fs [-s skip_list] [fs_type]\n");
fprintf(stderr, " If fs_type is supported, return 0\n");
fprintf(stderr, " If fs_type isn't supported, return 1\n");
fprintf(stderr, " If fs_type isn't specified, print the list of supported filesystems\n");
fprintf(stderr, " fs_type - a specified filesystem type\n");
+ fprintf(stderr, " skip_list - filesystems to skip, delimiter: '%c'\n",
+ SKIP_DELIMITER);
+}
+
+static char **parse_skiplist(char *fs)
+{
+ char **skiplist;
+ int i, cnt = 1;
+
+ for (i = 0; fs[i]; i++) {
+ if (optarg[i] == SKIP_DELIMITER)
+ cnt++;
+ }
+
+ skiplist = malloc(++cnt * sizeof(char *));
+ if (!skiplist) {
+ fprintf(stderr, "malloc() failed\n");
+ return NULL;
+ }
+
+ for (i = 0; i < cnt; i++)
+ skiplist[i] = strtok_r(fs, TST_TO_STR(SKIP_DELIMITER), &fs);
+
+ return skiplist;
}
int main(int argc, char *argv[])
{
- const char *skiplist[] = {"tmpfs", NULL};
const char *const *filesystems;
- int i;
+ int i, ret;
+ char **skiplist = NULL;
- if (argc > 2) {
+ while ((ret = getopt(argc, argv, "hs:"))) {
+ if (ret < 0)
+ break;
+
+ switch (ret) {
+ case '?':
+ usage();
+ return 1;
+
+ case 'h':
+ usage();
+ return 0;
+
+ case 's':
+ skiplist = parse_skiplist(optarg);
+ if (!skiplist)
+ return 1;
+ break;
+ }
+ }
+
+ if (argc - optind > 1) {
fprintf(stderr, "Can't specify multiple fs_type\n");
usage();
return 2;
}
- if (argv[1] && !strcmp(argv[1], "-h")) {
- usage();
- return 0;
- }
+ if (optind < argc)
+ return !tst_fs_is_supported(argv[optind]);
+
+
+ filesystems = tst_get_supported_fs_types((const char * const*)skiplist);
- if (argv[1])
- return !tst_fs_is_supported(argv[1]);
+ if (!filesystems[0])
+ tst_brk(TCONF, "There are no supported filesystems");
- filesystems = tst_get_supported_fs_types(skiplist);
for (i = 0; filesystems[i]; i++)
printf("%s\n", filesystems[i]);
diff --git a/testcases/misc/lvm/generate_lvm_runfile.sh b/testcases/misc/lvm/generate_lvm_runfile.sh
index 477aed116..7f7e149d9 100755
--- a/testcases/misc/lvm/generate_lvm_runfile.sh
+++ b/testcases/misc/lvm/generate_lvm_runfile.sh
@@ -17,7 +17,7 @@ generate_runfile()
trap '[ $? -eq 0 ] || tst_brk TBROK "Cannot create LVM runfile"' EXIT
INFILE="$LTPROOT/testcases/data/lvm/runfile.tpl"
OUTFILE="$LTPROOT/runtest/lvm.local"
- FS_LIST=`tst_supported_fs`
+ FS_LIST=$(tst_supported_fs -s tmpfs)
echo -n "" >"$OUTFILE"
for fsname in $FS_LIST; do
diff --git a/testcases/misc/lvm/prepare_lvm.sh b/testcases/misc/lvm/prepare_lvm.sh
index d3ae4b23f..29f386df8 100755
--- a/testcases/misc/lvm/prepare_lvm.sh
+++ b/testcases/misc/lvm/prepare_lvm.sh
@@ -70,7 +70,7 @@ prepare_mounts()
prepare_lvm()
{
- FS_LIST=`tst_supported_fs | sort -u`
+ FS_LIST=$(tst_supported_fs -s tmpfs | sort -u)
ROD mkdir -p "$LVM_TMPDIR"
ROD mkdir -p "$LVM_IMGDIR"
chmod 777 "$LVM_TMPDIR"
--
2.37.3
More information about the ltp
mailing list