[LTP] [PATCH v5 04/10] tst_supported_fs: Implement skip list
Petr Vorel
pvorel@suse.cz
Fri Sep 9 16:18:34 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).
Acked-by: Richard Palethorpe <rpalethorpe@suse.com>
Reviewed-by: Li Wang <liwang@redhat.com>
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
changes v4->v5:
* testcases/lib/tst_supported_fs.c: put parsing code to separate
function parse_skiplist() (Cyril)
testcases/lib/tst_supported_fs.c | 65 ++++++++++++++++++----
testcases/misc/lvm/generate_lvm_runfile.sh | 2 +-
testcases/misc/lvm/prepare_lvm.sh | 2 +-
3 files changed, 56 insertions(+), 13 deletions(-)
diff --git a/testcases/lib/tst_supported_fs.c b/testcases/lib/tst_supported_fs.c
index 6e544070c..1c259e62a 100644
--- a/testcases/lib/tst_supported_fs.c
+++ b/testcases/lib/tst_supported_fs.c
@@ -5,40 +5,83 @@
*/
#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 = NULL;
+ 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, ret;
+ char **skiplist = NULL;
- if (argc > 2) {
- fprintf(stderr, "Can't specify multiple fs_type\n");
- usage();
- return 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 (argv[1] && !strcmp(argv[1], "-h")) {
+ if (argc - optind > 1) {
+ fprintf(stderr, "Can't specify multiple fs_type\n");
usage();
- return 0;
+ return 2;
}
- if (argv[1]) {
- ret = tst_fs_is_supported(argv[1]);
+ if (optind < argc) {
+ ret = tst_fs_is_supported(argv[optind]);
if (ret == TST_FS_UNSUPPORTED)
tst_brk(TCONF, "%s is not supported", argv[optind]);
@@ -46,7 +89,7 @@ int main(int argc, char *argv[])
return !ret;
}
- filesystems = tst_get_supported_fs_types(skiplist);
+ filesystems = tst_get_supported_fs_types((const char * const*)skiplist);
if (!filesystems[0])
tst_brk(TCONF, "There are no supported filesystems");
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