From 1eb328107ee507f415aaa64c05ef99bdc5557fad Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 16:12:34 -0700 Subject: [PATCH 01/17] testsuite: drop duplicate statfs test Problem: the kern/t14 statfs is duplicated in t0010-v9fs-runasuser.t. Drop the old test. --- tests/kern/Makefile.am | 4 +- tests/kern/README | 1 - tests/kern/t14 | 4 -- tests/kern/t14.exp | 5 -- tests/kern/tstatfs.c | 113 ----------------------------------------- 5 files changed, 1 insertion(+), 126 deletions(-) delete mode 100755 tests/kern/t14 delete mode 100644 tests/kern/t14.exp delete mode 100644 tests/kern/tstatfs.c diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index 83d7962e..db407435 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -1,7 +1,6 @@ check_PROGRAMS = \ kconjoin \ tsuppgrp \ - tstatfs \ trename \ tstat \ tflock \ @@ -23,7 +22,7 @@ AM_TESTS_ENVIRONMENT = \ LOG_COMPILER = ${srcdir}/runtest -TESTS = t12 t13 t14 t15 t16 t17 t18 \ +TESTS = t12 t13 t15 t16 t17 t18 \ t24 t25 t31 \ t37 t38 t39 t42 t44 t45 t46 t47 @@ -49,7 +48,6 @@ common_sources = test.h kconjoin_SOURCES = kconjoin.c $(common_sources) tsuppgrp_SOURCES = tsuppgrp.c $(common_sources) -tstatfs_SOURCES = tstatfs.c $(common_sources) trename_SOURCES = trename.c $(common_sources) tstat_SOURCES = tstat.c $(common_sources) tflock_SOURCES = tflock.c $(common_sources) diff --git a/tests/kern/README b/tests/kern/README index cadc55bd..7dec95de 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -9,7 +9,6 @@ These tests all run the same way: The tests are: t12 Create a file and check that file creation mode was honored t13 Demonstrate that rename works across directories. -t14 Demonstrate that statfs returns correct data. t15 Demonstrate that fsync does not return an error. t16 Create files and compare their stat(2) results. t17 Set all the mode bits (7777) on a file and directory on server diff --git a/tests/kern/t14 b/tests/kern/t14 deleted file mode 100755 index 39b842ed..00000000 --- a/tests/kern/t14 +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -e - -echo running statfs comparison -./tstatfs $PATH_EXPDIR $PATH_MNTDIR diff --git a/tests/kern/t14.exp b/tests/kern/t14.exp deleted file mode 100644 index 7253668e..00000000 --- a/tests/kern/t14.exp +++ /dev/null @@ -1,5 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -running statfs comparison -0 differences -kconjoin: t14 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/tstatfs.c b/tests/kern/tstatfs.c deleted file mode 100644 index 0c42ca0b..00000000 --- a/tests/kern/tstatfs.c +++ /dev/null @@ -1,113 +0,0 @@ -/************************************************************\ - * Copyright 2010 Lawrence Livermore National Security, LLC - * (c.f. AUTHORS, NOTICE.LLNS, COPYING) - * - * This file is part of the diod 9P server project. - * For details, see https://github.com/chaos/diod. - * - * SPDX-License-Identifier: GPL-2.0-or-later -\************************************************************/ - -/* tstatfs.c - compare statfs results on two dirs */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif -#include -#include -#include -#include - -#ifndef V9FS_MAGIC -#define V9FS_MAGIC 0x01021997 -#endif - -static char *field = NULL; - -int -tfield (char *s) -{ - return (!field || !strcmp (field, s)); -} - -int -main (int argc, char *argv[]) -{ - struct statfs s1, s2; - int diff = 0; - - if (argc != 3 && argc != 4) { - fprintf (stderr, "Usage: tstatfs dir1 dir2 [field]\n"); - exit (1); - } - if (argc == 4) - field = argv[3]; - - if (statfs (argv[1], &s1) < 0) { - perror (argv[1]); - exit (1); - } - if (statfs (argv[2], &s2) < 0) { - perror (argv[2]); - exit (1); - } - /* As of diod-1.0.7, the default is to return V9FS_MAGIC. - * A patch was submitted to let the server control this but - * as of linux-3.3.3-rc5 it has not gone in upstream. - * (Without the patch f_type is always V9FS_MAGIC.) - */ - if (tfield ("type") && s1.f_type != s2.f_type) { - if (s1.f_type != V9FS_MAGIC && s2.f_type != V9FS_MAGIC) { - fprintf (stderr, "f_type differs\n"); - diff++; - } - } - if (tfield ("bsize") && s1.f_bsize != s2.f_bsize ) { - fprintf (stderr, "f_bsize differs\n"); - diff++; - } - if (tfield ("blocks") && s1.f_blocks != s2.f_blocks) { - fprintf (stderr, "f_blocks differs\n"); - diff++; - } - if (tfield ("bfree") && s1.f_bfree != s2.f_bfree) { - fprintf (stderr, "f_bfree differs\n"); - diff++; - } - if (tfield ("bavail") && s1.f_bavail != s2.f_bavail) { - fprintf (stderr, "f_bavail differs\n"); - diff++; - } - if (tfield ("files") && s1.f_files != s2.f_files) { - fprintf (stderr, "f_files differs\n"); - diff++; - } - if (tfield ("ffree") && s1.f_ffree != s2.f_ffree) { - fprintf (stderr, "f_ffree differs\n"); - diff++; - } - /* I'm not sure if this is a bug in v9fs or elsewhere, but on 32 bit - * systems, f_fsid.__val[1] == -1. - */ - if (tfield ("fsid")) { - if (s1.f_fsid.__val[0] != s2.f_fsid.__val[0]) { - fprintf (stderr, "statfs f_fsid differs)\n"); - diff++; - } else if (s1.f_fsid.__val[1] != -1 && s2.f_fsid.__val[1] != -1 - && s1.f_fsid.__val[1] != s2.f_fsid.__val[1]) { - fprintf (stderr, "statfs f_fsid differs\n"); - diff++; - } - } - if (tfield ("namelen") && s1.f_namelen != s2.f_namelen) { - fprintf (stderr, "f_namelen differs\n"); - diff++; - } - fprintf (stderr, "%d differences\n", diff); - - exit (0); -} - -/* - * vi:tabstop=4 shiftwidth=4 expandtab - */ From c335d4225cf09488e01cdc8215ee94a021387144 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 16:19:42 -0700 Subject: [PATCH 02/17] testsuite: migrate pathwalk test to sharness Problem: the kern/t45 pathwalk test lives in the old test framework. Migrate to sharness. --- src/cmd/Makefile.am | 5 ++ {tests/kern => src/cmd/test}/pathwalk.c | 0 t/Makefile.am | 3 +- t/t0025-pathwalk.t | 62 +++++++++++++++++++++++++ tests/kern/Makefile.am | 6 +-- tests/kern/README | 1 - tests/kern/t45 | 8 ---- tests/kern/t45.exp | 3 -- 8 files changed, 71 insertions(+), 17 deletions(-) rename {tests/kern => src/cmd/test}/pathwalk.c (100%) create mode 100755 t/t0025-pathwalk.t delete mode 100755 tests/kern/t45 delete mode 100644 tests/kern/t45.exp diff --git a/src/cmd/Makefile.am b/src/cmd/Makefile.am index 555cc873..73670493 100644 --- a/src/cmd/Makefile.am +++ b/src/cmd/Makefile.am @@ -49,6 +49,7 @@ check_PROGRAMS = \ test_tflush \ test_tattach \ test_loadgen \ + test_pathwalk \ $(TESTS) TEST_EXTENSIONS = .t @@ -76,3 +77,7 @@ test_tattach_LDADD = \ test_loadgen_SOURCES = test/loadgen.c $(common_sources) test_loadgen_LDADD = \ $(common_ldadd) + +test_pathwalk_SOURCES = test/pathwalk.c $(common_sources) +test_pathwalk_LDADD = \ + $(common_ldadd) diff --git a/tests/kern/pathwalk.c b/src/cmd/test/pathwalk.c similarity index 100% rename from tests/kern/pathwalk.c rename to src/cmd/test/pathwalk.c diff --git a/t/Makefile.am b/t/Makefile.am index 369a9920..f411d899 100644 --- a/t/Makefile.am +++ b/t/Makefile.am @@ -25,7 +25,8 @@ TESTSCRIPTS = \ t0021-postmark.t \ t0022-scrub.t \ t0023-rsync.t \ - t0024-selfhost.t + t0024-selfhost.t \ + t0025-pathwalk.t # make check runs these TAP tests directly (both scripts and programs) TESTS = \ diff --git a/t/t0025-pathwalk.t b/t/t0025-pathwalk.t new file mode 100755 index 00000000..6d2fadf3 --- /dev/null +++ b/t/t0025-pathwalk.t @@ -0,0 +1,62 @@ +#!/bin/sh + +test_description='Run pathwalk test in diod + +Note: this test runs even with + --disable-auth --disable-config --disable-multiuser +' + +. `dirname $0`/sharness.sh + +if ! test_have_prereq SUDO; then + skip_all='passwordless sudo is required' + test_done +fi +if ! test_have_prereq V9FS_CLIENT; then + skip_all='linux 9p kernel client is required' + test_done +fi + +exportdir=$SHARNESS_TRASH_DIRECTORY/exp +test_under_diod unixsocket \ + --config-file=/dev/null \ + --runas=$(id -u) \ + --no-auth \ + --export=$exportdir + +# gnome probes for .Trash, autorun.inf, etc asynchronously on new mounts, +# causing umount to fail with EBUSY if still in progress. Therefore --lazy. +umountcmd="$SUDO umount --lazy" +mountcmd="$SUDO mount -n -t 9p" +mountopts="trans=unix,uname=$(id -un)" + +pathwalk=$SHARNESS_BUILD_DIRECTORY/src/cmd/test_pathwalk + +test_expect_success 'create export/mount directories' ' + mkdir -p exp mnt +' +test_expect_success 'wait for server socket' ' + waitsock $DIOD_SOCKET 30 +' +test_expect_success 'mount filesystem with access= mnt' ' + $mountcmd -oaname=$exportdir,$mountopts,access=$(id -u) \ + $DIOD_SOCKET mnt +' +test_expect_success 'run pathwalk create' ' + $pathwalk mnt/pw --create --files=500 --quiet +' +test_expect_success 'run pathwalk test' ' + $pathwalk mnt/pw --test --files=500 --quiet +' +test_expect_success 'run pathwalk remove' ' + $pathwalk mnt/pw --remove --files=500 --quiet +' +test_expect_success 'unmount mnt' ' + $umountcmd mnt +' + +# N.B. Server exits when conn count drops to zero. + +test_done + +# vi: set ft=sh diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index db407435..a105fec9 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -7,8 +7,7 @@ check_PROGRAMS = \ tflock2 \ tfsgid \ tcreate \ - tatomic \ - pathwalk + tatomic SUBDIRS = fstest fsx fsstress @@ -24,7 +23,7 @@ LOG_COMPILER = ${srcdir}/runtest TESTS = t12 t13 t15 t16 t17 t18 \ t24 t25 t31 \ - t37 t38 t39 t42 t44 t45 t46 t47 + t37 t38 t39 t42 t44 t46 t47 XFAIL_TESTS = @@ -54,6 +53,5 @@ tflock_SOURCES = tflock.c $(common_sources) tfsgid_SOURCES = tfsgid.c $(common_sources) tcreate_SOURCES = tcreate.c $(common_sources) tatomic_SOURCES = tatomic.c $(common_sources) -pathwalk_SOURCES = pathwalk.c $(common_sources) EXTRA_DIST = $(TESTS) $(TESTS:%=%.exp) runtest diff --git a/tests/kern/README b/tests/kern/README index 7dec95de..83c805c4 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -30,7 +30,6 @@ t38 Run fsstress. t39 Run fsstress out of 9p, against host fs. t42 Set/get user.* extended attributes t44 Test atomic create with O_CREAT|O_EXCL -t45 Pathwalk test t46 Set/get trusted.* extended attributes t47 Set/get security.* extended attributes t48 Run fsx with mmap read test enabled diff --git a/tests/kern/t45 b/tests/kern/t45 deleted file mode 100755 index 49a5c1cf..00000000 --- a/tests/kern/t45 +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -e - -FILES=500 -./pathwalk $PATH_MNTDIR/pw --create --files $FILES --quiet -./pathwalk $PATH_MNTDIR/pw --test --files $FILES --quiet -./pathwalk $PATH_MNTDIR/pw --remove --files $FILES --quiet - -exit 0 diff --git a/tests/kern/t45.exp b/tests/kern/t45.exp deleted file mode 100644 index 2cbc1ef1..00000000 --- a/tests/kern/t45.exp +++ /dev/null @@ -1,3 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -kconjoin: t45 exited with rc=0 -kconjoin: diod exited with rc=0 From c895daa45721d7de74b24f4cf34d8b5411a06fcf Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 16:21:58 -0700 Subject: [PATCH 03/17] testsuite: drop duplicate stat test Problem: the kern/t16 stat test is duplicated in t0010-v9fs-runasuser.t. Drop the old test. --- tests/kern/Makefile.am | 4 +- tests/kern/README | 1 - tests/kern/t16 | 19 -------- tests/kern/t16.exp | 18 -------- tests/kern/tstat.c | 101 ----------------------------------------- 5 files changed, 1 insertion(+), 142 deletions(-) delete mode 100755 tests/kern/t16 delete mode 100644 tests/kern/t16.exp delete mode 100644 tests/kern/tstat.c diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index a105fec9..4fe4a10e 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -2,7 +2,6 @@ check_PROGRAMS = \ kconjoin \ tsuppgrp \ trename \ - tstat \ tflock \ tflock2 \ tfsgid \ @@ -21,7 +20,7 @@ AM_TESTS_ENVIRONMENT = \ LOG_COMPILER = ${srcdir}/runtest -TESTS = t12 t13 t15 t16 t17 t18 \ +TESTS = t12 t13 t15 t17 t18 \ t24 t25 t31 \ t37 t38 t39 t42 t44 t46 t47 @@ -48,7 +47,6 @@ common_sources = test.h kconjoin_SOURCES = kconjoin.c $(common_sources) tsuppgrp_SOURCES = tsuppgrp.c $(common_sources) trename_SOURCES = trename.c $(common_sources) -tstat_SOURCES = tstat.c $(common_sources) tflock_SOURCES = tflock.c $(common_sources) tfsgid_SOURCES = tfsgid.c $(common_sources) tcreate_SOURCES = tcreate.c $(common_sources) diff --git a/tests/kern/README b/tests/kern/README index 83c805c4..a2465499 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -10,7 +10,6 @@ The tests are: t12 Create a file and check that file creation mode was honored t13 Demonstrate that rename works across directories. t15 Demonstrate that fsync does not return an error. -t16 Create files and compare their stat(2) results. t17 Set all the mode bits (7777) on a file and directory on server and verify that they are reflected in client stat, then do the reverse. t18 Simple test to check that BSD advisory file locks are properly diff --git a/tests/kern/t16 b/tests/kern/t16 deleted file mode 100755 index 227d7cb9..00000000 --- a/tests/kern/t16 +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -e - -rc=0 - -echo "creating objects" -mkdir $PATH_MNTDIR/b -dd if=/dev/zero of=$PATH_MNTDIR/b/a count=1024 status=noxfer -ln $PATH_EXPDIR/b/a $PATH_EXPDIR/b/c - -echo "comparing stat(2) results for file" -./tstat $PATH_MNTDIR/b/a $PATH_EXPDIR/b/a || rc=1 - -echo "comparing stat(2) results for hard link" -./tstat $PATH_MNTDIR/b/c $PATH_EXPDIR/b/c || rc=1 - -echo "comparing stat(2) results for directory" -./tstat $PATH_MNTDIR/b $PATH_EXPDIR/b || rc=1 - -exit $rc diff --git a/tests/kern/t16.exp b/tests/kern/t16.exp deleted file mode 100644 index 1b1399d9..00000000 --- a/tests/kern/t16.exp +++ /dev/null @@ -1,18 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -creating objects -1024+0 records in -1024+0 records out -comparing stat(2) results for file -st_dev differs -st_ino differs -2 differences -comparing stat(2) results for hard link -st_dev differs -st_ino differs -2 differences -comparing stat(2) results for directory -st_dev differs -st_ino differs -2 differences -kconjoin: t16 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/tstat.c b/tests/kern/tstat.c deleted file mode 100644 index 58c7bd86..00000000 --- a/tests/kern/tstat.c +++ /dev/null @@ -1,101 +0,0 @@ -/************************************************************\ - * Copyright 2010 Lawrence Livermore National Security, LLC - * (c.f. AUTHORS, NOTICE.LLNS, COPYING) - * - * This file is part of the diod 9P server project. - * For details, see https://github.com/chaos/diod. - * - * SPDX-License-Identifier: GPL-2.0-or-later -\************************************************************/ - -/* tstat.c - compare stat results on two files */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif -#include -#include -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - struct stat s1, s2; - int diff = 0; - - if (argc != 3) { - fprintf (stderr, "Usage: tstat file1 file2\n"); - exit (1); - } - - if (stat (argv[1], &s1) < 0) { - perror (argv[1]); - exit (1); - } - if (stat (argv[2], &s2) < 0) { - perror (argv[2]); - exit (1); - } - - if (s1.st_dev != s2.st_dev) { - fprintf (stderr, "st_dev differs\n"); /* expected failure */ - diff++; - } - if (s1.st_ino != s2.st_ino) { - fprintf (stderr, "st_ino differs\n"); /* expected failure */ - diff++; - } - if (s1.st_mode != s2.st_mode) { - fprintf (stderr, "st_mode differs\n"); - diff++; - } - if (s1.st_nlink != s2.st_nlink) { - fprintf (stderr, "st_nlink differs\n"); - diff++; - } - if (s1.st_uid != s2.st_uid) { - fprintf (stderr, "st_uid differs\n"); - diff++; - } - if (s1.st_gid != s2.st_gid) { - fprintf (stderr, "st_gid differs\n"); - diff++; - } - if (s1.st_rdev != s2.st_rdev) { - fprintf (stderr, "st_rdev differs\n"); - diff++; - } - if (s1.st_size != s2.st_size) { - fprintf (stderr, "st_size differs\n"); - diff++; - } - if (s1.st_blksize != s2.st_blksize) { - fprintf (stderr, "st_blksize differs\n"); - diff++; - } - if (s1.st_blocks != s2.st_blocks) { - fprintf (stderr, "st_blocks differs\n"); - diff++; - } - if (s1.st_atime != s2.st_atime) { - fprintf (stderr, "st_atime differs\n"); - diff++; - } - if (s1.st_ctime != s2.st_ctime) { - fprintf (stderr, "st_ctime differs\n"); - diff++; - } - if (s1.st_mtime != s2.st_mtime) { - fprintf (stderr, "st_mtime differs\n"); - diff++; - } - fprintf (stderr, "%d differences\n", diff); - - exit (0); -} - -/* - * vi:tabstop=4 shiftwidth=4 expandtab - */ From e5111abc3780834f02c0ec14167b30ff2b411971 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 16:23:21 -0700 Subject: [PATCH 04/17] testsuite: drop unused suppl groups test program Problem: kern/tsuppgrp.c has no users. Drop it. --- tests/kern/Makefile.am | 2 - tests/kern/tsuppgrp.c | 135 ----------------------------------------- 2 files changed, 137 deletions(-) delete mode 100644 tests/kern/tsuppgrp.c diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index 4fe4a10e..e3f81c41 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -1,6 +1,5 @@ check_PROGRAMS = \ kconjoin \ - tsuppgrp \ trename \ tflock \ tflock2 \ @@ -45,7 +44,6 @@ LDADD = $(top_builddir)/src/libdiod/libdiod.a \ common_sources = test.h kconjoin_SOURCES = kconjoin.c $(common_sources) -tsuppgrp_SOURCES = tsuppgrp.c $(common_sources) trename_SOURCES = trename.c $(common_sources) tflock_SOURCES = tflock.c $(common_sources) tfsgid_SOURCES = tfsgid.c $(common_sources) diff --git a/tests/kern/tsuppgrp.c b/tests/kern/tsuppgrp.c deleted file mode 100644 index 6f01afc1..00000000 --- a/tests/kern/tsuppgrp.c +++ /dev/null @@ -1,135 +0,0 @@ -/************************************************************\ - * Copyright 2010 Lawrence Livermore National Security, LLC - * (c.f. AUTHORS, NOTICE.LLNS, COPYING) - * - * This file is part of the diod 9P server project. - * For details, see https://github.com/chaos/diod. - * - * SPDX-License-Identifier: GPL-2.0-or-later -\************************************************************/ - -/* tsuppgrp.c - check that pthreads can independently setgroups */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "src/libdiod/diod_log.h" - -#include "test.h" - -#define TEST_GID 100 -#define TEST_GID2 101 - -typedef enum { S0, S1, S2, S3, S4, S5 } state_t; - -static state_t state = S0; -static pthread_mutex_t state_lock = PTHREAD_MUTEX_INITIALIZER; -static pthread_cond_t state_cond = PTHREAD_COND_INITIALIZER; - -static void -show_groups (char *s) -{ - gid_t g[32]; - int n, i; - char buf[256]; - - snprintf (buf, sizeof(buf), "getgroups "); - n = _getgroups (1, g); - for (i = 0; i < n; i++) - snprintf (buf+strlen(buf), sizeof(buf)-strlen(buf), "%d ", g[i]); - msg ("%s: %s", s, buf); -} - -static void -change_state (state_t s) -{ - _lock (&state_lock); - state = s; - _condsig (&state_cond); - _unlock (&state_lock); -} - -static void -wait_state (state_t s) -{ - _lock (&state_lock); - while ((state != s)) - _condwait (&state_cond, &state_lock); - _unlock (&state_lock); -} - -static void *proc1 (void *a) -{ - gid_t g[] = { TEST_GID2 }; - - show_groups ("task1"); - change_state (S1); - - wait_state (S2); - show_groups ("task1"); - - msg ("task1: setgroups %d", TEST_GID2); - _setgroups (1, g); - show_groups ("task1"); - change_state (S3); - - wait_state (S4); - return NULL; -} - -static void *proc2 (void *a) -{ - gid_t g[] = { TEST_GID }; - - wait_state (S1); - show_groups ("task2"); - - msg ("task2: setgroups %d", TEST_GID); - _setgroups (1, g); - show_groups ("task2"); - change_state (S2); - - wait_state (S3); - show_groups ("task2"); - change_state (S4); - return NULL; -} - -int main(int argc, char *argv[]) -{ - pthread_t t1, t2; - - diod_log_init (argv[0]); - - assert (geteuid () == 0); - - msg ("task0: setgroups (NULL)"); - _setgroups (0, NULL); - show_groups ("task0"); - - _create (&t1, proc1, NULL); - _create (&t2, proc2, NULL); - - _join (t2, NULL); - _join (t1, NULL); - - show_groups ("task0"); - - exit (0); -} - -/* - * vi:tabstop=4 shiftwidth=4 expandtab - */ From e3acbbb3bb82de5b23978d6413e372525916974f Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 16:50:25 -0700 Subject: [PATCH 05/17] testsuite: migrate sgid dir test to sharness Problem: the kern/t25 setgroupid directory test lives in the old test framework. Create a new test in t0012-v9fs-multiuser.t. Drop the old one. --- t/t0012-v9fs-multiuser.t | 9 ++++++ tests/kern/Makefile.am | 4 +-- tests/kern/README | 2 -- tests/kern/t25 | 15 ---------- tests/kern/t25.exp | 12 -------- tests/kern/tfsgid.c | 64 ---------------------------------------- 6 files changed, 10 insertions(+), 96 deletions(-) delete mode 100755 tests/kern/t25 delete mode 100644 tests/kern/t25.exp delete mode 100644 tests/kern/tfsgid.c diff --git a/t/t0012-v9fs-multiuser.t b/t/t0012-v9fs-multiuser.t index 9e599ed9..0e97da87 100755 --- a/t/t0012-v9fs-multiuser.t +++ b/t/t0012-v9fs-multiuser.t @@ -61,6 +61,15 @@ test_expect_success STAT 'chgrp the file to gid 42' ' $SUDO chgrp 42 mnt/a && test "$($PATH_STAT -c %u:%g mnt/a)" = "0:42" ' +test_expect_success 'create a directory with gid 44 and setgid bit' ' + mkdir mnt/dir && + $SUDO chgrp 44 mnt/dir && + $SUDO chmod g+s mnt/dir +' +test_expect_success STAT 'a file in that directory gets gid 44' ' + touch mnt/dir/a && + test "$($PATH_STAT -c %g mnt/dir/a)" = 44 +' test_expect_success DIODMOUNT 'mount helper fails with -ouname but no -oaccess' ' test_must_fail $SUDO $PATH_MOUNT_DIOD -ouname=fred foo mnt \ 2>mounthelp.out && diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index e3f81c41..63fd106b 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -3,7 +3,6 @@ check_PROGRAMS = \ trename \ tflock \ tflock2 \ - tfsgid \ tcreate \ tatomic @@ -20,7 +19,7 @@ AM_TESTS_ENVIRONMENT = \ LOG_COMPILER = ${srcdir}/runtest TESTS = t12 t13 t15 t17 t18 \ - t24 t25 t31 \ + t24 t31 \ t37 t38 t39 t42 t44 t46 t47 XFAIL_TESTS = @@ -46,7 +45,6 @@ common_sources = test.h kconjoin_SOURCES = kconjoin.c $(common_sources) trename_SOURCES = trename.c $(common_sources) tflock_SOURCES = tflock.c $(common_sources) -tfsgid_SOURCES = tfsgid.c $(common_sources) tcreate_SOURCES = tcreate.c $(common_sources) tatomic_SOURCES = tatomic.c $(common_sources) diff --git a/tests/kern/README b/tests/kern/README index a2465499..d8cf6a45 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -20,8 +20,6 @@ t23 Simple test to check that POSIX advisory record locks are handled as advertised within one process. t24 Simple test to check that BSD advisory file locks are handled as advertised within one process. -t25 Verify that files are created with the users effective gid. - Verify that files created in a setgid directory have the parent gid. t31 Run fstest with server --no-userdb option (takes a couple minutes) t34 Run an svnadmin create, which uncovered a bug in fsync t37 Run fsx. diff --git a/tests/kern/t25 b/tests/kern/t25 deleted file mode 100755 index 5f4298b8..00000000 --- a/tests/kern/t25 +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -e - -echo creating setgid directory -mkdir $PATH_EXPDIR/dir -chgrp 42 $PATH_EXPDIR/dir -chmod g+s $PATH_EXPDIR/dir -echo testing host file system create with effective gid -./tfsgid 42 $PATH_EXPDIR/a || : -echo testing host file system create with setgid parent -./tfsgid 44 $PATH_EXPDIR/dir/a - -echo testing diod file system create with effective gid -./tfsgid 42 $PATH_MNTDIR/a || : -echo testing diod file system create with setgid parent -./tfsgid 44 $PATH_EXPDIR/dir/a diff --git a/tests/kern/t25.exp b/tests/kern/t25.exp deleted file mode 100644 index a6990f5f..00000000 --- a/tests/kern/t25.exp +++ /dev/null @@ -1,12 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -creating setgid directory -testing host file system create with effective gid -tfsgid: file gid is same as egid and different than gid -testing host file system create with setgid parent -tfsgid: file gid is different than egid and different than gid -testing diod file system create with effective gid -tfsgid: file gid is same as egid and different than gid -testing diod file system create with setgid parent -tfsgid: file gid is different than egid and different than gid -kconjoin: t25 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/tfsgid.c b/tests/kern/tfsgid.c deleted file mode 100644 index 90652fc7..00000000 --- a/tests/kern/tfsgid.c +++ /dev/null @@ -1,64 +0,0 @@ -/************************************************************\ - * Copyright 2010 Lawrence Livermore National Security, LLC - * (c.f. AUTHORS, NOTICE.LLNS, COPYING) - * - * This file is part of the diod 9P server project. - * For details, see https://github.com/chaos/diod. - * - * SPDX-License-Identifier: GPL-2.0-or-later -\************************************************************/ - -/* tfsgid.c - ensure files are created with proper gid */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -#include "src/libdiod/diod_log.h" - -int -main (int argc, char *argv[]) -{ - int fd; - gid_t egid, gid; - struct stat sb; - - diod_log_init (argv[0]); - - if (argc != 3) { - msg ("Usage: tfsgid gid path"); - exit (1); - } - egid = strtoul (argv[1], NULL, 10); - gid = getgid (); - if (setegid (egid) < 0) - err_exit ("setegid"); - if (access (argv[2], F_OK) == 0) - msg_exit ("file exists"); - if ((fd = open (argv[2], O_CREAT, 0644)) < 0) - err_exit ("open"); - (void)close (fd); - if (stat (argv[2], &sb) < 0) - err_exit ("stat"); -#define SAME "same as" -#define DIFF "different than" - msg ("file gid is %s egid and %s gid", - sb.st_gid == egid ? SAME : DIFF, - sb.st_gid == gid ? SAME : DIFF); - (void)unlink (argv[2]); - - exit(0); -} - -/* - * vi:tabstop=4 shiftwidth=4 expandtab - */ - From de0f09fad2ae183933a4282f0450940cfb5e3fbd Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 16:58:03 -0700 Subject: [PATCH 06/17] testsuite: drop duplicate rename test Problem: the kern/t13 rename test is duplicated in t0010-v9fs-runasuser.t. Drop the old test. --- tests/kern/Makefile.am | 4 +--- tests/kern/README | 1 - tests/kern/t13 | 9 --------- tests/kern/t13.exp | 5 ----- tests/kern/trename.c | 31 ------------------------------- 5 files changed, 1 insertion(+), 49 deletions(-) delete mode 100755 tests/kern/t13 delete mode 100644 tests/kern/t13.exp delete mode 100644 tests/kern/trename.c diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index 63fd106b..6ba4dfde 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -1,6 +1,5 @@ check_PROGRAMS = \ kconjoin \ - trename \ tflock \ tflock2 \ tcreate \ @@ -18,7 +17,7 @@ AM_TESTS_ENVIRONMENT = \ LOG_COMPILER = ${srcdir}/runtest -TESTS = t12 t13 t15 t17 t18 \ +TESTS = t12 t15 t17 t18 \ t24 t31 \ t37 t38 t39 t42 t44 t46 t47 @@ -43,7 +42,6 @@ LDADD = $(top_builddir)/src/libdiod/libdiod.a \ common_sources = test.h kconjoin_SOURCES = kconjoin.c $(common_sources) -trename_SOURCES = trename.c $(common_sources) tflock_SOURCES = tflock.c $(common_sources) tcreate_SOURCES = tcreate.c $(common_sources) tatomic_SOURCES = tatomic.c $(common_sources) diff --git a/tests/kern/README b/tests/kern/README index d8cf6a45..4403d94f 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -8,7 +8,6 @@ These tests all run the same way: The tests are: t12 Create a file and check that file creation mode was honored -t13 Demonstrate that rename works across directories. t15 Demonstrate that fsync does not return an error. t17 Set all the mode bits (7777) on a file and directory on server and verify that they are reflected in client stat, then do the reverse. diff --git a/tests/kern/t13 b/tests/kern/t13 deleted file mode 100755 index 2b5cea98..00000000 --- a/tests/kern/t13 +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -e - -echo trying rename -touch $PATH_MNTDIR/a -./trename $PATH_MNTDIR/a $PATH_MNTDIR/b - -echo trying rename to new directory -mkdir -p $PATH_MNTDIR/dir -./trename $PATH_MNTDIR/b $PATH_MNTDIR/dir/c diff --git a/tests/kern/t13.exp b/tests/kern/t13.exp deleted file mode 100644 index f82dd2f4..00000000 --- a/tests/kern/t13.exp +++ /dev/null @@ -1,5 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -trying rename -trying rename to new directory -kconjoin: t13 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/trename.c b/tests/kern/trename.c deleted file mode 100644 index 54632f58..00000000 --- a/tests/kern/trename.c +++ /dev/null @@ -1,31 +0,0 @@ -/************************************************************\ - * Copyright 2010 Lawrence Livermore National Security, LLC - * (c.f. AUTHORS, NOTICE.LLNS, COPYING) - * - * This file is part of the diod 9P server project. - * For details, see https://github.com/chaos/diod. - * - * SPDX-License-Identifier: GPL-2.0-or-later -\************************************************************/ - -/* trename - rename a file */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif -#include -#include - -int -main (int argc, char *argv[]) -{ - if (rename (argv[1], argv[2]) < 0) { - perror ("rename"); - exit (1); - } - exit (0); -} - -/* - * vi:tabstop=4 shiftwidth=4 expandtab - */ From 2e004340e0693a8e8ce59691430e8ea5b36a028d Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 17:01:37 -0700 Subject: [PATCH 07/17] testsuite: migrate flock tests to sharness Problem: the kern/t18 and t24 flock tests live in the old test framework. Create new tests in t0010-v9fs-runasuser.t. Drop the old ones. --- src/cmd/Makefile.am | 10 ++ tests/kern/tflock.c => src/cmd/test/flock.c | 101 ++++++++++++++- .../tflock2.c => src/cmd/test/flock_single.c | 0 t/t0010-v9fs-runasuser.t | 9 ++ tests/kern/Makefile.am | 20 +-- tests/kern/README | 4 - tests/kern/t18 | 7 -- tests/kern/t18.exp | 55 --------- tests/kern/t24 | 7 -- tests/kern/t24.exp | 15 --- tests/kern/test.h | 115 ------------------ 11 files changed, 131 insertions(+), 212 deletions(-) rename tests/kern/tflock.c => src/cmd/test/flock.c (72%) rename tests/kern/tflock2.c => src/cmd/test/flock_single.c (100%) delete mode 100755 tests/kern/t18 delete mode 100644 tests/kern/t18.exp delete mode 100755 tests/kern/t24 delete mode 100644 tests/kern/t24.exp delete mode 100644 tests/kern/test.h diff --git a/src/cmd/Makefile.am b/src/cmd/Makefile.am index 73670493..b9739726 100644 --- a/src/cmd/Makefile.am +++ b/src/cmd/Makefile.am @@ -50,6 +50,8 @@ check_PROGRAMS = \ test_tattach \ test_loadgen \ test_pathwalk \ + test_flock \ + test_flock_single \ $(TESTS) TEST_EXTENSIONS = .t @@ -81,3 +83,11 @@ test_loadgen_LDADD = \ test_pathwalk_SOURCES = test/pathwalk.c $(common_sources) test_pathwalk_LDADD = \ $(common_ldadd) + +test_flock_SOURCES = test/flock.c $(common_sources) +test_flock_LDADD = \ + $(common_ldadd) + +test_flock_single_SOURCES = test/flock_single.c $(common_sources) +test_flock_single_LDADD = \ + $(common_ldadd) diff --git a/tests/kern/tflock.c b/src/cmd/test/flock.c similarity index 72% rename from tests/kern/tflock.c rename to src/cmd/test/flock.c index f6753199..942a7e78 100644 --- a/tests/kern/tflock.c +++ b/src/cmd/test/flock.c @@ -33,7 +33,106 @@ #include "src/libdiod/diod_log.h" -#include "test.h" +static inline void +_lock (pthread_mutex_t *l) +{ + int n = pthread_mutex_lock (l); + if (n) + errn_exit (n, "_lock"); +} +static inline void +_unlock (pthread_mutex_t *l) +{ + int n = pthread_mutex_unlock (l); + if (n) + errn_exit (n, "_unlock"); +} +static inline void +_condsig (pthread_cond_t *c) +{ + int n = pthread_cond_signal (c); + if (n) + errn_exit (n, "_condsig"); +} +static inline void +_condwait (pthread_cond_t *c, pthread_mutex_t *l) +{ + int n = pthread_cond_wait (c, l); + if (n) + errn_exit (n, "_condwait"); +} +static inline void +_create (pthread_t *t, void *(f)(void *), void *a) +{ + int n = pthread_create (t, NULL, f, a); + if (n) + errn_exit (n,"_create"); +} +static inline void +_join (pthread_t t, void **a) +{ + int n = pthread_join (t, a); + if (n) + errn_exit (n,"_join"); +} +static inline int +_mkstemp (char *p) +{ + int fd = mkstemp (p); + if (fd < 0) + err_exit ("_mkstemp"); + return fd; +} +static inline void +_fstat (int fd, struct stat *sb) +{ + if (fstat (fd, sb) < 0) + err_exit ("_fstat"); +} +static inline void +_unlink (char *p) +{ + if (unlink (p) < 0) + err_exit ("_unlink"); +} +static inline void +_fchown (int fd, uid_t u, gid_t g) +{ + if (fchown (fd, u, g) < 0) + err_exit ("_fchown"); +} +static inline void +_fchmod (int fd, mode_t m) +{ + if (fchmod (fd, m) < 0) + err_exit ("_fchmod"); +} +static inline void +_setgroups (size_t s, gid_t *g) +{ + if (setgroups (s, g) < 0) + err_exit ("_setgroups"); +} +static inline int +_getgroups (size_t s, gid_t *g) +{ + int n = getgroups (s, g); + if (n < 0) + err_exit ("_getgroups"); + return n; +} +static inline void +_setreuid (uid_t r, uid_t u) +{ + if (setreuid (r, u) < 0) + err_exit ("_setreuid"); +} +static inline void +_setregid (gid_t r, gid_t g) +{ + if (setregid (r, g) < 0) + err_exit ("_setregid"); +} int main (int argc, char *argv[]) diff --git a/tests/kern/tflock2.c b/src/cmd/test/flock_single.c similarity index 100% rename from tests/kern/tflock2.c rename to src/cmd/test/flock_single.c diff --git a/t/t0010-v9fs-runasuser.t b/t/t0010-v9fs-runasuser.t index 39c9cc8f..9a4e386a 100755 --- a/t/t0010-v9fs-runasuser.t +++ b/t/t0010-v9fs-runasuser.t @@ -34,6 +34,9 @@ umountcmd="$SUDO umount --lazy" mountcmd="$SUDO mount -n -t 9p" mountopts="trans=unix,uname=$(id -un)" +test_flock=$SHARNESS_BUILD_DIRECTORY/src/cmd/test_flock +test_flock_single=$SHARNESS_BUILD_DIRECTORY/src/cmd/test_flock_single + # usage: create_file name [block_count] create_file() { local name=$1 @@ -156,6 +159,12 @@ test_expect_success FLOCK 'flock-write a file' ' test_expect_success FLOCK 'flock-read a file' ' $PATH_FLOCK -s mnt/dir/d true ' +test_expect_success 'run flock concurrency test' ' + $test_flock mnt/dir/d +' +test_expect_success 'run flock single-process test' ' + $test_flock_single mnt/dir/d +' test_expect_success 'chown a file to current owner' ' chown $(id -u) mnt/dir/d ' diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index 6ba4dfde..6ede5fba 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -1,7 +1,5 @@ check_PROGRAMS = \ kconjoin \ - tflock \ - tflock2 \ tcreate \ tatomic @@ -17,9 +15,18 @@ AM_TESTS_ENVIRONMENT = \ LOG_COMPILER = ${srcdir}/runtest -TESTS = t12 t15 t17 t18 \ - t24 t31 \ - t37 t38 t39 t42 t44 t46 t47 +TESTS = \ + t12 \ + t15 \ + t17 \ + t31 \ + t37 \ + t38 \ + t39 \ + t42 \ + t44 \ + t46 \ + t47 XFAIL_TESTS = @@ -39,10 +46,7 @@ LDADD = $(top_builddir)/src/libdiod/libdiod.a \ $(top_builddir)/src/liblsd/liblsd.a \ $(LIBPTHREAD) $(LUA_LIB) $(MUNGE_LIBS) $(CAP_LIBS) $(LIBTCMALLOC) -common_sources = test.h - kconjoin_SOURCES = kconjoin.c $(common_sources) -tflock_SOURCES = tflock.c $(common_sources) tcreate_SOURCES = tcreate.c $(common_sources) tatomic_SOURCES = tatomic.c $(common_sources) diff --git a/tests/kern/README b/tests/kern/README index 4403d94f..e785b997 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -11,14 +11,10 @@ t12 Create a file and check that file creation mode was honored t15 Demonstrate that fsync does not return an error. t17 Set all the mode bits (7777) on a file and directory on server and verify that they are reflected in client stat, then do the reverse. -t18 Simple test to check that BSD advisory file locks are properly - arbitrated between two processes. t19 Simple test to check that POSIX advisory record locks are properly arbitrated between two processes. t23 Simple test to check that POSIX advisory record locks are handled as advertised within one process. -t24 Simple test to check that BSD advisory file locks are handled - as advertised within one process. t31 Run fstest with server --no-userdb option (takes a couple minutes) t34 Run an svnadmin create, which uncovered a bug in fsync t37 Run fsx. diff --git a/tests/kern/t18 b/tests/kern/t18 deleted file mode 100755 index 363b3dc1..00000000 --- a/tests/kern/t18 +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -e - -dd if=/dev/zero of=$PATH_EXPDIR/a count=1024 status=noxfer -echo testing host file system -./tflock $PATH_EXPDIR/a || : -echo testing diod file system -./tflock $PATH_MNTDIR/a || : diff --git a/tests/kern/t18.exp b/tests/kern/t18.exp deleted file mode 100644 index b11cdb25..00000000 --- a/tests/kern/t18.exp +++ /dev/null @@ -1,55 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -1024+0 records in -1024+0 records out -testing host file system -tflock: 1. Conflicting write locks cannot be held by two processes -tflock: fd: open -tflock: fd: write-locked -tflock: child forked -tflock: fd2: open (child) -tflock: fd2: write-lock failed: Resource temporarily unavailable -tflock: child exited normally -tflock: fd: closed -tflock: 2. Conflicting read and write locks cannot be held by two processes -tflock: fd: open -tflock: fd: write-locked -tflock: child forked -tflock: fd2: open (child) -tflock: fd2: read-lock failed: Resource temporarily unavailable -tflock: child exited normally -tflock: fd: closed -tflock: 3. Conflicting read locks CAN be held by two processes -tflock: fd: open -tflock: fd: read-locked -tflock: child forked -tflock: fd2: open (child) -tflock: fd2: read-locked -tflock: child exited normally -tflock: fd: closed -testing diod file system -tflock: 1. Conflicting write locks cannot be held by two processes -tflock: fd: open -tflock: fd: write-locked -tflock: child forked -tflock: fd2: open (child) -tflock: fd2: write-lock failed: Resource temporarily unavailable -tflock: child exited normally -tflock: fd: closed -tflock: 2. Conflicting read and write locks cannot be held by two processes -tflock: fd: open -tflock: fd: write-locked -tflock: child forked -tflock: fd2: open (child) -tflock: fd2: read-lock failed: Resource temporarily unavailable -tflock: child exited normally -tflock: fd: closed -tflock: 3. Conflicting read locks CAN be held by two processes -tflock: fd: open -tflock: fd: read-locked -tflock: child forked -tflock: fd2: open (child) -tflock: fd2: read-locked -tflock: child exited normally -tflock: fd: closed -kconjoin: t18 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/t24 b/tests/kern/t24 deleted file mode 100755 index 8c6eaad0..00000000 --- a/tests/kern/t24 +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -e - -dd if=/dev/zero of=$PATH_EXPDIR/a count=1024 status=noxfer -echo testing host file system -./tflock2 $PATH_EXPDIR/a || : -echo testing diod file system -./tflock2 $PATH_MNTDIR/a || : diff --git a/tests/kern/t24.exp b/tests/kern/t24.exp deleted file mode 100644 index 81fbe6c8..00000000 --- a/tests/kern/t24.exp +++ /dev/null @@ -1,15 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -1024+0 records in -1024+0 records out -testing host file system -fd: open -fd: write-locked -fd2: open -second flock failed as it should - PASS: Resource temporarily unavailable -testing diod file system -fd: open -fd: write-locked -fd2: open -second flock failed as it should - PASS: Resource temporarily unavailable -kconjoin: t24 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/test.h b/tests/kern/test.h deleted file mode 100644 index 13db6177..00000000 --- a/tests/kern/test.h +++ /dev/null @@ -1,115 +0,0 @@ -/************************************************************\ - * Copyright 2010 Lawrence Livermore National Security, LLC - * (c.f. AUTHORS, NOTICE.LLNS, COPYING) - * - * This file is part of the diod 9P server project. - * For details, see https://github.com/chaos/diod. - * - * SPDX-License-Identifier: GPL-2.0-or-later -\************************************************************/ - -static inline void -_lock (pthread_mutex_t *l) -{ - int n = pthread_mutex_lock (l); - if (n) - errn_exit (n, "_lock"); -} -static inline void -_unlock (pthread_mutex_t *l) -{ - int n = pthread_mutex_unlock (l); - if (n) - errn_exit (n, "_unlock"); -} -static inline void -_condsig (pthread_cond_t *c) -{ - int n = pthread_cond_signal (c); - if (n) - errn_exit (n, "_condsig"); -} -static inline void -_condwait (pthread_cond_t *c, pthread_mutex_t *l) -{ - int n = pthread_cond_wait (c, l); - if (n) - errn_exit (n, "_condwait"); -} -static inline void -_create (pthread_t *t, void *(f)(void *), void *a) -{ - int n = pthread_create (t, NULL, f, a); - if (n) - errn_exit (n,"_create"); -} -static inline void -_join (pthread_t t, void **a) -{ - int n = pthread_join (t, a); - if (n) - errn_exit (n,"_join"); -} -static inline int -_mkstemp (char *p) -{ - int fd = mkstemp (p); - if (fd < 0) - err_exit ("_mkstemp"); - return fd; -} -static inline void -_fstat (int fd, struct stat *sb) -{ - if (fstat (fd, sb) < 0) - err_exit ("_fstat"); -} -static inline void -_unlink (char *p) -{ - if (unlink (p) < 0) - err_exit ("_unlink"); -} -static inline void -_fchown (int fd, uid_t u, gid_t g) -{ - if (fchown (fd, u, g) < 0) - err_exit ("_fchown"); -} -static inline void -_fchmod (int fd, mode_t m) -{ - if (fchmod (fd, m) < 0) - err_exit ("_fchmod"); -} -static inline void -_setgroups (size_t s, gid_t *g) -{ - if (setgroups (s, g) < 0) - err_exit ("_setgroups"); -} -static inline int -_getgroups (size_t s, gid_t *g) -{ - int n = getgroups (s, g); - if (n < 0) - err_exit ("_getgroups"); - return n; -} -static inline void -_setreuid (uid_t r, uid_t u) -{ - if (setreuid (r, u) < 0) - err_exit ("_setreuid"); -} -static inline void -_setregid (gid_t r, gid_t g) -{ - if (setregid (r, g) < 0) - err_exit ("_setregid"); -} - -/* - * vi:tabstop=4 shiftwidth=4 expandtab - */ - From 7514217a2cf91fe75e29ef79952444390d4c3e07 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 18:26:41 -0700 Subject: [PATCH 08/17] testsuite: migrate xattr tests to sharness Problem: the kern/t42, t46, and t47 extended attribute tests live in the old test framework. Create new tests in t0012-v9fs-multiuser.t. Drop the old ones. --- t/t0012-v9fs-multiuser.t | 74 ++++++++++++++++++++++++++++++++++++++++ tests/kern/Makefile.am | 5 +-- tests/kern/README | 3 -- tests/kern/t42 | 18 ---------- tests/kern/t42.exp | 8 ----- tests/kern/t46 | 20 ----------- tests/kern/t46.exp | 8 ----- tests/kern/t47 | 20 ----------- tests/kern/t47.exp | 8 ----- 9 files changed, 75 insertions(+), 89 deletions(-) delete mode 100755 tests/kern/t42 delete mode 100644 tests/kern/t42.exp delete mode 100755 tests/kern/t46 delete mode 100644 tests/kern/t46.exp delete mode 100755 tests/kern/t47 delete mode 100644 tests/kern/t47.exp diff --git a/t/t0012-v9fs-multiuser.t b/t/t0012-v9fs-multiuser.t index 0e97da87..6503af73 100755 --- a/t/t0012-v9fs-multiuser.t +++ b/t/t0012-v9fs-multiuser.t @@ -28,6 +28,14 @@ test_under_diod unixsocketroot \ --debug=0x1 \ --export=$exportdir +if PATH_GETFATTR=$(which getfattr) && PATH_SETFATTR=$(which setfattr); then + touch probe.file + $PATH_GETFATTR -n user.badname probe.file 2>probe.err + if ! grep -q "Operation not supported" probe.err; then + test_set_prereq XATTR + fi +fi + # gnome probes for .Trash, autorun.inf, etc asynchronously on new mounts, # causing umount to fail with EBUSY if still in progress. Therefore --lazy. umountcmd="$SUDO umount --lazy" @@ -70,6 +78,72 @@ test_expect_success STAT 'a file in that directory gets gid 44' ' touch mnt/dir/a && test "$($PATH_STAT -c %g mnt/dir/a)" = 44 ' +test_expect_success XATTR 'set trusted extended attributes' ' + touch mnt/file.xattr && + $SUDO $PATH_SETFATTR -n trusted.foo -v fooval mnt/file.xattr && + $SUDO $PATH_SETFATTR -n trusted.bar -v barval mnt/file.xattr && + $SUDO $PATH_SETFATTR -n trusted.baz -v bazval mnt/file.xattr && + cat >trusted.exp <<-EOT && + # file: mnt/file.xattr + trusted.bar="barval" + trusted.baz="bazval" + trusted.foo="fooval" + + EOT + $SUDO $PATH_GETFATTR -m- -d mnt/file.xattr >trusted.out && + test_cmp trusted.exp trusted.out +' +test_expect_success XATTR 'clear trusted extended attributes' ' + $SUDO $PATH_SETFATTR -x trusted.foo mnt/file.xattr && + $SUDO $PATH_SETFATTR -x trusted.bar mnt/file.xattr && + $SUDO $PATH_SETFATTR -x trusted.baz mnt/file.xattr && + $SUDO $PATH_GETFATTR -m- -d mnt/file.xattr >trustedx.out && + test_must_fail test $(wc -l security.exp <<-EOT && + # file: mnt/file2.xattr + security.bar="barval" + security.baz="bazval" + security.foo="fooval" + + EOT + $SUDO $PATH_GETFATTR -m- -d mnt/file2.xattr >security.out && + test_cmp security.exp security.out +' +test_expect_success XATTR 'clear security extended attributes' ' + $SUDO $PATH_SETFATTR -x security.foo mnt/file2.xattr && + $SUDO $PATH_SETFATTR -x security.bar mnt/file2.xattr && + $SUDO $PATH_SETFATTR -x security.baz mnt/file2.xattr && + $SUDO $PATH_GETFATTR -m- -d mnt/file2.xattr >securityx.out && + test_must_fail test $(wc -l user.exp <<-EOT && + # file: mnt/file3.xattr + user.bar="barval" + user.baz="bazval" + user.foo="fooval" + + EOT + $PATH_GETFATTR -m- -d mnt/file3.xattr >user.out && + test_cmp user.exp user.out +' +test_expect_success XATTR 'clear user extended attributes' ' + $PATH_SETFATTR -x user.foo mnt/file3.xattr && + $PATH_SETFATTR -x user.bar mnt/file3.xattr && + $PATH_SETFATTR -x user.baz mnt/file3.xattr && + $PATH_GETFATTR -m- -d mnt/file3.xattr >userx.out && + test_must_fail test $(wc -l mounthelp.out && diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index 6ede5fba..49718111 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -23,10 +23,7 @@ TESTS = \ t37 \ t38 \ t39 \ - t42 \ - t44 \ - t46 \ - t47 + t44 XFAIL_TESTS = diff --git a/tests/kern/README b/tests/kern/README index e785b997..c08d9c61 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -20,9 +20,6 @@ t34 Run an svnadmin create, which uncovered a bug in fsync t37 Run fsx. t38 Run fsstress. t39 Run fsstress out of 9p, against host fs. -t42 Set/get user.* extended attributes t44 Test atomic create with O_CREAT|O_EXCL -t46 Set/get trusted.* extended attributes -t47 Set/get security.* extended attributes t48 Run fsx with mmap read test enabled t49 Run fsx with mmap write test enabled diff --git a/tests/kern/t42 b/tests/kern/t42 deleted file mode 100755 index dcdd9339..00000000 --- a/tests/kern/t42 +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -e - -cd $PATH_MNTDIR -touch testfile - -setfattr -n user.foo -v fooval testfile -setfattr -n user.bar -v barval testfile -setfattr -n user.baz -v bazval testfile - -getfattr -d testfile - -setfattr -x user.foo testfile -setfattr -x user.bar testfile -setfattr -x user.baz testfile - -getfattr -d testfile - -exit 0 diff --git a/tests/kern/t42.exp b/tests/kern/t42.exp deleted file mode 100644 index 7a784cb0..00000000 --- a/tests/kern/t42.exp +++ /dev/null @@ -1,8 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -# file: testfile -user.bar="barval" -user.baz="bazval" -user.foo="fooval" - -kconjoin: t42 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/t46 b/tests/kern/t46 deleted file mode 100755 index 7429d97f..00000000 --- a/tests/kern/t46 +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -e - -cd $PATH_MNTDIR -touch testfile - -setfattr -n trusted.foo -v fooval testfile -setfattr -n trusted.bar -v barval testfile -setfattr -n trusted.baz -v bazval testfile - -# ext4_xattr_trusted_list () returns empty if !capable(CAP_SYS_ADMIN) -# diod dropps this capability. Why does this work? -getfattr -m- -d testfile - -setfattr -x trusted.foo testfile -setfattr -x trusted.bar testfile -setfattr -x trusted.baz testfile - -getfattr -m- -d testfile - -exit 0 diff --git a/tests/kern/t46.exp b/tests/kern/t46.exp deleted file mode 100644 index 64b01c94..00000000 --- a/tests/kern/t46.exp +++ /dev/null @@ -1,8 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -# file: testfile -trusted.bar="barval" -trusted.baz="bazval" -trusted.foo="fooval" - -kconjoin: t46 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/t47 b/tests/kern/t47 deleted file mode 100755 index deb2efff..00000000 --- a/tests/kern/t47 +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -e - -# setfattr fails with ENOTSUP - -cd $PATH_MNTDIR -touch testfile - -setfattr -n security.foo -v fooval testfile -setfattr -n security.bar -v barval testfile -setfattr -n security.baz -v bazval testfile - -getfattr -m- -d testfile - -setfattr -x security.foo testfile -setfattr -x security.bar testfile -setfattr -x security.baz testfile - -getfattr -m- -d testfile - -exit 0 diff --git a/tests/kern/t47.exp b/tests/kern/t47.exp deleted file mode 100644 index cf33c70a..00000000 --- a/tests/kern/t47.exp +++ /dev/null @@ -1,8 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -# file: testfile -security.bar="barval" -security.baz="bazval" -security.foo="fooval" - -kconjoin: t47 exited with rc=0 -kconjoin: diod exited with rc=0 From 2ac320c7e7c1900cdfad3c787532de8660969ed6 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 19:19:32 -0700 Subject: [PATCH 09/17] testsuite: migrate create test to sharness Problem: the kern/t12 create-with-mode test lives in the old test framework. Create a new test in t0010-v9fs-runasuser.t. Drop the old one. --- t/t0010-v9fs-runasuser.t | 41 ++++ tests/kern/Makefile.am | 3 - tests/kern/README | 1 - tests/kern/t12 | 15 -- tests/kern/t12.exp | 515 --------------------------------------- tests/kern/tcreate.c | 55 ----- 6 files changed, 41 insertions(+), 589 deletions(-) delete mode 100755 tests/kern/t12 delete mode 100644 tests/kern/t12.exp delete mode 100644 tests/kern/tcreate.c diff --git a/t/t0010-v9fs-runasuser.t b/t/t0010-v9fs-runasuser.t index 9a4e386a..645a222f 100755 --- a/t/t0010-v9fs-runasuser.t +++ b/t/t0010-v9fs-runasuser.t @@ -240,6 +240,47 @@ test_expect_success 'root cannot create file' ' test_must_fail $SUDO touch mnt/dir/asroot 2>rootwrite.err && grep "not permitted" rootwrite.err ' + +# Usage: makefiles dir +makefiles () { + local path=$1 + local seq=0 + local rc=0 + local u g o + for u in 0 1 2 3 4 5 6 7; do + for g in 0 1 2 3 4 5 6 7; do + for o in 0 1 2 3 4 5 6 7; do + install -m 0$u$g$o /dev/null $path/f.$seq || rc=1 + seq=$(($seq + 1)) + done + done + done + return $rc +} +# Usage: checkmodes dir +checkmodes () { + local path=$1 + local seq=0 + local rc=0 + local u g o + for u in 0 1 2 3 4 5 6 7; do + for g in 0 1 2 3 4 5 6 7; do + for o in 0 1 2 3 4 5 6 7; do + test "$($PATH_STAT -c "%a" $path/f.$seq)" -eq "$u$g$o" || rc=1 + seq=$(($seq + 1)) + done + done + done + return $rc +} + +test_expect_success 'atomically create files with all the modes' ' + mkdir mnt/ptest && + makefiles mnt/ptest +' +test_expect_success 'all the modes were set on the server' ' + checkmodes exp/ptest +' test_expect_success 'mount filesystem with access=any on mnt2' ' $mountcmd \ -oaname=$exportdir,$mountopts,access=any \ diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index 49718111..23c43341 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -1,6 +1,5 @@ check_PROGRAMS = \ kconjoin \ - tcreate \ tatomic SUBDIRS = fstest fsx fsstress @@ -16,7 +15,6 @@ AM_TESTS_ENVIRONMENT = \ LOG_COMPILER = ${srcdir}/runtest TESTS = \ - t12 \ t15 \ t17 \ t31 \ @@ -44,7 +42,6 @@ LDADD = $(top_builddir)/src/libdiod/libdiod.a \ $(LIBPTHREAD) $(LUA_LIB) $(MUNGE_LIBS) $(CAP_LIBS) $(LIBTCMALLOC) kconjoin_SOURCES = kconjoin.c $(common_sources) -tcreate_SOURCES = tcreate.c $(common_sources) tatomic_SOURCES = tatomic.c $(common_sources) EXTRA_DIST = $(TESTS) $(TESTS:%=%.exp) runtest diff --git a/tests/kern/README b/tests/kern/README index c08d9c61..73a728ee 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -7,7 +7,6 @@ These tests all run the same way: - .out is compared wtih .exp The tests are: -t12 Create a file and check that file creation mode was honored t15 Demonstrate that fsync does not return an error. t17 Set all the mode bits (7777) on a file and directory on server and verify that they are reflected in client stat, then do the reverse. diff --git a/tests/kern/t12 b/tests/kern/t12 deleted file mode 100755 index b5505927..00000000 --- a/tests/kern/t12 +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -e - -rc=0 - -seq=0 -for u in 0 1 2 3 4 5 6 7; do - for g in 0 1 2 3 4 5 6 7; do - for o in 0 1 2 3 4 5 6 7; do - ./tcreate $PATH_MNTDIR/file.$seq 0$u$g$o || rc=1 - seq=$(($seq + 1)) - done - done -done - -exit $rc diff --git a/tests/kern/t12.exp b/tests/kern/t12.exp deleted file mode 100644 index 92cd281c..00000000 --- a/tests/kern/t12.exp +++ /dev/null @@ -1,515 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -mode 0000 -mode 0001 -mode 0002 -mode 0003 -mode 0004 -mode 0005 -mode 0006 -mode 0007 -mode 0010 -mode 0011 -mode 0012 -mode 0013 -mode 0014 -mode 0015 -mode 0016 -mode 0017 -mode 0020 -mode 0021 -mode 0022 -mode 0023 -mode 0024 -mode 0025 -mode 0026 -mode 0027 -mode 0030 -mode 0031 -mode 0032 -mode 0033 -mode 0034 -mode 0035 -mode 0036 -mode 0037 -mode 0040 -mode 0041 -mode 0042 -mode 0043 -mode 0044 -mode 0045 -mode 0046 -mode 0047 -mode 0050 -mode 0051 -mode 0052 -mode 0053 -mode 0054 -mode 0055 -mode 0056 -mode 0057 -mode 0060 -mode 0061 -mode 0062 -mode 0063 -mode 0064 -mode 0065 -mode 0066 -mode 0067 -mode 0070 -mode 0071 -mode 0072 -mode 0073 -mode 0074 -mode 0075 -mode 0076 -mode 0077 -mode 0100 -mode 0101 -mode 0102 -mode 0103 -mode 0104 -mode 0105 -mode 0106 -mode 0107 -mode 0110 -mode 0111 -mode 0112 -mode 0113 -mode 0114 -mode 0115 -mode 0116 -mode 0117 -mode 0120 -mode 0121 -mode 0122 -mode 0123 -mode 0124 -mode 0125 -mode 0126 -mode 0127 -mode 0130 -mode 0131 -mode 0132 -mode 0133 -mode 0134 -mode 0135 -mode 0136 -mode 0137 -mode 0140 -mode 0141 -mode 0142 -mode 0143 -mode 0144 -mode 0145 -mode 0146 -mode 0147 -mode 0150 -mode 0151 -mode 0152 -mode 0153 -mode 0154 -mode 0155 -mode 0156 -mode 0157 -mode 0160 -mode 0161 -mode 0162 -mode 0163 -mode 0164 -mode 0165 -mode 0166 -mode 0167 -mode 0170 -mode 0171 -mode 0172 -mode 0173 -mode 0174 -mode 0175 -mode 0176 -mode 0177 -mode 0200 -mode 0201 -mode 0202 -mode 0203 -mode 0204 -mode 0205 -mode 0206 -mode 0207 -mode 0210 -mode 0211 -mode 0212 -mode 0213 -mode 0214 -mode 0215 -mode 0216 -mode 0217 -mode 0220 -mode 0221 -mode 0222 -mode 0223 -mode 0224 -mode 0225 -mode 0226 -mode 0227 -mode 0230 -mode 0231 -mode 0232 -mode 0233 -mode 0234 -mode 0235 -mode 0236 -mode 0237 -mode 0240 -mode 0241 -mode 0242 -mode 0243 -mode 0244 -mode 0245 -mode 0246 -mode 0247 -mode 0250 -mode 0251 -mode 0252 -mode 0253 -mode 0254 -mode 0255 -mode 0256 -mode 0257 -mode 0260 -mode 0261 -mode 0262 -mode 0263 -mode 0264 -mode 0265 -mode 0266 -mode 0267 -mode 0270 -mode 0271 -mode 0272 -mode 0273 -mode 0274 -mode 0275 -mode 0276 -mode 0277 -mode 0300 -mode 0301 -mode 0302 -mode 0303 -mode 0304 -mode 0305 -mode 0306 -mode 0307 -mode 0310 -mode 0311 -mode 0312 -mode 0313 -mode 0314 -mode 0315 -mode 0316 -mode 0317 -mode 0320 -mode 0321 -mode 0322 -mode 0323 -mode 0324 -mode 0325 -mode 0326 -mode 0327 -mode 0330 -mode 0331 -mode 0332 -mode 0333 -mode 0334 -mode 0335 -mode 0336 -mode 0337 -mode 0340 -mode 0341 -mode 0342 -mode 0343 -mode 0344 -mode 0345 -mode 0346 -mode 0347 -mode 0350 -mode 0351 -mode 0352 -mode 0353 -mode 0354 -mode 0355 -mode 0356 -mode 0357 -mode 0360 -mode 0361 -mode 0362 -mode 0363 -mode 0364 -mode 0365 -mode 0366 -mode 0367 -mode 0370 -mode 0371 -mode 0372 -mode 0373 -mode 0374 -mode 0375 -mode 0376 -mode 0377 -mode 0400 -mode 0401 -mode 0402 -mode 0403 -mode 0404 -mode 0405 -mode 0406 -mode 0407 -mode 0410 -mode 0411 -mode 0412 -mode 0413 -mode 0414 -mode 0415 -mode 0416 -mode 0417 -mode 0420 -mode 0421 -mode 0422 -mode 0423 -mode 0424 -mode 0425 -mode 0426 -mode 0427 -mode 0430 -mode 0431 -mode 0432 -mode 0433 -mode 0434 -mode 0435 -mode 0436 -mode 0437 -mode 0440 -mode 0441 -mode 0442 -mode 0443 -mode 0444 -mode 0445 -mode 0446 -mode 0447 -mode 0450 -mode 0451 -mode 0452 -mode 0453 -mode 0454 -mode 0455 -mode 0456 -mode 0457 -mode 0460 -mode 0461 -mode 0462 -mode 0463 -mode 0464 -mode 0465 -mode 0466 -mode 0467 -mode 0470 -mode 0471 -mode 0472 -mode 0473 -mode 0474 -mode 0475 -mode 0476 -mode 0477 -mode 0500 -mode 0501 -mode 0502 -mode 0503 -mode 0504 -mode 0505 -mode 0506 -mode 0507 -mode 0510 -mode 0511 -mode 0512 -mode 0513 -mode 0514 -mode 0515 -mode 0516 -mode 0517 -mode 0520 -mode 0521 -mode 0522 -mode 0523 -mode 0524 -mode 0525 -mode 0526 -mode 0527 -mode 0530 -mode 0531 -mode 0532 -mode 0533 -mode 0534 -mode 0535 -mode 0536 -mode 0537 -mode 0540 -mode 0541 -mode 0542 -mode 0543 -mode 0544 -mode 0545 -mode 0546 -mode 0547 -mode 0550 -mode 0551 -mode 0552 -mode 0553 -mode 0554 -mode 0555 -mode 0556 -mode 0557 -mode 0560 -mode 0561 -mode 0562 -mode 0563 -mode 0564 -mode 0565 -mode 0566 -mode 0567 -mode 0570 -mode 0571 -mode 0572 -mode 0573 -mode 0574 -mode 0575 -mode 0576 -mode 0577 -mode 0600 -mode 0601 -mode 0602 -mode 0603 -mode 0604 -mode 0605 -mode 0606 -mode 0607 -mode 0610 -mode 0611 -mode 0612 -mode 0613 -mode 0614 -mode 0615 -mode 0616 -mode 0617 -mode 0620 -mode 0621 -mode 0622 -mode 0623 -mode 0624 -mode 0625 -mode 0626 -mode 0627 -mode 0630 -mode 0631 -mode 0632 -mode 0633 -mode 0634 -mode 0635 -mode 0636 -mode 0637 -mode 0640 -mode 0641 -mode 0642 -mode 0643 -mode 0644 -mode 0645 -mode 0646 -mode 0647 -mode 0650 -mode 0651 -mode 0652 -mode 0653 -mode 0654 -mode 0655 -mode 0656 -mode 0657 -mode 0660 -mode 0661 -mode 0662 -mode 0663 -mode 0664 -mode 0665 -mode 0666 -mode 0667 -mode 0670 -mode 0671 -mode 0672 -mode 0673 -mode 0674 -mode 0675 -mode 0676 -mode 0677 -mode 0700 -mode 0701 -mode 0702 -mode 0703 -mode 0704 -mode 0705 -mode 0706 -mode 0707 -mode 0710 -mode 0711 -mode 0712 -mode 0713 -mode 0714 -mode 0715 -mode 0716 -mode 0717 -mode 0720 -mode 0721 -mode 0722 -mode 0723 -mode 0724 -mode 0725 -mode 0726 -mode 0727 -mode 0730 -mode 0731 -mode 0732 -mode 0733 -mode 0734 -mode 0735 -mode 0736 -mode 0737 -mode 0740 -mode 0741 -mode 0742 -mode 0743 -mode 0744 -mode 0745 -mode 0746 -mode 0747 -mode 0750 -mode 0751 -mode 0752 -mode 0753 -mode 0754 -mode 0755 -mode 0756 -mode 0757 -mode 0760 -mode 0761 -mode 0762 -mode 0763 -mode 0764 -mode 0765 -mode 0766 -mode 0767 -mode 0770 -mode 0771 -mode 0772 -mode 0773 -mode 0774 -mode 0775 -mode 0776 -mode 0777 -kconjoin: t12 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/tcreate.c b/tests/kern/tcreate.c deleted file mode 100644 index 778f47ec..00000000 --- a/tests/kern/tcreate.c +++ /dev/null @@ -1,55 +0,0 @@ -/************************************************************\ - * Copyright 2010 Lawrence Livermore National Security, LLC - * (c.f. AUTHORS, NOTICE.LLNS, COPYING) - * - * This file is part of the diod 9P server project. - * For details, see https://github.com/chaos/diod. - * - * SPDX-License-Identifier: GPL-2.0-or-later -\************************************************************/ - -/* tcreate.c - verify file creation mode */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif -#include -#include -#include -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - struct stat sb; - int mode, nmode; - - umask(0); - - if (argc != 3) { - fprintf (stderr, "Usage: tcreate file mode\n"); - exit (1); - } - mode = strtoul (argv[2], NULL, 0); - if (creat (argv[1], mode) < 0) { - perror ("creat"); - exit (1); - } - if (stat (argv[1], &sb) < 0) { - perror ("stat"); - exit (1); - } - nmode = sb.st_mode & 0777; - if (nmode == mode) - fprintf (stderr, "mode %.4o\n", nmode); - else - fprintf (stderr, "mode %.4o != %.4o\n", nmode, mode); - - exit (0); -} - -/* - * vi:tabstop=4 shiftwidth=4 expandtab - */ From 1f53fb17b8d2239048b14bc7b12004091dcd0231 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 19:31:05 -0700 Subject: [PATCH 10/17] testsuite: migrate atomic create test to sharness Problem: the kern/t44 atomic create test lives in the old test framework. Create a new test in t0010-v9fs-runasuser.t. Drop the old one. --- src/cmd/Makefile.am | 5 ++++ .../tatomic.c => src/cmd/test/atomic_create.c | 29 +++++++++---------- t/t0010-v9fs-runasuser.t | 4 +++ tests/kern/Makefile.am | 7 ++--- tests/kern/README | 1 - tests/kern/t44 | 5 ---- tests/kern/t44.exp | 4 --- 7 files changed, 24 insertions(+), 31 deletions(-) rename tests/kern/tatomic.c => src/cmd/test/atomic_create.c (55%) delete mode 100755 tests/kern/t44 delete mode 100644 tests/kern/t44.exp diff --git a/src/cmd/Makefile.am b/src/cmd/Makefile.am index b9739726..67fa5305 100644 --- a/src/cmd/Makefile.am +++ b/src/cmd/Makefile.am @@ -52,6 +52,7 @@ check_PROGRAMS = \ test_pathwalk \ test_flock \ test_flock_single \ + test_atomic_create \ $(TESTS) TEST_EXTENSIONS = .t @@ -91,3 +92,7 @@ test_flock_LDADD = \ test_flock_single_SOURCES = test/flock_single.c $(common_sources) test_flock_single_LDADD = \ $(common_ldadd) + +test_atomic_create_SOURCES = test/atomic_create.c $(common_sources) +test_atomic_create_LDADD = \ + $(common_ldadd) diff --git a/tests/kern/tatomic.c b/src/cmd/test/atomic_create.c similarity index 55% rename from tests/kern/tatomic.c rename to src/cmd/test/atomic_create.c index bbfe4c06..98dbb784 100644 --- a/tests/kern/tatomic.c +++ b/src/cmd/test/atomic_create.c @@ -19,23 +19,20 @@ int main(int argc, char *argv[]) { - int fd; + int fd; - /* first create the file */ - fd = open(argv[1], O_CREAT|O_WRONLY, 0644); - if (fd < 0) { - perror("open"); - return -1; - } + /* first create the file */ + fd = open(argv[1], O_CREAT|O_WRONLY, 0644); + if (fd < 0) { + perror("open"); + return 1; + } close(fd); - /* Now opening same file with O_CREAT|O_EXCL should fail */ - fd = open(argv[1], O_CREAT|O_EXCL, 0644); - if (fd < 0 && errno == EEXIST) - printf("test case pass\n"); - else - printf("test case failed\n"); - close(fd); - return 0; + /* Now opening same file with O_CREAT|O_EXCL should fail */ + fd = open(argv[1], O_CREAT|O_EXCL, 0644); + if (!(fd < 0 && errno == EEXIST)) + return 1; + close(fd); + return 0; } - diff --git a/t/t0010-v9fs-runasuser.t b/t/t0010-v9fs-runasuser.t index 645a222f..b308915d 100755 --- a/t/t0010-v9fs-runasuser.t +++ b/t/t0010-v9fs-runasuser.t @@ -36,6 +36,7 @@ mountopts="trans=unix,uname=$(id -un)" test_flock=$SHARNESS_BUILD_DIRECTORY/src/cmd/test_flock test_flock_single=$SHARNESS_BUILD_DIRECTORY/src/cmd/test_flock_single +test_atomic_create=$SHARNESS_BUILD_DIRECTORY/src/cmd/test_atomic_create # usage: create_file name [block_count] create_file() { @@ -281,6 +282,9 @@ test_expect_success 'atomically create files with all the modes' ' test_expect_success 'all the modes were set on the server' ' checkmodes exp/ptest ' +test_expect_success 'creating a file with O_CREAT|OEXCL fails if file exists' ' + $test_atomic_create mnt/atomic_create +' test_expect_success 'mount filesystem with access=any on mnt2' ' $mountcmd \ -oaname=$exportdir,$mountopts,access=any \ diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index 23c43341..79a92eb4 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -1,6 +1,5 @@ check_PROGRAMS = \ - kconjoin \ - tatomic + kconjoin SUBDIRS = fstest fsx fsstress @@ -20,8 +19,7 @@ TESTS = \ t31 \ t37 \ t38 \ - t39 \ - t44 + t39 XFAIL_TESTS = @@ -42,6 +40,5 @@ LDADD = $(top_builddir)/src/libdiod/libdiod.a \ $(LIBPTHREAD) $(LUA_LIB) $(MUNGE_LIBS) $(CAP_LIBS) $(LIBTCMALLOC) kconjoin_SOURCES = kconjoin.c $(common_sources) -tatomic_SOURCES = tatomic.c $(common_sources) EXTRA_DIST = $(TESTS) $(TESTS:%=%.exp) runtest diff --git a/tests/kern/README b/tests/kern/README index 73a728ee..7ffaace6 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -19,6 +19,5 @@ t34 Run an svnadmin create, which uncovered a bug in fsync t37 Run fsx. t38 Run fsstress. t39 Run fsstress out of 9p, against host fs. -t44 Test atomic create with O_CREAT|O_EXCL t48 Run fsx with mmap read test enabled t49 Run fsx with mmap write test enabled diff --git a/tests/kern/t44 b/tests/kern/t44 deleted file mode 100755 index f09597bd..00000000 --- a/tests/kern/t44 +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -e - -./tatomic $PATH_MNTDIR/testfile - -exit 0 diff --git a/tests/kern/t44.exp b/tests/kern/t44.exp deleted file mode 100644 index 11c3a948..00000000 --- a/tests/kern/t44.exp +++ /dev/null @@ -1,4 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -test case pass -kconjoin: t44 exited with rc=0 -kconjoin: diod exited with rc=0 From 0ad5a8a1162024aed8ce347b4d02aa3f97c1d97c Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 19:36:43 -0700 Subject: [PATCH 11/17] testsuite: drop duplicate fsync test Problem: the kern/t15 fsync test is duplicated in t0010-v9fs-runasuser.t. Drop the old test. --- tests/kern/Makefile.am | 1 - tests/kern/README | 1 - tests/kern/t15 | 5 ----- tests/kern/t15.exp | 6 ------ 4 files changed, 13 deletions(-) delete mode 100755 tests/kern/t15 delete mode 100644 tests/kern/t15.exp diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index 79a92eb4..2e8d1eee 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -14,7 +14,6 @@ AM_TESTS_ENVIRONMENT = \ LOG_COMPILER = ${srcdir}/runtest TESTS = \ - t15 \ t17 \ t31 \ t37 \ diff --git a/tests/kern/README b/tests/kern/README index 7ffaace6..52a9ecf5 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -7,7 +7,6 @@ These tests all run the same way: - .out is compared wtih .exp The tests are: -t15 Demonstrate that fsync does not return an error. t17 Set all the mode bits (7777) on a file and directory on server and verify that they are reflected in client stat, then do the reverse. t19 Simple test to check that POSIX advisory record locks are properly diff --git a/tests/kern/t15 b/tests/kern/t15 deleted file mode 100755 index cc96b446..00000000 --- a/tests/kern/t15 +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -e - -echo writing file with fsync -dd if=/dev/zero of=$PATH_MNTDIR/a count=1024 conv=fsync status=noxfer -cmp $PATH_MNTDIR/a $PATH_EXPDIR/a diff --git a/tests/kern/t15.exp b/tests/kern/t15.exp deleted file mode 100644 index abfa3f12..00000000 --- a/tests/kern/t15.exp +++ /dev/null @@ -1,6 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -writing file with fsync -1024+0 records in -1024+0 records out -kconjoin: t15 exited with rc=0 -kconjoin: diod exited with rc=0 From f24b4ae639ec99cdb82ff40ea907f7de03d8ffff Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 19:39:27 -0700 Subject: [PATCH 12/17] testsuite: drop duplicate mode test Problem: the kern/t17 mode test is duplicated in t0010-v9fs-runasuser.t. Drop the old test. --- tests/kern/Makefile.am | 1 - tests/kern/README | 2 -- tests/kern/t17 | 39 -------------------------------------- tests/kern/t17.exp | 43 ------------------------------------------ 4 files changed, 85 deletions(-) delete mode 100755 tests/kern/t17 delete mode 100644 tests/kern/t17.exp diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am index 2e8d1eee..7d82918f 100644 --- a/tests/kern/Makefile.am +++ b/tests/kern/Makefile.am @@ -14,7 +14,6 @@ AM_TESTS_ENVIRONMENT = \ LOG_COMPILER = ${srcdir}/runtest TESTS = \ - t17 \ t31 \ t37 \ t38 \ diff --git a/tests/kern/README b/tests/kern/README index 52a9ecf5..377a83ae 100644 --- a/tests/kern/README +++ b/tests/kern/README @@ -7,8 +7,6 @@ These tests all run the same way: - .out is compared wtih .exp The tests are: -t17 Set all the mode bits (7777) on a file and directory on server - and verify that they are reflected in client stat, then do the reverse. t19 Simple test to check that POSIX advisory record locks are properly arbitrated between two processes. t23 Simple test to check that POSIX advisory record locks are handled diff --git a/tests/kern/t17 b/tests/kern/t17 deleted file mode 100755 index 632c1e29..00000000 --- a/tests/kern/t17 +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -e - -testmode () -{ - for i in 0 1 2 3 4 5 6 7; do - if [ -d $1 ]; then - chmod $i$i$i $1 - else - chmod $i$i$i$i $1 - fi - stat -c "%a" $2 - done -} - -remake () -{ - echo "(re-)creating file and directory" - rm -rf $PATH_MNTDIR/a $PATH_MNTDIR/b - touch $PATH_MNTDIR/a - mkdir $PATH_MNTDIR/b -} - -# N.B. setting S_ISUID causes S_ISGID to set also. -# This seems to be an ext3 thing? -# Anyway skip sticky bits on directories. -# - -remake -echo "testing file server to client" -testmode $PATH_EXPDIR/a $PATH_MNTDIR/a -remake -echo "testing file client to server" -testmode $PATH_MNTDIR/a $PATH_EXPDIR/a -remake -echo "testing directory server to client" -testmode $PATH_EXPDIR/b $PATH_MNTDIR/b -remake -echo "testing directory client to server" -testmode $PATH_MNTDIR/b $PATH_EXPDIR/b diff --git a/tests/kern/t17.exp b/tests/kern/t17.exp deleted file mode 100644 index 21b253c0..00000000 --- a/tests/kern/t17.exp +++ /dev/null @@ -1,43 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -(re-)creating file and directory -testing file server to client -0 -1111 -2222 -3333 -4444 -5555 -6666 -7777 -(re-)creating file and directory -testing file client to server -0 -1111 -2222 -3333 -4444 -5555 -6666 -7777 -(re-)creating file and directory -testing directory server to client -0 -111 -222 -333 -444 -555 -666 -777 -(re-)creating file and directory -testing directory client to server -0 -111 -222 -333 -444 -555 -666 -777 -kconjoin: t17 exited with rc=0 -kconjoin: diod exited with rc=0 From 32117dd21d7a289cbda3187c6d20a9c13773ee63 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 19:41:38 -0700 Subject: [PATCH 13/17] testsuite: drop third party tests Problem: fstest, fsstress, and fsx are vendored tests that appear to be abandoned or at least not widely used. Drop for now. --- Makefile.am | 3 +- configure.ac | 5 - tests/Makefile.am | 1 - tests/kern/Makefile.am | 42 - tests/kern/README | 20 - tests/kern/fsstress/Makefile.am | 7 - tests/kern/fsstress/fsstress.c | 2657 ------------------------- tests/kern/fsstress/global.h | 67 - tests/kern/fsstress/xfscompat.h | 7 - tests/kern/fstest/LICENSE | 27 - tests/kern/fstest/Makefile.am | 12 - tests/kern/fstest/README | 28 - tests/kern/fstest/fstest.c | 1002 ---------- tests/kern/fstest/tests/chflags/00.t | 178 -- tests/kern/fstest/tests/chflags/01.t | 20 - tests/kern/fstest/tests/chflags/02.t | 18 - tests/kern/fstest/tests/chflags/03.t | 25 - tests/kern/fstest/tests/chflags/04.t | 19 - tests/kern/fstest/tests/chflags/05.t | 35 - tests/kern/fstest/tests/chflags/06.t | 21 - tests/kern/fstest/tests/chflags/07.t | 54 - tests/kern/fstest/tests/chflags/08.t | 70 - tests/kern/fstest/tests/chflags/09.t | 82 - tests/kern/fstest/tests/chflags/10.t | 62 - tests/kern/fstest/tests/chflags/11.t | 70 - tests/kern/fstest/tests/chflags/12.t | 43 - tests/kern/fstest/tests/chflags/13.t | 14 - tests/kern/fstest/tests/chmod/00.t | 161 -- tests/kern/fstest/tests/chmod/01.t | 18 - tests/kern/fstest/tests/chmod/02.t | 15 - tests/kern/fstest/tests/chmod/03.t | 24 - tests/kern/fstest/tests/chmod/04.t | 17 - tests/kern/fstest/tests/chmod/05.t | 31 - tests/kern/fstest/tests/chmod/06.t | 19 - tests/kern/fstest/tests/chmod/07.t | 31 - tests/kern/fstest/tests/chmod/08.t | 59 - tests/kern/fstest/tests/chmod/09.t | 37 - tests/kern/fstest/tests/chmod/10.t | 12 - tests/kern/fstest/tests/chmod/11.t | 53 - tests/kern/fstest/tests/chown/00.t | 376 ---- tests/kern/fstest/tests/chown/01.t | 18 - tests/kern/fstest/tests/chown/02.t | 15 - tests/kern/fstest/tests/chown/03.t | 24 - tests/kern/fstest/tests/chown/04.t | 17 - tests/kern/fstest/tests/chown/05.t | 32 - tests/kern/fstest/tests/chown/06.t | 19 - tests/kern/fstest/tests/chown/07.t | 28 - tests/kern/fstest/tests/chown/08.t | 53 - tests/kern/fstest/tests/chown/09.t | 37 - tests/kern/fstest/tests/chown/10.t | 12 - tests/kern/fstest/tests/conf | 8 - tests/kern/fstest/tests/link/00.t | 151 -- tests/kern/fstest/tests/link/01.t | 22 - tests/kern/fstest/tests/link/02.t | 23 - tests/kern/fstest/tests/link/03.t | 32 - tests/kern/fstest/tests/link/04.t | 20 - tests/kern/fstest/tests/link/05.t | 41 - tests/kern/fstest/tests/link/06.t | 43 - tests/kern/fstest/tests/link/07.t | 41 - tests/kern/fstest/tests/link/08.t | 24 - tests/kern/fstest/tests/link/09.t | 18 - tests/kern/fstest/tests/link/10.t | 32 - tests/kern/fstest/tests/link/11.t | 41 - tests/kern/fstest/tests/link/12.t | 55 - tests/kern/fstest/tests/link/13.t | 56 - tests/kern/fstest/tests/link/14.t | 34 - tests/kern/fstest/tests/link/15.t | 38 - tests/kern/fstest/tests/link/16.t | 39 - tests/kern/fstest/tests/link/17.t | 20 - tests/kern/fstest/tests/misc.sh | 143 -- tests/kern/fstest/tests/mkdir/00.t | 73 - tests/kern/fstest/tests/mkdir/01.t | 18 - tests/kern/fstest/tests/mkdir/02.t | 13 - tests/kern/fstest/tests/mkdir/03.t | 23 - tests/kern/fstest/tests/mkdir/04.t | 16 - tests/kern/fstest/tests/mkdir/05.t | 29 - tests/kern/fstest/tests/mkdir/06.t | 29 - tests/kern/fstest/tests/mkdir/07.t | 19 - tests/kern/fstest/tests/mkdir/08.t | 53 - tests/kern/fstest/tests/mkdir/09.t | 34 - tests/kern/fstest/tests/mkdir/10.t | 27 - tests/kern/fstest/tests/mkdir/11.t | 36 - tests/kern/fstest/tests/mkdir/12.t | 12 - tests/kern/fstest/tests/mkfifo/00.t | 73 - tests/kern/fstest/tests/mkfifo/01.t | 18 - tests/kern/fstest/tests/mkfifo/02.t | 13 - tests/kern/fstest/tests/mkfifo/03.t | 23 - tests/kern/fstest/tests/mkfifo/04.t | 16 - tests/kern/fstest/tests/mkfifo/05.t | 29 - tests/kern/fstest/tests/mkfifo/06.t | 29 - tests/kern/fstest/tests/mkfifo/07.t | 19 - tests/kern/fstest/tests/mkfifo/08.t | 34 - tests/kern/fstest/tests/mkfifo/09.t | 27 - tests/kern/fstest/tests/mkfifo/10.t | 53 - tests/kern/fstest/tests/mkfifo/11.t | 36 - tests/kern/fstest/tests/mkfifo/12.t | 12 - tests/kern/fstest/tests/open/00.t | 99 - tests/kern/fstest/tests/open/01.t | 18 - tests/kern/fstest/tests/open/02.t | 14 - tests/kern/fstest/tests/open/03.t | 24 - tests/kern/fstest/tests/open/04.t | 17 - tests/kern/fstest/tests/open/05.t | 29 - tests/kern/fstest/tests/open/06.t | 102 - tests/kern/fstest/tests/open/07.t | 45 - tests/kern/fstest/tests/open/08.t | 19 - tests/kern/fstest/tests/open/09.t | 53 - tests/kern/fstest/tests/open/10.t | 45 - tests/kern/fstest/tests/open/11.t | 39 - tests/kern/fstest/tests/open/12.t | 19 - tests/kern/fstest/tests/open/13.t | 24 - tests/kern/fstest/tests/open/14.t | 37 - tests/kern/fstest/tests/open/15.t | 32 - tests/kern/fstest/tests/open/16.t | 29 - tests/kern/fstest/tests/open/17.t | 15 - tests/kern/fstest/tests/open/18.t | 25 - tests/kern/fstest/tests/open/19.t | 37 - tests/kern/fstest/tests/open/20.t | 25 - tests/kern/fstest/tests/open/21.t | 12 - tests/kern/fstest/tests/open/22.t | 27 - tests/kern/fstest/tests/open/23.t | 24 - tests/kern/fstest/tests/rename/00.t | 141 -- tests/kern/fstest/tests/rename/01.t | 21 - tests/kern/fstest/tests/rename/02.t | 28 - tests/kern/fstest/tests/rename/03.t | 20 - tests/kern/fstest/tests/rename/04.t | 43 - tests/kern/fstest/tests/rename/05.t | 41 - tests/kern/fstest/tests/rename/06.t | 50 - tests/kern/fstest/tests/rename/07.t | 95 - tests/kern/fstest/tests/rename/08.t | 95 - tests/kern/fstest/tests/rename/09.t | 94 - tests/kern/fstest/tests/rename/10.t | 243 --- tests/kern/fstest/tests/rename/11.t | 24 - tests/kern/fstest/tests/rename/12.t | 22 - tests/kern/fstest/tests/rename/13.t | 34 - tests/kern/fstest/tests/rename/14.t | 34 - tests/kern/fstest/tests/rename/15.t | 45 - tests/kern/fstest/tests/rename/16.t | 37 - tests/kern/fstest/tests/rename/17.t | 20 - tests/kern/fstest/tests/rename/18.t | 22 - tests/kern/fstest/tests/rename/19.t | 30 - tests/kern/fstest/tests/rename/20.t | 35 - tests/kern/fstest/tests/rmdir/00.t | 28 - tests/kern/fstest/tests/rmdir/01.t | 30 - tests/kern/fstest/tests/rmdir/02.t | 14 - tests/kern/fstest/tests/rmdir/03.t | 24 - tests/kern/fstest/tests/rmdir/04.t | 17 - tests/kern/fstest/tests/rmdir/05.t | 19 - tests/kern/fstest/tests/rmdir/06.t | 36 - tests/kern/fstest/tests/rmdir/07.t | 27 - tests/kern/fstest/tests/rmdir/08.t | 27 - tests/kern/fstest/tests/rmdir/09.t | 49 - tests/kern/fstest/tests/rmdir/10.t | 52 - tests/kern/fstest/tests/rmdir/11.t | 40 - tests/kern/fstest/tests/rmdir/12.t | 29 - tests/kern/fstest/tests/rmdir/13.t | 27 - tests/kern/fstest/tests/rmdir/14.t | 32 - tests/kern/fstest/tests/rmdir/15.t | 12 - tests/kern/fstest/tests/symlink/00.t | 32 - tests/kern/fstest/tests/symlink/01.t | 18 - tests/kern/fstest/tests/symlink/02.t | 20 - tests/kern/fstest/tests/symlink/03.t | 28 - tests/kern/fstest/tests/symlink/04.t | 16 - tests/kern/fstest/tests/symlink/05.t | 34 - tests/kern/fstest/tests/symlink/06.t | 34 - tests/kern/fstest/tests/symlink/07.t | 19 - tests/kern/fstest/tests/symlink/08.t | 23 - tests/kern/fstest/tests/symlink/09.t | 53 - tests/kern/fstest/tests/symlink/10.t | 37 - tests/kern/fstest/tests/symlink/11.t | 36 - tests/kern/fstest/tests/symlink/12.t | 18 - tests/kern/fstest/tests/truncate/00.t | 51 - tests/kern/fstest/tests/truncate/01.t | 18 - tests/kern/fstest/tests/truncate/02.t | 15 - tests/kern/fstest/tests/truncate/03.t | 24 - tests/kern/fstest/tests/truncate/04.t | 17 - tests/kern/fstest/tests/truncate/05.t | 32 - tests/kern/fstest/tests/truncate/06.t | 24 - tests/kern/fstest/tests/truncate/07.t | 19 - tests/kern/fstest/tests/truncate/08.t | 59 - tests/kern/fstest/tests/truncate/09.t | 15 - tests/kern/fstest/tests/truncate/10.t | 37 - tests/kern/fstest/tests/truncate/11.t | 23 - tests/kern/fstest/tests/truncate/12.t | 27 - tests/kern/fstest/tests/truncate/13.t | 16 - tests/kern/fstest/tests/truncate/14.t | 12 - tests/kern/fstest/tests/unlink/00.t | 115 -- tests/kern/fstest/tests/unlink/01.t | 18 - tests/kern/fstest/tests/unlink/02.t | 14 - tests/kern/fstest/tests/unlink/03.t | 24 - tests/kern/fstest/tests/unlink/04.t | 17 - tests/kern/fstest/tests/unlink/05.t | 27 - tests/kern/fstest/tests/unlink/06.t | 27 - tests/kern/fstest/tests/unlink/07.t | 19 - tests/kern/fstest/tests/unlink/08.t | 28 - tests/kern/fstest/tests/unlink/09.t | 49 - tests/kern/fstest/tests/unlink/10.t | 52 - tests/kern/fstest/tests/unlink/11.t | 68 - tests/kern/fstest/tests/unlink/12.t | 32 - tests/kern/fstest/tests/unlink/13.t | 12 - tests/kern/fsx/Makefile.am | 8 - tests/kern/fsx/README | 2 - tests/kern/fsx/fsx.c | 1615 --------------- tests/kern/kconjoin.c | 159 -- tests/kern/runtest | 149 -- tests/kern/t28.exp | 10 - tests/kern/t31 | 6 - tests/kern/t31.exp | 189 -- tests/kern/t37 | 8 - tests/kern/t37.exp | 8 - tests/kern/t38 | 3 - tests/kern/t38.exp | 3 - tests/kern/t39 | 4 - tests/kern/t39.exp | 3 - 213 files changed, 1 insertion(+), 13214 deletions(-) delete mode 100644 tests/Makefile.am delete mode 100644 tests/kern/Makefile.am delete mode 100644 tests/kern/README delete mode 100644 tests/kern/fsstress/Makefile.am delete mode 100644 tests/kern/fsstress/fsstress.c delete mode 100644 tests/kern/fsstress/global.h delete mode 100644 tests/kern/fsstress/xfscompat.h delete mode 100644 tests/kern/fstest/LICENSE delete mode 100644 tests/kern/fstest/Makefile.am delete mode 100644 tests/kern/fstest/README delete mode 100644 tests/kern/fstest/fstest.c delete mode 100755 tests/kern/fstest/tests/chflags/00.t delete mode 100755 tests/kern/fstest/tests/chflags/01.t delete mode 100755 tests/kern/fstest/tests/chflags/02.t delete mode 100755 tests/kern/fstest/tests/chflags/03.t delete mode 100755 tests/kern/fstest/tests/chflags/04.t delete mode 100755 tests/kern/fstest/tests/chflags/05.t delete mode 100755 tests/kern/fstest/tests/chflags/06.t delete mode 100755 tests/kern/fstest/tests/chflags/07.t delete mode 100755 tests/kern/fstest/tests/chflags/08.t delete mode 100755 tests/kern/fstest/tests/chflags/09.t delete mode 100755 tests/kern/fstest/tests/chflags/10.t delete mode 100755 tests/kern/fstest/tests/chflags/11.t delete mode 100755 tests/kern/fstest/tests/chflags/12.t delete mode 100755 tests/kern/fstest/tests/chflags/13.t delete mode 100755 tests/kern/fstest/tests/chmod/00.t delete mode 100755 tests/kern/fstest/tests/chmod/01.t delete mode 100755 tests/kern/fstest/tests/chmod/02.t delete mode 100755 tests/kern/fstest/tests/chmod/03.t delete mode 100755 tests/kern/fstest/tests/chmod/04.t delete mode 100755 tests/kern/fstest/tests/chmod/05.t delete mode 100755 tests/kern/fstest/tests/chmod/06.t delete mode 100755 tests/kern/fstest/tests/chmod/07.t delete mode 100755 tests/kern/fstest/tests/chmod/08.t delete mode 100755 tests/kern/fstest/tests/chmod/09.t delete mode 100755 tests/kern/fstest/tests/chmod/10.t delete mode 100755 tests/kern/fstest/tests/chmod/11.t delete mode 100755 tests/kern/fstest/tests/chown/00.t delete mode 100755 tests/kern/fstest/tests/chown/01.t delete mode 100755 tests/kern/fstest/tests/chown/02.t delete mode 100755 tests/kern/fstest/tests/chown/03.t delete mode 100755 tests/kern/fstest/tests/chown/04.t delete mode 100755 tests/kern/fstest/tests/chown/05.t delete mode 100755 tests/kern/fstest/tests/chown/06.t delete mode 100755 tests/kern/fstest/tests/chown/07.t delete mode 100755 tests/kern/fstest/tests/chown/08.t delete mode 100755 tests/kern/fstest/tests/chown/09.t delete mode 100755 tests/kern/fstest/tests/chown/10.t delete mode 100644 tests/kern/fstest/tests/conf delete mode 100755 tests/kern/fstest/tests/link/00.t delete mode 100755 tests/kern/fstest/tests/link/01.t delete mode 100755 tests/kern/fstest/tests/link/02.t delete mode 100755 tests/kern/fstest/tests/link/03.t delete mode 100755 tests/kern/fstest/tests/link/04.t delete mode 100755 tests/kern/fstest/tests/link/05.t delete mode 100755 tests/kern/fstest/tests/link/06.t delete mode 100755 tests/kern/fstest/tests/link/07.t delete mode 100755 tests/kern/fstest/tests/link/08.t delete mode 100755 tests/kern/fstest/tests/link/09.t delete mode 100755 tests/kern/fstest/tests/link/10.t delete mode 100755 tests/kern/fstest/tests/link/11.t delete mode 100755 tests/kern/fstest/tests/link/12.t delete mode 100755 tests/kern/fstest/tests/link/13.t delete mode 100755 tests/kern/fstest/tests/link/14.t delete mode 100755 tests/kern/fstest/tests/link/15.t delete mode 100755 tests/kern/fstest/tests/link/16.t delete mode 100755 tests/kern/fstest/tests/link/17.t delete mode 100644 tests/kern/fstest/tests/misc.sh delete mode 100755 tests/kern/fstest/tests/mkdir/00.t delete mode 100755 tests/kern/fstest/tests/mkdir/01.t delete mode 100755 tests/kern/fstest/tests/mkdir/02.t delete mode 100755 tests/kern/fstest/tests/mkdir/03.t delete mode 100755 tests/kern/fstest/tests/mkdir/04.t delete mode 100755 tests/kern/fstest/tests/mkdir/05.t delete mode 100755 tests/kern/fstest/tests/mkdir/06.t delete mode 100755 tests/kern/fstest/tests/mkdir/07.t delete mode 100755 tests/kern/fstest/tests/mkdir/08.t delete mode 100755 tests/kern/fstest/tests/mkdir/09.t delete mode 100755 tests/kern/fstest/tests/mkdir/10.t delete mode 100755 tests/kern/fstest/tests/mkdir/11.t delete mode 100755 tests/kern/fstest/tests/mkdir/12.t delete mode 100755 tests/kern/fstest/tests/mkfifo/00.t delete mode 100755 tests/kern/fstest/tests/mkfifo/01.t delete mode 100755 tests/kern/fstest/tests/mkfifo/02.t delete mode 100755 tests/kern/fstest/tests/mkfifo/03.t delete mode 100755 tests/kern/fstest/tests/mkfifo/04.t delete mode 100755 tests/kern/fstest/tests/mkfifo/05.t delete mode 100755 tests/kern/fstest/tests/mkfifo/06.t delete mode 100755 tests/kern/fstest/tests/mkfifo/07.t delete mode 100755 tests/kern/fstest/tests/mkfifo/08.t delete mode 100755 tests/kern/fstest/tests/mkfifo/09.t delete mode 100755 tests/kern/fstest/tests/mkfifo/10.t delete mode 100755 tests/kern/fstest/tests/mkfifo/11.t delete mode 100755 tests/kern/fstest/tests/mkfifo/12.t delete mode 100755 tests/kern/fstest/tests/open/00.t delete mode 100755 tests/kern/fstest/tests/open/01.t delete mode 100755 tests/kern/fstest/tests/open/02.t delete mode 100755 tests/kern/fstest/tests/open/03.t delete mode 100755 tests/kern/fstest/tests/open/04.t delete mode 100755 tests/kern/fstest/tests/open/05.t delete mode 100755 tests/kern/fstest/tests/open/06.t delete mode 100755 tests/kern/fstest/tests/open/07.t delete mode 100755 tests/kern/fstest/tests/open/08.t delete mode 100755 tests/kern/fstest/tests/open/09.t delete mode 100755 tests/kern/fstest/tests/open/10.t delete mode 100755 tests/kern/fstest/tests/open/11.t delete mode 100755 tests/kern/fstest/tests/open/12.t delete mode 100755 tests/kern/fstest/tests/open/13.t delete mode 100755 tests/kern/fstest/tests/open/14.t delete mode 100755 tests/kern/fstest/tests/open/15.t delete mode 100755 tests/kern/fstest/tests/open/16.t delete mode 100755 tests/kern/fstest/tests/open/17.t delete mode 100755 tests/kern/fstest/tests/open/18.t delete mode 100755 tests/kern/fstest/tests/open/19.t delete mode 100755 tests/kern/fstest/tests/open/20.t delete mode 100755 tests/kern/fstest/tests/open/21.t delete mode 100755 tests/kern/fstest/tests/open/22.t delete mode 100755 tests/kern/fstest/tests/open/23.t delete mode 100755 tests/kern/fstest/tests/rename/00.t delete mode 100755 tests/kern/fstest/tests/rename/01.t delete mode 100755 tests/kern/fstest/tests/rename/02.t delete mode 100755 tests/kern/fstest/tests/rename/03.t delete mode 100755 tests/kern/fstest/tests/rename/04.t delete mode 100755 tests/kern/fstest/tests/rename/05.t delete mode 100755 tests/kern/fstest/tests/rename/06.t delete mode 100755 tests/kern/fstest/tests/rename/07.t delete mode 100755 tests/kern/fstest/tests/rename/08.t delete mode 100755 tests/kern/fstest/tests/rename/09.t delete mode 100755 tests/kern/fstest/tests/rename/10.t delete mode 100755 tests/kern/fstest/tests/rename/11.t delete mode 100755 tests/kern/fstest/tests/rename/12.t delete mode 100755 tests/kern/fstest/tests/rename/13.t delete mode 100755 tests/kern/fstest/tests/rename/14.t delete mode 100755 tests/kern/fstest/tests/rename/15.t delete mode 100755 tests/kern/fstest/tests/rename/16.t delete mode 100755 tests/kern/fstest/tests/rename/17.t delete mode 100755 tests/kern/fstest/tests/rename/18.t delete mode 100755 tests/kern/fstest/tests/rename/19.t delete mode 100755 tests/kern/fstest/tests/rename/20.t delete mode 100755 tests/kern/fstest/tests/rmdir/00.t delete mode 100755 tests/kern/fstest/tests/rmdir/01.t delete mode 100755 tests/kern/fstest/tests/rmdir/02.t delete mode 100755 tests/kern/fstest/tests/rmdir/03.t delete mode 100755 tests/kern/fstest/tests/rmdir/04.t delete mode 100755 tests/kern/fstest/tests/rmdir/05.t delete mode 100755 tests/kern/fstest/tests/rmdir/06.t delete mode 100755 tests/kern/fstest/tests/rmdir/07.t delete mode 100755 tests/kern/fstest/tests/rmdir/08.t delete mode 100755 tests/kern/fstest/tests/rmdir/09.t delete mode 100755 tests/kern/fstest/tests/rmdir/10.t delete mode 100755 tests/kern/fstest/tests/rmdir/11.t delete mode 100755 tests/kern/fstest/tests/rmdir/12.t delete mode 100755 tests/kern/fstest/tests/rmdir/13.t delete mode 100755 tests/kern/fstest/tests/rmdir/14.t delete mode 100755 tests/kern/fstest/tests/rmdir/15.t delete mode 100755 tests/kern/fstest/tests/symlink/00.t delete mode 100755 tests/kern/fstest/tests/symlink/01.t delete mode 100755 tests/kern/fstest/tests/symlink/02.t delete mode 100755 tests/kern/fstest/tests/symlink/03.t delete mode 100755 tests/kern/fstest/tests/symlink/04.t delete mode 100755 tests/kern/fstest/tests/symlink/05.t delete mode 100755 tests/kern/fstest/tests/symlink/06.t delete mode 100755 tests/kern/fstest/tests/symlink/07.t delete mode 100755 tests/kern/fstest/tests/symlink/08.t delete mode 100755 tests/kern/fstest/tests/symlink/09.t delete mode 100755 tests/kern/fstest/tests/symlink/10.t delete mode 100755 tests/kern/fstest/tests/symlink/11.t delete mode 100755 tests/kern/fstest/tests/symlink/12.t delete mode 100755 tests/kern/fstest/tests/truncate/00.t delete mode 100755 tests/kern/fstest/tests/truncate/01.t delete mode 100755 tests/kern/fstest/tests/truncate/02.t delete mode 100755 tests/kern/fstest/tests/truncate/03.t delete mode 100755 tests/kern/fstest/tests/truncate/04.t delete mode 100755 tests/kern/fstest/tests/truncate/05.t delete mode 100755 tests/kern/fstest/tests/truncate/06.t delete mode 100755 tests/kern/fstest/tests/truncate/07.t delete mode 100755 tests/kern/fstest/tests/truncate/08.t delete mode 100755 tests/kern/fstest/tests/truncate/09.t delete mode 100755 tests/kern/fstest/tests/truncate/10.t delete mode 100755 tests/kern/fstest/tests/truncate/11.t delete mode 100755 tests/kern/fstest/tests/truncate/12.t delete mode 100755 tests/kern/fstest/tests/truncate/13.t delete mode 100755 tests/kern/fstest/tests/truncate/14.t delete mode 100755 tests/kern/fstest/tests/unlink/00.t delete mode 100755 tests/kern/fstest/tests/unlink/01.t delete mode 100755 tests/kern/fstest/tests/unlink/02.t delete mode 100755 tests/kern/fstest/tests/unlink/03.t delete mode 100755 tests/kern/fstest/tests/unlink/04.t delete mode 100755 tests/kern/fstest/tests/unlink/05.t delete mode 100755 tests/kern/fstest/tests/unlink/06.t delete mode 100755 tests/kern/fstest/tests/unlink/07.t delete mode 100755 tests/kern/fstest/tests/unlink/08.t delete mode 100755 tests/kern/fstest/tests/unlink/09.t delete mode 100755 tests/kern/fstest/tests/unlink/10.t delete mode 100755 tests/kern/fstest/tests/unlink/11.t delete mode 100755 tests/kern/fstest/tests/unlink/12.t delete mode 100755 tests/kern/fstest/tests/unlink/13.t delete mode 100644 tests/kern/fsx/Makefile.am delete mode 100644 tests/kern/fsx/README delete mode 100644 tests/kern/fsx/fsx.c delete mode 100644 tests/kern/kconjoin.c delete mode 100755 tests/kern/runtest delete mode 100644 tests/kern/t28.exp delete mode 100755 tests/kern/t31 delete mode 100644 tests/kern/t31.exp delete mode 100755 tests/kern/t37 delete mode 100644 tests/kern/t37.exp delete mode 100755 tests/kern/t38 delete mode 100644 tests/kern/t38.exp delete mode 100755 tests/kern/t39 delete mode 100644 tests/kern/t39.exp diff --git a/Makefile.am b/Makefile.am index 416cd722..808cd182 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,8 +2,7 @@ SUBDIRS = \ src \ man \ etc \ - t \ - tests + t export DEB_BUILD_OPTIONS ?= nocheck terse deb: debian scripts/debbuild.sh diff --git a/configure.ac b/configure.ac index 9070ddb5..13840fa5 100644 --- a/configure.ac +++ b/configure.ac @@ -178,11 +178,6 @@ AC_CONFIG_FILES( \ src/cmd/Makefile \ src/Makefile \ t/Makefile \ - tests/Makefile \ - tests/kern/Makefile \ - tests/kern/fstest/Makefile \ - tests/kern/fsx/Makefile \ - tests/kern/fsstress/Makefile \ etc/Makefile \ ) diff --git a/tests/Makefile.am b/tests/Makefile.am deleted file mode 100644 index b0df4055..00000000 --- a/tests/Makefile.am +++ /dev/null @@ -1 +0,0 @@ -SUBDIRS = kern diff --git a/tests/kern/Makefile.am b/tests/kern/Makefile.am deleted file mode 100644 index 7d82918f..00000000 --- a/tests/kern/Makefile.am +++ /dev/null @@ -1,42 +0,0 @@ -check_PROGRAMS = \ - kconjoin - -SUBDIRS = fstest fsx fsstress - -AM_TESTS_ENVIRONMENT = \ - PATH_DIOD='$(top_builddir)/src/cmd/diod'; export PATH_DIOD; \ - PATH_MOUNT_DIOD='$(top_builddir)/src/cmd/mount.diod'; export PATH_MOUNT_DIOD; \ - KERN_SRCDIR='$(top_srcdir)/tests/kern'; export KERN_SRCDIR; \ - KERN_BUILDDIR='$(top_builddir)/tests/kern'; export KERN_BUILDDIR; \ - TOP_SRCDIR='$(top_srcdir)'; export TOP_SRCDIR; \ - TOP_BUILDDIR='$(top_builddir)'; export TOP_BUILDDIR; - -LOG_COMPILER = ${srcdir}/runtest - -TESTS = \ - t31 \ - t37 \ - t38 \ - t39 - -XFAIL_TESTS = - -CLEANFILES = *.out *.diff *.diod - -AM_CFLAGS = @WARNING_CFLAGS@ - -AM_CPPFLAGS = \ - -I$(top_srcdir) \ - $(MUNGE_CFLAGS) \ - $(CAP_CFLAGS) \ - $(LUA_INCLUDE) - - -LDADD = $(top_builddir)/src/libdiod/libdiod.a \ - $(top_builddir)/src/libnpfs/libnpfs.a \ - $(top_builddir)/src/liblsd/liblsd.a \ - $(LIBPTHREAD) $(LUA_LIB) $(MUNGE_LIBS) $(CAP_LIBS) $(LIBTCMALLOC) - -kconjoin_SOURCES = kconjoin.c $(common_sources) - -EXTRA_DIST = $(TESTS) $(TESTS:%=%.exp) runtest diff --git a/tests/kern/README b/tests/kern/README deleted file mode 100644 index 377a83ae..00000000 --- a/tests/kern/README +++ /dev/null @@ -1,20 +0,0 @@ -These tests all run the same way: - -- Makefile sets up environment and invokes test through ./runtest wrapper. -- ./runtest mounts ./exp.d on ./mnt.d (privately) and runs test script -- output goes to .out -- diod log goes to .diod -- .out is compared wtih .exp - -The tests are: -t19 Simple test to check that POSIX advisory record locks are properly - arbitrated between two processes. -t23 Simple test to check that POSIX advisory record locks are handled - as advertised within one process. -t31 Run fstest with server --no-userdb option (takes a couple minutes) -t34 Run an svnadmin create, which uncovered a bug in fsync -t37 Run fsx. -t38 Run fsstress. -t39 Run fsstress out of 9p, against host fs. -t48 Run fsx with mmap read test enabled -t49 Run fsx with mmap write test enabled diff --git a/tests/kern/fsstress/Makefile.am b/tests/kern/fsstress/Makefile.am deleted file mode 100644 index 2ab58fd9..00000000 --- a/tests/kern/fsstress/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -AM_CFLAGS = -w - -AM_CPPFLAGS = -DNO_XFS -D_LARGEFILE64_SOURCE -D_GNU_SOURCE - -check_PROGRAMS = fsstress - -fsstress_SOURCES = fsstress.c global.h xfscompat.h diff --git a/tests/kern/fsstress/fsstress.c b/tests/kern/fsstress/fsstress.c deleted file mode 100644 index 004ff42f..00000000 --- a/tests/kern/fsstress/fsstress.c +++ /dev/null @@ -1,2657 +0,0 @@ -/* - * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * Further, this software is distributed without any warranty that it is - * free of the rightful claim of any third person regarding infringement - * or the like. Any license provided herein, whether implied or - * otherwise, applies only to this software file. Patent licenses, if - * any, provided herein do not apply to combinations of this program with - * other software, or any other product whatsoever. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write the Free Software Foundation, Inc., 59 - * Temple Place - Suite 330, Boston MA 02111-1307, USA. - * - * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, - * Mountain View, CA 94043, or: - * - * http://www.sgi.com - * - * For further information regarding this notice, see: - * - * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ - */ - -#include "global.h" - -#define XFS_ERRTAG_MAX 17 - -typedef enum { -#ifndef NO_XFS - OP_ALLOCSP, - OP_ATTR_REMOVE, - OP_ATTR_SET, - OP_BULKSTAT, - OP_BULKSTAT1, -#endif - OP_CHOWN, - OP_CREAT, - OP_DREAD, - OP_DWRITE, - OP_FDATASYNC, -#ifndef NO_XFS - OP_FREESP, -#endif - OP_FSYNC, - OP_GETDENTS, - OP_LINK, - OP_MKDIR, - OP_MKNOD, - OP_READ, - OP_READLINK, - OP_RENAME, -#ifndef NO_XFS - OP_RESVSP, -#endif - OP_RMDIR, - OP_STAT, - OP_SYMLINK, - OP_SYNC, - OP_TRUNCATE, - OP_UNLINK, -#ifndef NO_XFS - OP_UNRESVSP, -#endif - OP_WRITE, - OP_LAST -} opty_t; - -typedef void (*opfnc_t)(int, long); - -typedef struct opdesc { - opty_t op; - char *name; - opfnc_t func; - int freq; - int iswrite; - int isxfs; -} opdesc_t; - -typedef struct fent { - int id; - int parent; -} fent_t; - -typedef struct flist { - int nfiles; - int nslots; - int tag; - fent_t *fents; -} flist_t; - -typedef struct pathname { - int len; - char *path; -} pathname_t; - -#define FT_DIR 0 -#define FT_DIRm (1 << FT_DIR) -#define FT_REG 1 -#define FT_REGm (1 << FT_REG) -#define FT_SYM 2 -#define FT_SYMm (1 << FT_SYM) -#define FT_DEV 3 -#define FT_DEVm (1 << FT_DEV) -#define FT_RTF 4 -#define FT_RTFm (1 << FT_RTF) -#define FT_nft 5 -#define FT_ANYm ((1 << FT_nft) - 1) -#define FT_REGFILE (FT_REGm | FT_RTFm) -#define FT_NOTDIR (FT_ANYm & ~FT_DIRm) - -#define FLIST_SLOT_INCR 16 -#define NDCACHE 64 - -#define MAXFSIZE ((1ULL << 63) - 1ULL) -#define MAXFSIZE32 ((1ULL << 40) - 1ULL) - -void allocsp_f(int, long); -void attr_remove_f(int, long); -void attr_set_f(int, long); -void bulkstat_f(int, long); -void bulkstat1_f(int, long); -void chown_f(int, long); -void creat_f(int, long); -void dread_f(int, long); -void dwrite_f(int, long); -void fdatasync_f(int, long); -void freesp_f(int, long); -void fsync_f(int, long); -void getdents_f(int, long); -void link_f(int, long); -void mkdir_f(int, long); -void mknod_f(int, long); -void read_f(int, long); -void readlink_f(int, long); -void rename_f(int, long); -void resvsp_f(int, long); -void rmdir_f(int, long); -void stat_f(int, long); -void symlink_f(int, long); -void sync_f(int, long); -void truncate_f(int, long); -void unlink_f(int, long); -void unresvsp_f(int, long); -void write_f(int, long); - -opdesc_t ops[] = { -#ifndef NO_XFS - { OP_ALLOCSP, "allocsp", allocsp_f, 1, 1, 1 }, - { OP_ATTR_REMOVE, "attr_remove", attr_remove_f, /* 1 */ 0, 1, 1 }, - { OP_ATTR_SET, "attr_set", attr_set_f, /* 2 */ 0, 1, 1 }, - { OP_BULKSTAT, "bulkstat", bulkstat_f, 1, 0, 1 }, - { OP_BULKSTAT1, "bulkstat1", bulkstat1_f, 1, 0, 1 }, -#endif - { OP_CHOWN, "chown", chown_f, 3, 1 }, - { OP_CREAT, "creat", creat_f, 4, 1 }, - { OP_DREAD, "dread", dread_f, 4, 0 }, - { OP_DWRITE, "dwrite", dwrite_f, 4, 1 }, - { OP_FDATASYNC, "fdatasync", fdatasync_f, 1, 1 }, -#ifndef NO_XFS - { OP_FREESP, "freesp", freesp_f, 1, 1, 1 }, -#endif - { OP_FSYNC, "fsync", fsync_f, 1, 1 }, - { OP_GETDENTS, "getdents", getdents_f, 1, 0 }, - { OP_LINK, "link", link_f, 1, 1 }, - { OP_MKDIR, "mkdir", mkdir_f, 2, 1 }, - { OP_MKNOD, "mknod", mknod_f, 2, 1 }, - { OP_READ, "read", read_f, 1, 0 }, - { OP_READLINK, "readlink", readlink_f, 1, 0 }, - { OP_RENAME, "rename", rename_f, 2, 1 }, -#ifndef NO_XFS - { OP_RESVSP, "resvsp", resvsp_f, 1, 1, 1 }, -#endif - { OP_RMDIR, "rmdir", rmdir_f, 1, 1 }, - { OP_STAT, "stat", stat_f, 1, 0 }, - { OP_SYMLINK, "symlink", symlink_f, 2, 1 }, - { OP_SYNC, "sync", sync_f, 1, 0 }, - { OP_TRUNCATE, "truncate", truncate_f, 2, 1 }, - { OP_UNLINK, "unlink", unlink_f, 1, 1 }, -#ifndef NO_XFS - { OP_UNRESVSP, "unresvsp", unresvsp_f, 1, 1, 1 }, -#endif - { OP_WRITE, "write", write_f, 4, 1 }, -}, *ops_end; - -flist_t flist[FT_nft] = { - { 0, 0, 'd', NULL }, - { 0, 0, 'f', NULL }, - { 0, 0, 'l', NULL }, - { 0, 0, 'c', NULL }, - { 0, 0, 'r', NULL }, -}; - -int dcache[NDCACHE]; -int errrange; -int errtag; -opty_t *freq_table; -int freq_table_size; -#ifndef NO_XFS -xfs_fsop_geom_t geom; -#endif -char *homedir; -int *ilist; -int ilistlen; -off64_t maxfsize; -char *myprog; -int namerand; -int nameseq; -int nops; -int nproc = 1; -int operations = 1; -int procid; -int rtpct; -unsigned long seed = 0; -ino_t top_ino; -int verbose = 0; -#ifndef NO_XFS -int no_xfs = 0; -#else -int no_xfs = 1; -#endif - -void add_to_flist(int, int, int); -void append_pathname(pathname_t *, char *); -#ifndef NO_XFS -int attr_list_path(pathname_t *, char *, const int, int, - attrlist_cursor_t *); -int attr_remove_path(pathname_t *, const char *, int); -int attr_set_path(pathname_t *, const char *, const char *, const int, int); -#endif -void check_cwd(void); -int creat_path(pathname_t *, mode_t); -void dcache_enter(int, int); -void dcache_init(void); -fent_t *dcache_lookup(int); -void dcache_purge(int); -void del_from_flist(int, int); -int dirid_to_name(char *, int); -void doproc(void); -void fent_to_name(pathname_t *, flist_t *, fent_t *); -void fix_parent(int, int); -void free_pathname(pathname_t *); -int generate_fname(fent_t *, int, pathname_t *, int *, int *); -int get_fname(int, long, pathname_t *, flist_t **, fent_t **, int *); -void init_pathname(pathname_t *); -int lchown_path(pathname_t *, uid_t, gid_t); -int link_path(pathname_t *, pathname_t *); -int lstat64_path(pathname_t *, struct stat64 *); -void make_freq_table(void); -int mkdir_path(pathname_t *, mode_t); -int mknod_path(pathname_t *, mode_t, dev_t); -void namerandpad(int, char *, int); -int open_path(pathname_t *, int); -DIR *opendir_path(pathname_t *); -void process_freq(char *); -int readlink_path(pathname_t *, char *, size_t); -int rename_path(pathname_t *, pathname_t *); -int rmdir_path(pathname_t *); -void separate_pathname(pathname_t *, char *, pathname_t *); -void show_ops(int, char *); -int stat64_path(pathname_t *, struct stat64 *); -int symlink_path(const char *, pathname_t *); -int truncate64_path(pathname_t *, off64_t); -int unlink_path(pathname_t *); -void usage(void); -void write_freq(void); -void zero_freq(void); - -int main(int argc, char **argv) -{ - char buf[10]; - int c; - char *dirname = NULL; - int fd; - int i; - int cleanup = 0; - int loops = 1; - int loopcntr = 1; - char cmd[256]; -#ifndef NO_XFS - int j; -#endif - char *p; - int stat; - struct timeval t; -#ifndef NO_XFS - ptrdiff_t srval; -#endif - int nousage=0; -#ifndef NO_XFS - xfs_error_injection_t err_inj; -#endif - - errrange = errtag = 0; - umask(0); - nops = sizeof(ops) / sizeof(ops[0]); - ops_end = &ops[nops]; - myprog = argv[0]; - while ((c = getopt(argc, argv, "cd:e:f:i:l:n:p:rs:vwzHSX")) != -1) { - switch (c) { - case 'c': - /*Don't cleanup*/ - cleanup=1; - break; - case 'd': - dirname = optarg; - break; - case 'e': - sscanf(optarg, "%d", &errtag); - if (errtag < 0) { - errtag = -errtag; - errrange = 1; - } else if (errtag == 0) - errtag = -1; - if (errtag >= XFS_ERRTAG_MAX) { - fprintf(stderr, - "error tag %d too large (max %d)\n", - errtag, XFS_ERRTAG_MAX - 1); - exit(1); - } - break; - case 'f': - process_freq(optarg); - break; - case 'i': - ilist = realloc(ilist, ++ilistlen * sizeof(*ilist)); - ilist[ilistlen - 1] = strtol(optarg, &p, 16); - break; - case 'l': - loops = atoi(optarg); - break; - case 'n': - operations = atoi(optarg); - break; - case 'p': - nproc = atoi(optarg); - break; - case 'r': - namerand = 1; - break; - case 's': - seed = strtoul(optarg, NULL, 0); - break; - case 'v': - verbose = 1; - break; - case 'w': - write_freq(); - break; - case 'z': - zero_freq(); - break; - case 'S': - show_ops(0, NULL); - printf("\n"); - nousage=1; - break; - case '?': - fprintf(stderr, "%s - invalid parameters\n", - myprog); - /* fall through */ - case 'H': - usage(); - exit(1); - case 'X': - no_xfs = 1; - break; - } - } - - if (no_xfs && errtag) { - fprintf(stderr, "error injection only works on XFS\n"); - exit(1); - } - - if (no_xfs) { - int i; - for (i = 0; ops+i < ops_end; ++i) { - if (ops[i].isxfs) - ops[i].freq = 0; - } - } - - make_freq_table(); - - while ((loopcntr <= loops) || (loops == 0)) - { - if (!dirname) { - /* no directory specified */ - if (!nousage) usage(); - exit(1); - } - - (void)mkdir(dirname, 0777); - if (chdir(dirname) < 0) { - perror(dirname); - exit(1); - } - sprintf(buf, "fss%x", getpid()); - fd = creat(buf, 0666); - if (lseek64(fd, (off64_t)(MAXFSIZE32 + 1ULL), SEEK_SET) < 0) - maxfsize = (off64_t)MAXFSIZE32; - else - maxfsize = (off64_t)MAXFSIZE; - dcache_init(); - setlinebuf(stdout); - if (!seed) { - gettimeofday(&t, NULL); - seed = (int)t.tv_sec ^ (int)t.tv_usec; - //printf("seed = %ld\n", seed); - } -#ifndef NO_XFS - if (!no_xfs) { - i = ioctl(fd, XFS_IOC_FSGEOMETRY, &geom); - if (i >= 0 && geom.rtblocks) - rtpct = MIN(MAX(geom.rtblocks * 100 / - (geom.rtblocks + geom.datablocks), 1), 99); - else - rtpct = 0; - } - if (errtag != 0) { - if (errrange == 0) { - if (errtag <= 0) { - srandom(seed); - j = random() % 100; - - for (i = 0; i < j; i++) - (void) random(); - - errtag = (random() % (XFS_ERRTAG_MAX-1)) + 1; - } - } else { - srandom(seed); - j = random() % 100; - - for (i = 0; i < j; i++) - (void) random(); - - errtag += (random() % (XFS_ERRTAG_MAX - errtag)); - } - printf("Injecting failure on tag #%d\n", errtag); - err_inj.errtag = errtag; - err_inj.fd = fd; - srval = ioctl(fd, XFS_IOC_ERROR_INJECTION, &err_inj); - if (srval < -1) { - perror("fsstress - XFS_SYSSGI error injection call"); - close(fd); - unlink(buf); - exit(1); - } - } else -#endif - close(fd); - unlink(buf); - if (nproc == 1) { - procid = 0; - doproc(); - } else { - for (i = 0; i < nproc; i++) { - if (fork() == 0) { - procid = i; - doproc(); - return 0; - } - } - while (wait(&stat) > 0) - continue; - } -#ifndef NO_XFS - if (errtag != 0) { - err_inj.errtag = 0; - err_inj.fd = fd; - if ((srval = ioctl(fd, XFS_IOC_ERROR_CLEARALL, &err_inj)) != 0) { - fprintf(stderr, "Bad ej clear on %d (%d).\n", fd, errno); - perror("fsstress - XFS_SYSSGI clear error injection call"); - close(fd); - exit(1); - } - close(fd); - } -#endif - if (cleanup == 0) - { - sprintf(cmd,"rm -rf %s/*",dirname); - system(cmd); - for (i = 0; i < FT_nft; i++) { - flist[i].nslots = 0; - flist[i].nfiles = 0; - free(flist[i].fents); - flist[i].fents = NULL; - } - } - loopcntr++; - } - return 0; -} - -void -add_to_flist(int ft, int id, int parent) -{ - fent_t *fep; - flist_t *ftp; - - ftp = &flist[ft]; - if (ftp->nfiles == ftp->nslots) { - ftp->nslots += FLIST_SLOT_INCR; - ftp->fents = realloc(ftp->fents, ftp->nslots * sizeof(fent_t)); - } - fep = &ftp->fents[ftp->nfiles++]; - fep->id = id; - fep->parent = parent; -} - -void -append_pathname(pathname_t *name, char *str) -{ - int len; - - len = strlen(str); -#ifdef DEBUG - if (len && *str == '/' && name->len == 0) { - fprintf(stderr, "fsstress: append_pathname failure\n"); - chdir(homedir); - abort(); - - } -#endif - name->path = realloc(name->path, name->len + 1 + len); - strcpy(&name->path[name->len], str); - name->len += len; -} - -#ifndef NO_XFS -int -attr_list_path(pathname_t *name, char *buffer, const int buffersize, int flags, - attrlist_cursor_t *cursor) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = attr_list(name->path, buffer, buffersize, flags, cursor); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = attr_list_path(&newname, buffer, buffersize, flags, - cursor); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -int -attr_remove_path(pathname_t *name, const char *attrname, int flags) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = attr_remove(name->path, attrname, flags); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = attr_remove_path(&newname, attrname, flags); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -int -attr_set_path(pathname_t *name, const char *attrname, const char *attrvalue, - const int valuelength, int flags) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = attr_set(name->path, attrname, attrvalue, valuelength, flags); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = attr_set_path(&newname, attrname, attrvalue, valuelength, - flags); - chdir(".."); - } - free_pathname(&newname); - return rval; -} -#endif - -void -check_cwd(void) -{ -#ifdef DEBUG - struct stat64 statbuf; - - if (stat64(".", &statbuf) == 0 && statbuf.st_ino == top_ino) - return; - chdir(homedir); - fprintf(stderr, "fsstress: check_cwd failure\n"); - abort(); - -#endif -} - -int -creat_path(pathname_t *name, mode_t mode) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = creat(name->path, mode); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = creat_path(&newname, mode); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -void -dcache_enter(int dirid, int slot) -{ - dcache[dirid % NDCACHE] = slot; -} - -void -dcache_init(void) -{ - int i; - - for (i = 0; i < NDCACHE; i++) - dcache[i] = -1; -} - -fent_t * -dcache_lookup(int dirid) -{ - fent_t *fep; - int i; - - i = dcache[dirid % NDCACHE]; - if (i >= 0 && (fep = &flist[FT_DIR].fents[i])->id == dirid) - return fep; - return NULL; -} - -void -dcache_purge(int dirid) -{ - int *dcp; - - dcp = &dcache[dirid % NDCACHE]; - if (*dcp >= 0 && flist[FT_DIR].fents[*dcp].id == dirid) - *dcp = -1; -} - -void -del_from_flist(int ft, int slot) -{ - flist_t *ftp; - - ftp = &flist[ft]; - if (ft == FT_DIR) - dcache_purge(ftp->fents[slot].id); - if (slot != ftp->nfiles - 1) { - if (ft == FT_DIR) - dcache_purge(ftp->fents[ftp->nfiles - 1].id); - ftp->fents[slot] = ftp->fents[--ftp->nfiles]; - } else - ftp->nfiles--; -} - -fent_t * -dirid_to_fent(int dirid) -{ - fent_t *efep; - fent_t *fep; - flist_t *flp; - - if ((fep = dcache_lookup(dirid))) - return fep; - flp = &flist[FT_DIR]; - for (fep = flp->fents, efep = &fep[flp->nfiles]; fep < efep; fep++) { - if (fep->id == dirid) { - dcache_enter(dirid, fep - flp->fents); - return fep; - } - } - return NULL; -} - -void -doproc(void) -{ - struct stat64 statbuf; - char buf[10]; - int opno; - int rval; - opdesc_t *p; - - sprintf(buf, "p%x", procid); - (void)mkdir(buf, 0777); - if (chdir(buf) < 0 || stat64(".", &statbuf) < 0) { - perror(buf); - _exit(1); - } - top_ino = statbuf.st_ino; - homedir = getcwd(NULL, -1); - seed += procid; - srandom(seed); - if (namerand) - namerand = random(); - for (opno = 0; opno < operations; opno++) { - p = &ops[freq_table[random() % freq_table_size]]; - if ((unsigned long)p->func < 4096) abort(); - - p->func(opno, random()); - /* - * test for forced shutdown by stat'ing the test - * directory. If this stat returns EIO, assume - * the forced shutdown happened. - */ - if (errtag != 0 && opno % 100 == 0) { - rval = stat64(".", &statbuf); - if (rval == EIO) { - fprintf(stderr, "Detected EIO\n"); - return; - } - } - } -} - -void -fent_to_name(pathname_t *name, flist_t *flp, fent_t *fep) -{ - char buf[MAXNAMELEN]; - int i; - fent_t *pfep; - - if (fep == NULL) - return; - if (fep->parent != -1) { - pfep = dirid_to_fent(fep->parent); - fent_to_name(name, &flist[FT_DIR], pfep); - append_pathname(name, "/"); - } - i = sprintf(buf, "%c%x", flp->tag, fep->id); - namerandpad(fep->id, buf, i); - append_pathname(name, buf); -} - -void -fix_parent(int oldid, int newid) -{ - fent_t *fep; - flist_t *flp; - int i; - int j; - - for (i = 0, flp = flist; i < FT_nft; i++, flp++) { - for (j = 0, fep = flp->fents; j < flp->nfiles; j++, fep++) { - if (fep->parent == oldid) - fep->parent = newid; - } - } -} - -void -free_pathname(pathname_t *name) -{ - if (name->path) { - free(name->path); - name->path = NULL; - name->len = 0; - } -} - -int -generate_fname(fent_t *fep, int ft, pathname_t *name, int *idp, int *v) -{ - char buf[MAXNAMELEN]; - flist_t *flp; - int id; - int j; - int len; - - flp = &flist[ft]; - len = sprintf(buf, "%c%x", flp->tag, id = nameseq++); - namerandpad(id, buf, len); - if (fep) { - fent_to_name(name, &flist[FT_DIR], fep); - append_pathname(name, "/"); - } - append_pathname(name, buf); - *idp = id; - *v = verbose; - for (j = 0; !*v && j < ilistlen; j++) { - if (ilist[j] == id) { - *v = 1; - break; - } - } - return 1; -} - -int -get_fname(int which, long r, pathname_t *name, flist_t **flpp, fent_t **fepp, - int *v) -{ - int c; - fent_t *fep; - flist_t *flp; - int i; - int j; - int x; - - for (i = 0, c = 0, flp = flist; i < FT_nft; i++, flp++) { - if (which & (1 << i)) - c += flp->nfiles; - } - if (c == 0) { - if (flpp) - *flpp = NULL; - if (fepp) - *fepp = NULL; - *v = verbose; - return 0; - } - x = (int)(r % c); - for (i = 0, c = 0, flp = flist; i < FT_nft; i++, flp++) { - if (which & (1 << i)) { - if (x < c + flp->nfiles) { - fep = &flp->fents[x - c]; - if (name) - fent_to_name(name, flp, fep); - if (flpp) - *flpp = flp; - if (fepp) - *fepp = fep; - *v = verbose; - for (j = 0; !*v && j < ilistlen; j++) { - if (ilist[j] == fep->id) { - *v = 1; - break; - } - } - return 1; - } - c += flp->nfiles; - } - } -#ifdef DEBUG - fprintf(stderr, "fsstress: get_fname failure\n"); - abort(); -#endif - return -1; - -} - -void -init_pathname(pathname_t *name) -{ - name->len = 0; - name->path = NULL; -} - -int -lchown_path(pathname_t *name, uid_t owner, gid_t group) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = lchown(name->path, owner, group); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = lchown_path(&newname, owner, group); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -int -link_path(pathname_t *name1, pathname_t *name2) -{ - char buf1[MAXNAMELEN]; - char buf2[MAXNAMELEN]; - int down1; - pathname_t newname1; - pathname_t newname2; - int rval; - - rval = link(name1->path, name2->path); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name1, buf1, &newname1); - separate_pathname(name2, buf2, &newname2); - if (strcmp(buf1, buf2) == 0) { - if (chdir(buf1) == 0) { - rval = link_path(&newname1, &newname2); - chdir(".."); - } - } else { - if (strcmp(buf1, "..") == 0) - down1 = 0; - else if (strcmp(buf2, "..") == 0) - down1 = 1; - else if (strlen(buf1) == 0) - down1 = 0; - else if (strlen(buf2) == 0) - down1 = 1; - else - down1 = MAX(newname1.len, 3 + name2->len) <= - MAX(3 + name1->len, newname2.len); - if (down1) { - free_pathname(&newname2); - append_pathname(&newname2, "../"); - append_pathname(&newname2, name2->path); - if (chdir(buf1) == 0) { - rval = link_path(&newname1, &newname2); - chdir(".."); - } - } else { - free_pathname(&newname1); - append_pathname(&newname1, "../"); - append_pathname(&newname1, name1->path); - if (chdir(buf2) == 0) { - rval = link_path(&newname1, &newname2); - chdir(".."); - } - } - } - free_pathname(&newname1); - free_pathname(&newname2); - return rval; -} - -int -lstat64_path(pathname_t *name, struct stat64 *sbuf) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = lstat64(name->path, sbuf); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = lstat64_path(&newname, sbuf); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -void -make_freq_table(void) -{ - int f; - int i; - opdesc_t *p; - - for (p = ops, f = 0; p < ops_end; p++) - f += p->freq; - freq_table = malloc(f * sizeof(*freq_table)); - freq_table_size = f; - for (p = ops, i = 0; p < ops_end; p++) { - for (f = 0; f < p->freq; f++, i++) - freq_table[i] = p->op; - } -} - -int -mkdir_path(pathname_t *name, mode_t mode) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = mkdir(name->path, mode); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = mkdir_path(&newname, mode); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -int -mknod_path(pathname_t *name, mode_t mode, dev_t dev) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = mknod(name->path, mode, dev); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = mknod_path(&newname, mode, dev); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -void -namerandpad(int id, char *buf, int i) -{ - int bucket; - static int buckets[] = - { 2, 4, 8, 16, 32, 64, 128, MAXNAMELEN - 1 }; - int padlen; - int padmod; - - if (namerand == 0) - return; - bucket = (id ^ namerand) % (sizeof(buckets) / sizeof(buckets[0])); - padmod = buckets[bucket] + 1 - i; - if (padmod <= 0) - return; - padlen = (id ^ namerand) % padmod; - if (padlen) { - memset(&buf[i], 'X', padlen); - buf[i + padlen] = '\0'; - } -} - -int -open_path(pathname_t *name, int oflag) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = open(name->path, oflag); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = open_path(&newname, oflag); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -DIR * -opendir_path(pathname_t *name) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - DIR *rval; - - rval = opendir(name->path); - if (rval || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = opendir_path(&newname); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -void -process_freq(char *arg) -{ - opdesc_t *p; - char *s; - - s = strchr(arg, '='); - if (s == NULL) { - fprintf(stderr, "bad argument '%s'\n", arg); - exit(1); - } - *s++ = '\0'; - for (p = ops; p < ops_end; p++) { - if (strcmp(arg, p->name) == 0) { - p->freq = atoi(s); - return; - } - } - fprintf(stderr, "can't find op type %s for -f\n", arg); - exit(1); -} - -int -readlink_path(pathname_t *name, char *lbuf, size_t lbufsiz) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = readlink(name->path, lbuf, lbufsiz); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = readlink_path(&newname, lbuf, lbufsiz); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -int -rename_path(pathname_t *name1, pathname_t *name2) -{ - char buf1[MAXNAMELEN]; - char buf2[MAXNAMELEN]; - int down1; - pathname_t newname1; - pathname_t newname2; - int rval; - - rval = rename(name1->path, name2->path); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name1, buf1, &newname1); - separate_pathname(name2, buf2, &newname2); - if (strcmp(buf1, buf2) == 0) { - if (chdir(buf1) == 0) { - rval = rename_path(&newname1, &newname2); - chdir(".."); - } - } else { - if (strcmp(buf1, "..") == 0) - down1 = 0; - else if (strcmp(buf2, "..") == 0) - down1 = 1; - else if (strlen(buf1) == 0) - down1 = 0; - else if (strlen(buf2) == 0) - down1 = 1; - else - down1 = MAX(newname1.len, 3 + name2->len) <= - MAX(3 + name1->len, newname2.len); - if (down1) { - free_pathname(&newname2); - append_pathname(&newname2, "../"); - append_pathname(&newname2, name2->path); - if (chdir(buf1) == 0) { - rval = rename_path(&newname1, &newname2); - chdir(".."); - } - } else { - free_pathname(&newname1); - append_pathname(&newname1, "../"); - append_pathname(&newname1, name1->path); - if (chdir(buf2) == 0) { - rval = rename_path(&newname1, &newname2); - chdir(".."); - } - } - } - free_pathname(&newname1); - free_pathname(&newname2); - return rval; -} - -int -rmdir_path(pathname_t *name) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = rmdir(name->path); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = rmdir_path(&newname); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -void -separate_pathname(pathname_t *name, char *buf, pathname_t *newname) -{ - char *slash; - - init_pathname(newname); - slash = strchr(name->path, '/'); - if (slash == NULL) { - buf[0] = '\0'; - return; - } - *slash = '\0'; - strcpy(buf, name->path); - *slash = '/'; - append_pathname(newname, slash + 1); -} - -#define WIDTH 80 - -void -show_ops(int flag, char *lead_str) -{ - opdesc_t *p; - - if (flag<0) { - /* print in list form */ - int x = WIDTH; - - for (p = ops; p < ops_end; p++) { - if (lead_str != NULL && x+strlen(p->name)>=WIDTH-5) - x=printf("%s%s", (p==ops)?"":"\n", lead_str); - x+=printf("%s ", p->name); - } - printf("\n"); - } else { - int f; - for (f = 0, p = ops; p < ops_end; p++) - f += p->freq; - - if (f == 0) - flag = 1; - - for (p = ops; p < ops_end; p++) { - if (flag != 0 || p->freq > 0) { - if (lead_str != NULL) - printf("%s", lead_str); - printf("%20s %d/%d %s\n", - p->name, p->freq, f, - (p->iswrite == 0) ? " " : "write op"); - } - } - } -} - -int -stat64_path(pathname_t *name, struct stat64 *sbuf) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = stat64(name->path, sbuf); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = stat64_path(&newname, sbuf); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -int -symlink_path(const char *name1, pathname_t *name) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - if (!strcmp(name1, name->path)) { - printf("yikes! %s %s\n", name1, name->path); - return 0; - } - - rval = symlink(name1, name->path); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = symlink_path(name1, &newname); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -int -truncate64_path(pathname_t *name, off64_t length) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = truncate64(name->path, length); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = truncate64_path(&newname, length); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -int -unlink_path(pathname_t *name) -{ - char buf[MAXNAMELEN]; - pathname_t newname; - int rval; - - rval = unlink(name->path); - if (rval >= 0 || errno != ENAMETOOLONG) - return rval; - separate_pathname(name, buf, &newname); - if (chdir(buf) == 0) { - rval = unlink_path(&newname); - chdir(".."); - } - free_pathname(&newname); - return rval; -} - -void -usage(void) -{ - printf("Usage: %s -H or\n", myprog); - printf(" %s [-c][-d dir][-e errtg][-f op_name=freq][-l loops][-n nops]\n", - myprog); - printf(" [-p nproc][-r len][-s seed][-v][-w][-z][-S]\n"); - printf("where\n"); - printf(" -c specifies not to remove files(cleanup) after execution\n"); - printf(" -d dir specifies the base directory for operations\n"); - printf(" -e errtg specifies error injection stuff\n"); - printf(" -f op_name=freq changes the frequency of option name to freq\n"); - printf(" the valid operation names are:\n"); - show_ops(-1, " "); - printf(" -l loops specifies the no. of times the testrun should loop.\n"); - printf(" *use 0 for infinite (default 1)\n"); - printf(" -n nops specifies the no. of operations per process (default 1)\n"); - printf(" -p nproc specifies the no. of processes (default 1)\n"); - printf(" -r specifies random name padding\n"); - printf(" -s seed specifies the seed for the random generator (default random)\n"); - printf(" -v specifies verbose mode\n"); - printf(" -w zeros frequencies of non-write operations\n"); - printf(" -z zeros frequencies of all operations\n"); - printf(" -S prints the table of operations (omitting zero frequency)\n"); - printf(" -H prints usage and exits\n"); - printf(" -X don't do anything XFS specific (default with -DNO_XFS)\n"); -} - -void -write_freq(void) -{ - opdesc_t *p; - - for (p = ops; p < ops_end; p++) { - if (!p->iswrite) - p->freq = 0; - } -} - -void -zero_freq(void) -{ - opdesc_t *p; - - for (p = ops; p < ops_end; p++) - p->freq = 0; -} - -#ifndef NO_XFS - -void -allocsp_f(int opno, long r) -{ - int e; - pathname_t f; - int fd; - struct flock64 fl; - __int64_t lr; - off64_t off; - struct stat64 stb; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: allocsp - no filename\n", procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_RDWR); - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: allocsp - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - if (fstat64(fd, &stb) < 0) { - if (v) - printf("%d/%d: allocsp - fstat64 %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } - lr = ((__int64_t)random() << 32) + random(); - off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); - off %= maxfsize; - fl.l_whence = SEEK_SET; - fl.l_start = off; - fl.l_len = 0; - e = ioctl(fd, XFS_IOC_ALLOCSP64, &fl) < 0 ? errno : 0; - if (v) - printf("%d/%d: ioctl(XFS_IOC_ALLOCSP64) %s %lld 0 %d\n", - procid, opno, f.path, off, e); - free_pathname(&f); - close(fd); -} - -void -attr_remove_f(int opno, long r) -{ - attrlist_ent_t *aep; - attrlist_t *alist; - char *aname; - char buf[4096]; - attrlist_cursor_t cursor; - int e; - int ent; - pathname_t f; - int total; - int v; - int which; - - init_pathname(&f); - if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) - append_pathname(&f, "."); - total = 0; - memset(&cursor, 0x00, sizeof(cursor)); - do { - e = attr_list_path(&f, buf, sizeof(buf), ATTR_DONTFOLLOW, - &cursor); - check_cwd(); - if (e) - break; - alist = (attrlist_t *)buf; - total += alist->al_count; - } while (alist->al_more); - if (total == 0) { - if (v) - printf("%d/%d: attr_remove - no attrs for %s\n", - procid, opno, f.path); - free_pathname(&f); - return; - } - which = (int)(random() % total); - memset(&cursor, 0x00, sizeof(cursor)); - ent = 0; - aname = NULL; - do { - e = attr_list_path(&f, buf, sizeof(buf), ATTR_DONTFOLLOW, - &cursor); - check_cwd(); - if (e) - break; - alist = (attrlist_t *)buf; - if (which < ent + alist->al_count) { - aep = (attrlist_ent_t *) - &buf[alist->al_offset[which - ent]]; - aname = aep->a_name; - break; - } - ent += alist->al_count; - } while (alist->al_more); - if (aname == NULL) { - if (v) - printf( - "%d/%d: attr_remove - name %d not found at %s\n", - procid, opno, which, f.path); - free_pathname(&f); - return; - } - e = attr_remove_path(&f, aname, ATTR_DONTFOLLOW) < 0 ? errno : 0; - check_cwd(); - if (v) - printf("%d/%d: attr_remove %s %s %d\n", - procid, opno, f.path, aname, e); - free_pathname(&f); -} - -void -attr_set_f(int opno, long r) -{ - char aname[10]; - char *aval; - int e; - pathname_t f; - int len; - static int lengths[] = { 10, 100, 1000, 10000 }; - int li; - int v; - - init_pathname(&f); - if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) - append_pathname(&f, "."); - sprintf(aname, "a%x", nameseq++); - li = (int)(random() % (sizeof(lengths) / sizeof(lengths[0]))); - len = (int)(random() % lengths[li]); - if (len == 0) - len = 1; - aval = malloc(len); - memset(aval, nameseq & 0xff, len); - e = attr_set_path(&f, aname, aval, len, ATTR_DONTFOLLOW) < 0 ? - errno : 0; - check_cwd(); - free(aval); - if (v) - printf("%d/%d: attr_set %s %s %d\n", procid, opno, f.path, - aname, e); - free_pathname(&f); -} - -void -bulkstat_f(int opno, long r) -{ - int count; - int fd; - __uint64_t last; - int nent; - xfs_bstat_t *t; - __int64_t total; - xfs_fsop_bulkreq_t bsr; - - last = 0; - nent = (r % 999) + 2; - t = malloc(nent * sizeof(*t)); - fd = open(".", O_RDONLY); - total = 0; - - bsr.lastip=&last; - bsr.icount=nent; - bsr.ubuffer=t; - bsr.ocount=&count; - - while (ioctl(fd, XFS_IOC_FSBULKSTAT, &bsr) == 0 && count > 0) - total += count; - free(t); - if (verbose) - printf("%d/%d: bulkstat nent %d total %lld\n", - procid, opno, nent, total); - close(fd); -} - -void -bulkstat1_f(int opno, long r) -{ - int e; - pathname_t f; - int fd; - int good; - __uint64_t ino; - struct stat64 s; - xfs_bstat_t t; - int v; - xfs_fsop_bulkreq_t bsr; - - good = random() & 1; - if (good) { - /* use an inode we know exists */ - init_pathname(&f); - if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) - append_pathname(&f, "."); - ino = stat64_path(&f, &s) < 0 ? (ino64_t)r : s.st_ino; - check_cwd(); - free_pathname(&f); - } else { - /* - * pick a random inode - * - * note this can generate kernel warning messages - * since bulkstat_one will read the disk block that - * would contain a given inode even if that disk - * block doesn't contain inodes. - * - * this is detected later, but not until after the - * warning is displayed. - * - * "XFS: device 0x825- bad inode magic/vsn daddr 0x0 #0" - * - */ - ino = (ino64_t)r; - v = verbose; - } - fd = open(".", O_RDONLY); - - bsr.lastip=&ino; - bsr.icount=1; - bsr.ubuffer=&t; - bsr.ocount=NULL; - - e = ioctl(fd, XFS_IOC_FSBULKSTAT_SINGLE, &bsr) < 0 ? errno : 0; - if (v) - printf("%d/%d: bulkstat1 %s ino %lld %d\n", - procid, opno, good?"real":"random", (int64_t)ino, e); - close(fd); -} - -#endif - -void -chown_f(int opno, long r) -{ - int e; - pathname_t f; - int nbits; - uid_t u; - int v; - - init_pathname(&f); - if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) - append_pathname(&f, "."); - u = (uid_t)random(); - nbits = (int)(random() % 32); - u &= (1 << nbits) - 1; - e = lchown_path(&f, u, -1) < 0 ? errno : 0; - check_cwd(); - if (v) - printf("%d/%d: chown %s %d %d\n", procid, opno, f.path, u, e); - free_pathname(&f); -} - -void -creat_f(int opno, long r) -{ - int e; - int e1; - int extsize; - pathname_t f; - int fd; - fent_t *fep; - int id; - int parid; - int type; - int v; - int v1; - int esz=0; - - if (!get_fname(FT_DIRm, r, NULL, NULL, &fep, &v1)) - parid = -1; - else - parid = fep->id; - init_pathname(&f); - type = rtpct ? ((random() % 100) > rtpct ? FT_REG : FT_RTF) : FT_REG; - if (type == FT_RTF) - extsize = (random() % 10) + 1; - else - extsize = 0; - e = generate_fname(fep, type, &f, &id, &v); - v |= v1; - if (!e) { - if (v) { - fent_to_name(&f, &flist[FT_DIR], fep); - printf("%d/%d: creat - no filename from %s\n", - procid, opno, f.path); - } - free_pathname(&f); - return; - } - fd = creat_path(&f, 0666); - e = fd < 0 ? errno : 0; - e1 = 0; - check_cwd(); - esz = 0; - if (fd >= 0) { -#ifndef NO_XFS - struct fsxattr a; - if (extsize && ioctl(fd, XFS_IOC_FSGETXATTR, &a) >= 0) { - a.fsx_xflags |= XFS_XFLAG_REALTIME; - a.fsx_extsize = - geom.rtextsize * geom.blocksize * extsize; - if (ioctl(fd, XFS_IOC_FSSETXATTR, &a) < 0) - e1 = errno; - esz = a.fsx_estsize; - - } -#endif - add_to_flist(type, id, parid); - close(fd); - } - if (v) - printf("%d/%d: creat %s x:%d %d %d\n", procid, opno, f.path, - esz, e, e1); - free_pathname(&f); -} - -int -setdirect(int fd) -{ - static int no_direct; - int flags; - - if (no_direct) - return 0; - - flags = fcntl(fd, F_GETFL, 0); - if (flags < 0) - return 0; - - if (fcntl(fd, F_SETFL, flags|O_DIRECT) < 0) { - if (no_xfs) { - no_direct = 1; - return 0; - } - printf("cannot set O_DIRECT: %s\n",strerror(errno)); - return 0; - } - - return 1; -} - -void -dread_f(int opno, long r) -{ - __int64_t align; - char *buf; - struct dioattr diob; - int e; - pathname_t f; - int fd; - size_t len; - __int64_t lr; - off64_t off; - struct stat64 stb; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: dread - no filename\n", procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_RDONLY); - - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: dread - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - - if (!setdirect(fd)) { - close(fd); - free_pathname(&f); - return; - } - - if (fstat64(fd, &stb) < 0) { - if (v) - printf("%d/%d: dread - fstat64 %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } - if (stb.st_size == 0) { - if (v) - printf("%d/%d: dread - %s zero size\n", procid, opno, - f.path); - free_pathname(&f); - close(fd); - return; - } - -#ifndef NO_XFS - if (no_xfs) { -#endif - diob.d_miniosz = stb.st_blksize; - diob.d_maxiosz = stb.st_blksize * 256; /* good number ? */ - diob.d_mem = stb.st_blksize; -#ifndef NO_XFS - } - else if (ioctl(fd, XFS_IOC_DIOINFO, &diob) < 0) { - if (v) - printf( - "%d/%d: dread - ioctl(fd, XFS_IOC_DIOINFO) %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } -#endif - align = (__int64_t)diob.d_miniosz; - lr = ((__int64_t)random() << 32) + random(); - off = (off64_t)(lr % stb.st_size); - off -= (off % align); - lseek64(fd, off, SEEK_SET); - len = (random() % (getpagesize() * 32)) + 1; - len -= (len % align); - if (len <= 0) - len = align; - else if (len > diob.d_maxiosz) - len = diob.d_maxiosz; - buf = memalign(diob.d_mem, len); - e = read(fd, buf, len) < 0 ? errno : 0; - free(buf); - if (v) - printf("%d/%d: dread %s [%lld,%ld] %d\n", - procid, opno, f.path, (long long int)off, (long)len, e); - free_pathname(&f); - close(fd); -} - -void -dwrite_f(int opno, long r) -{ - __int64_t align; - char *buf; - struct dioattr diob; - int e; - pathname_t f; - int fd; - size_t len; - __int64_t lr; - off64_t off; - struct stat64 stb; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: dwrite - no filename\n", procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_WRONLY); - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: dwrite - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - - if (!setdirect(fd)) { - close(fd); - free_pathname(&f); - return; - } - if (fstat64(fd, &stb) < 0) { - if (v) - printf("%d/%d: dwrite - fstat64 %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } -#ifndef NO_XFS - if (no_xfs) { -#endif - diob.d_miniosz = stb.st_blksize; - diob.d_maxiosz = stb.st_blksize * 256; /* good number ? */ - diob.d_mem = stb.st_blksize; -#ifndef NO_XFS - } - else if (ioctl(fd, XFS_IOC_DIOINFO, &diob) < 0) { - if (v) - printf( - "%d/%d: dwrite - ioctl(fd, XFS_IOC_DIOINFO) %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } -#endif - align = (__int64_t)diob.d_miniosz; - lr = ((__int64_t)random() << 32) + random(); - off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); - off -= (off % align); - lseek64(fd, off, SEEK_SET); - len = (random() % (getpagesize() * 32)) + 1; - len -= (len % align); - if (len <= 0) - len = align; - else if (len > diob.d_maxiosz) - len = diob.d_maxiosz; - buf = memalign(diob.d_mem, len); - off %= maxfsize; - lseek64(fd, off, SEEK_SET); - memset(buf, nameseq & 0xff, len); - e = write(fd, buf, len) < 0 ? errno : 0; - free(buf); - if (v) - printf("%d/%d: dwrite %s [%lld,%ld] %d\n", - procid, opno, f.path, (long long)off, (long int)len, e); - free_pathname(&f); - close(fd); -} - -void -fdatasync_f(int opno, long r) -{ - int e; - pathname_t f; - int fd; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: fdatasync - no filename\n", - procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_WRONLY); - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: fdatasync - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - e = fdatasync(fd) < 0 ? errno : 0; - if (v) - printf("%d/%d: fdatasync %s %d\n", procid, opno, f.path, e); - free_pathname(&f); - close(fd); -} - -#ifndef NO_XFS -void -freesp_f(int opno, long r) -{ - int e; - pathname_t f; - int fd; - struct flock64 fl; - __int64_t lr; - off64_t off; - struct stat64 stb; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: freesp - no filename\n", procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_RDWR); - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: freesp - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - if (fstat64(fd, &stb) < 0) { - if (v) - printf("%d/%d: freesp - fstat64 %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } - lr = ((__int64_t)random() << 32) + random(); - off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); - off %= maxfsize; - fl.l_whence = SEEK_SET; - fl.l_start = off; - fl.l_len = 0; - e = ioctl(fd, XFS_IOC_FREESP64, &fl) < 0 ? errno : 0; - if (v) - printf("%d/%d: ioctl(XFS_IOC_FREESP64) %s %lld 0 %d\n", - procid, opno, f.path, off, e); - free_pathname(&f); - close(fd); -} - -#endif - -void -fsync_f(int opno, long r) -{ - int e; - pathname_t f; - int fd; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: fsync - no filename\n", procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_WRONLY); - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: fsync - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - e = fsync(fd) < 0 ? errno : 0; - if (v) - printf("%d/%d: fsync %s %d\n", procid, opno, f.path, e); - free_pathname(&f); - close(fd); -} - -void -getdents_f(int opno, long r) -{ - DIR *dir; - pathname_t f; - int v; - - init_pathname(&f); - if (!get_fname(FT_DIRm, r, &f, NULL, NULL, &v)) - append_pathname(&f, "."); - dir = opendir_path(&f); - check_cwd(); - if (dir == NULL) { - if (v) - printf("%d/%d: getdents - can't open %s\n", - procid, opno, f.path); - free_pathname(&f); - return; - } - while (readdir64(dir) != NULL) - continue; - if (v) - printf("%d/%d: getdents %s 0\n", procid, opno, f.path); - free_pathname(&f); - closedir(dir); -} - -void -link_f(int opno, long r) -{ - int e; - pathname_t f; - fent_t *fep; - flist_t *flp; - int id; - pathname_t l; - int parid; - int v; - int v1; - - init_pathname(&f); - if (!get_fname(FT_NOTDIR, r, &f, &flp, NULL, &v1)) { - if (v1) - printf("%d/%d: link - no file\n", procid, opno); - free_pathname(&f); - return; - } - if (!get_fname(FT_DIRm, random(), NULL, NULL, &fep, &v)) - parid = -1; - else - parid = fep->id; - v |= v1; - init_pathname(&l); - e = generate_fname(fep, flp - flist, &l, &id, &v1); - v |= v1; - if (!e) { - if (v) { - fent_to_name(&l, &flist[FT_DIR], fep); - printf("%d/%d: link - no filename from %s\n", - procid, opno, l.path); - } - free_pathname(&l); - free_pathname(&f); - return; - } - e = link_path(&f, &l) < 0 ? errno : 0; - check_cwd(); - if (e == 0) - add_to_flist(flp - flist, id, parid); - if (v) - printf("%d/%d: link %s %s %d\n", procid, opno, f.path, l.path, - e); - free_pathname(&l); - free_pathname(&f); -} - -void -mkdir_f(int opno, long r) -{ - int e; - pathname_t f; - fent_t *fep; - int id; - int parid; - int v; - int v1; - - if (!get_fname(FT_DIRm, r, NULL, NULL, &fep, &v)) - parid = -1; - else - parid = fep->id; - init_pathname(&f); - e = generate_fname(fep, FT_DIR, &f, &id, &v1); - v |= v1; - if (!e) { - if (v) { - fent_to_name(&f, &flist[FT_DIR], fep); - printf("%d/%d: mkdir - no filename from %s\n", - procid, opno, f.path); - } - free_pathname(&f); - return; - } - e = mkdir_path(&f, 0777) < 0 ? errno : 0; - check_cwd(); - if (e == 0) - add_to_flist(FT_DIR, id, parid); - if (v) - printf("%d/%d: mkdir %s %d\n", procid, opno, f.path, e); - free_pathname(&f); -} - -void -mknod_f(int opno, long r) -{ - int e; - pathname_t f; - fent_t *fep; - int id; - int parid; - int v; - int v1; - - if (!get_fname(FT_DIRm, r, NULL, NULL, &fep, &v)) - parid = -1; - else - parid = fep->id; - init_pathname(&f); - e = generate_fname(fep, FT_DEV, &f, &id, &v1); - v |= v1; - if (!e) { - if (v) { - fent_to_name(&f, &flist[FT_DIR], fep); - printf("%d/%d: mknod - no filename from %s\n", - procid, opno, f.path); - } - free_pathname(&f); - return; - } - e = mknod_path(&f, S_IFCHR|0444, 0) < 0 ? errno : 0; - check_cwd(); - if (e == 0) - add_to_flist(FT_DEV, id, parid); - if (v) - printf("%d/%d: mknod %s %d\n", procid, opno, f.path, e); - free_pathname(&f); -} - -void -read_f(int opno, long r) -{ - char *buf; - int e; - pathname_t f; - int fd; - size_t len; - __int64_t lr; - off64_t off; - struct stat64 stb; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: read - no filename\n", procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_RDONLY); - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: read - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - if (fstat64(fd, &stb) < 0) { - if (v) - printf("%d/%d: read - fstat64 %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } - if (stb.st_size == 0) { - if (v) - printf("%d/%d: read - %s zero size\n", procid, opno, - f.path); - free_pathname(&f); - close(fd); - return; - } - lr = ((__int64_t)random() << 32) + random(); - off = (off64_t)(lr % stb.st_size); - lseek64(fd, off, SEEK_SET); - len = (random() % (getpagesize() * 32)) + 1; - buf = malloc(len); - e = read(fd, buf, len) < 0 ? errno : 0; - free(buf); - if (v) - printf("%d/%d: read %s [%lld,%ld] %d\n", - procid, opno, f.path, (long long)off, (long int)len, e); - free_pathname(&f); - close(fd); -} - -void -readlink_f(int opno, long r) -{ - char buf[PATH_MAX]; - int e; - pathname_t f; - int v; - - init_pathname(&f); - if (!get_fname(FT_SYMm, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: readlink - no filename\n", procid, opno); - free_pathname(&f); - return; - } - e = readlink_path(&f, buf, PATH_MAX) < 0 ? errno : 0; - check_cwd(); - if (v) - printf("%d/%d: readlink %s %d\n", procid, opno, f.path, e); - free_pathname(&f); -} - -void -rename_f(int opno, long r) -{ - fent_t *dfep; - int e; - pathname_t f; - fent_t *fep; - flist_t *flp; - int id; - pathname_t newf; - int oldid; - int parid; - int v; - int v1; - - init_pathname(&f); - if (!get_fname(FT_ANYm, r, &f, &flp, &fep, &v1)) { - if (v1) - printf("%d/%d: rename - no filename\n", procid, opno); - free_pathname(&f); - return; - } - if (!get_fname(FT_DIRm, random(), NULL, NULL, &dfep, &v)) - parid = -1; - else - parid = dfep->id; - v |= v1; - init_pathname(&newf); - e = generate_fname(dfep, flp - flist, &newf, &id, &v1); - v |= v1; - if (!e) { - if (v) { - fent_to_name(&f, &flist[FT_DIR], dfep); - printf("%d/%d: rename - no filename from %s\n", - procid, opno, f.path); - } - free_pathname(&newf); - free_pathname(&f); - return; - } - e = rename_path(&f, &newf) < 0 ? errno : 0; - check_cwd(); - if (e == 0) { - if (flp - flist == FT_DIR) { - oldid = fep->id; - fix_parent(oldid, id); - } - del_from_flist(flp - flist, fep - flp->fents); - add_to_flist(flp - flist, id, parid); - } - if (v) - printf("%d/%d: rename %s to %s %d\n", procid, opno, f.path, - newf.path, e); - free_pathname(&newf); - free_pathname(&f); -} - -#ifndef NO_XFS -void -resvsp_f(int opno, long r) -{ - int e; - pathname_t f; - int fd; - struct flock64 fl; - __int64_t lr; - off64_t off; - struct stat64 stb; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: resvsp - no filename\n", procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_RDWR); - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: resvsp - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - if (fstat64(fd, &stb) < 0) { - if (v) - printf("%d/%d: resvsp - fstat64 %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } - lr = ((__int64_t)random() << 32) + random(); - off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); - off %= maxfsize; - fl.l_whence = SEEK_SET; - fl.l_start = off; - fl.l_len = (off64_t)(random() % (1024 * 1024)); - e = ioctl(fd, XFS_IOC_RESVSP64, &fl) < 0 ? errno : 0; - if (v) - printf("%d/%d: ioctl(XFS_IOC_RESVSP64) %s %lld %lld %d\n", - procid, opno, f.path, off, fl.l_len, e); - free_pathname(&f); - close(fd); -} -#endif - -void -rmdir_f(int opno, long r) -{ - int e; - pathname_t f; - fent_t *fep; - int v; - - init_pathname(&f); - if (!get_fname(FT_DIRm, r, &f, NULL, &fep, &v)) { - if (v) - printf("%d/%d: rmdir - no directory\n", procid, opno); - free_pathname(&f); - return; - } - e = rmdir_path(&f) < 0 ? errno : 0; - check_cwd(); - if (e == 0) - del_from_flist(FT_DIR, fep - flist[FT_DIR].fents); - if (v) - printf("%d/%d: rmdir %s %d\n", procid, opno, f.path, e); - free_pathname(&f); -} - -void -stat_f(int opno, long r) -{ - int e; - pathname_t f; - struct stat64 stb; - int v; - - init_pathname(&f); - if (!get_fname(FT_ANYm, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: stat - no entries\n", procid, opno); - free_pathname(&f); - return; - } - e = lstat64_path(&f, &stb) < 0 ? errno : 0; - check_cwd(); - if (v) - printf("%d/%d: stat %s %d\n", procid, opno, f.path, e); - free_pathname(&f); -} - -void -symlink_f(int opno, long r) -{ - int e; - pathname_t f; - fent_t *fep; - int i; - int id; - int len; - int parid; - int v; - int v1; - char *val; - - if (!get_fname(FT_DIRm, r, NULL, NULL, &fep, &v)) - parid = -1; - else - parid = fep->id; - init_pathname(&f); - e = generate_fname(fep, FT_SYM, &f, &id, &v1); - v |= v1; - if (!e) { - if (v) { - fent_to_name(&f, &flist[FT_DIR], fep); - printf("%d/%d: symlink - no filename from %s\n", - procid, opno, f.path); - } - free_pathname(&f); - return; - } - len = (int)(random() % PATH_MAX); - val = malloc(len + 1); - if (len) - memset(val, 'x', len); - val[len] = '\0'; - for (i = 10; i < len - 1; i += 10) - val[i] = '/'; - e = symlink_path(val, &f) < 0 ? errno : 0; - check_cwd(); - if (e == 0) - add_to_flist(FT_SYM, id, parid); - free(val); - if (v) - printf("%d/%d: symlink %s %d\n", procid, opno, f.path, e); - free_pathname(&f); -} - -/* ARGSUSED */ -void -sync_f(int opno, long r) -{ - sync(); - if (verbose) - printf("%d/%d: sync\n", procid, opno); -} - -void -truncate_f(int opno, long r) -{ - int e; - pathname_t f; - __int64_t lr; - off64_t off; - struct stat64 stb; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: truncate - no filename\n", procid, opno); - free_pathname(&f); - return; - } - e = stat64_path(&f, &stb) < 0 ? errno : 0; - check_cwd(); - if (e > 0) { - if (v) - printf("%d/%d: truncate - stat64 %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - lr = ((__int64_t)random() << 32) + random(); - off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); - off %= maxfsize; - e = truncate64_path(&f, off) < 0 ? errno : 0; - check_cwd(); - if (v) - printf("%d/%d: truncate %s %lld %d\n", procid, opno, f.path, - (long long)off, e); - free_pathname(&f); -} - -void -unlink_f(int opno, long r) -{ - int e; - pathname_t f; - fent_t *fep; - flist_t *flp; - int v; - - init_pathname(&f); - if (!get_fname(FT_NOTDIR, r, &f, &flp, &fep, &v)) { - if (v) - printf("%d/%d: unlink - no file\n", procid, opno); - free_pathname(&f); - return; - } - e = unlink_path(&f) < 0 ? errno : 0; - check_cwd(); - if (e == 0) - del_from_flist(flp - flist, fep - flp->fents); - if (v) - printf("%d/%d: unlink %s %d\n", procid, opno, f.path, e); - free_pathname(&f); -} - -#ifndef NO_XFS -void -unresvsp_f(int opno, long r) -{ - int e; - pathname_t f; - int fd; - struct flock64 fl; - __int64_t lr; - off64_t off; - struct stat64 stb; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: unresvsp - no filename\n", procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_RDWR); - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: unresvsp - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - if (fstat64(fd, &stb) < 0) { - if (v) - printf("%d/%d: unresvsp - fstat64 %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } - lr = ((__int64_t)random() << 32) + random(); - off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); - off %= maxfsize; - fl.l_whence = SEEK_SET; - fl.l_start = off; - fl.l_len = (off64_t)(random() % (1 << 20)); - e = ioctl(fd, XFS_IOC_UNRESVSP64, &fl) < 0 ? errno : 0; - if (v) - printf("%d/%d: ioctl(XFS_IOC_UNRESVSP64) %s %lld %lld %d\n", - procid, opno, f.path, off, fl.l_len, e); - free_pathname(&f); - close(fd); -} -#endif - -void -write_f(int opno, long r) -{ - char *buf; - int e; - pathname_t f; - int fd; - size_t len; - __int64_t lr; - off64_t off; - struct stat64 stb; - int v; - - init_pathname(&f); - if (!get_fname(FT_REGm, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: write - no filename\n", procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_WRONLY); - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: write - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - if (fstat64(fd, &stb) < 0) { - if (v) - printf("%d/%d: write - fstat64 %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } - lr = ((__int64_t)random() << 32) + random(); - off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); - off %= maxfsize; - lseek64(fd, off, SEEK_SET); - len = (random() % (getpagesize() * 32)) + 1; - buf = malloc(len); - memset(buf, nameseq & 0xff, len); - e = write(fd, buf, len) < 0 ? errno : 0; - free(buf); - if (v) - printf("%d/%d: write %s [%lld,%ld] %d\n", - procid, opno, f.path, (long long)off, (long int)len, e); - free_pathname(&f); - close(fd); -} diff --git a/tests/kern/fsstress/global.h b/tests/kern/fsstress/global.h deleted file mode 100644 index 5ab5d56e..00000000 --- a/tests/kern/fsstress/global.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * Further, this software is distributed without any warranty that it is - * free of the rightful claim of any third person regarding infringement - * or the like. Any license provided herein, whether implied or - * otherwise, applies only to this software file. Patent licenses, if - * any, provided herein do not apply to combinations of this program with - * other software, or any other product whatsoever. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write the Free Software Foundation, Inc., 59 - * Temple Place - Suite 330, Boston MA 02111-1307, USA. - * - * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy, - * Mountain View, CA 94043, or: - * - * http://www.sgi.com - * - * For further information regarding this notice, see: - * - * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ - */ - -#ifndef GLOBAL_H -#define GLOBAL_H - -/* xfs-specific includes */ - -#if defined(NO_XFS) -# include "xfscompat.h" -#else -# include -# include -#endif - -/* libc includes */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef O_DIRECT -#define O_DIRECT 040000 -#endif - -#endif diff --git a/tests/kern/fsstress/xfscompat.h b/tests/kern/fsstress/xfscompat.h deleted file mode 100644 index 390e1810..00000000 --- a/tests/kern/fsstress/xfscompat.h +++ /dev/null @@ -1,7 +0,0 @@ -#define MAXNAMELEN 1024 -struct dioattr { - int d_miniosz, d_maxiosz, d_mem; -}; - -#define MIN(a,b) ((a)<(b) ? (a):(b)) -#define MAX(a,b) ((a)>(b) ? (a):(b)) diff --git a/tests/kern/fstest/LICENSE b/tests/kern/fstest/LICENSE deleted file mode 100644 index 7a5a5b0e..00000000 --- a/tests/kern/fstest/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -$FreeBSD: src/tools/regression/fstest/LICENSE,v 1.1 2007/01/17 01:42:07 pjd Exp $ - -License for all regression tests available with fstest: - -Copyright (c) 2006-2007 Pawel Jakub Dawidek -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -SUCH DAMAGE. diff --git a/tests/kern/fstest/Makefile.am b/tests/kern/fstest/Makefile.am deleted file mode 100644 index 3355fe1c..00000000 --- a/tests/kern/fstest/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -AM_CFLAGS = @WARNING_CFLAGS@ - -VERSION=3.04 - -#CFLAGS+=-DHAS_CHFLAGS -#CFLAGS+=-DHAS_LCHFLAGS -#CFLAGS+=-DHAS_TRUNCATE64 -#CFLAGS+=-DHAS_STAT64 - -check_PROGRAMS = fstest - -fstest_SOURCES = fstest.c diff --git a/tests/kern/fstest/README b/tests/kern/fstest/README deleted file mode 100644 index d549e34d..00000000 --- a/tests/kern/fstest/README +++ /dev/null @@ -1,28 +0,0 @@ -$FreeBSD: src/tools/regression/fstest/README,v 1.1 2007/01/28 00:10:28 pjd Exp $ - -Few notes on how to use fstest in short steps: - - # cd fstest - # vi tests/conf - Change 'fs' to file system type you want to test. These can be: - UFS, ZFS, ext3, ntfs-3g and xfs. - # vi Makefile - You may need to manually tweak few things by editing CFLAGS lines - at the top of the file. - # make - It will compile fstest utility which is used by regression tests. - # cd /path/to/file/system/you/want/to/test/ - The test must be run as root user. - # prove -r /path/to/fstest/ - -That's all. Enjoy. - -Currently supported operating systems: FreeBSD, Solaris, Linux. -Currently supported file system types: UFS, ZFS, ext3, ntfs-3g, xfs. - -Author: -Pawel Jakub Dawidek - -Linux port: -Jean-Pierre Andre -Szabolcs Szakacsits diff --git a/tests/kern/fstest/fstest.c b/tests/kern/fstest/fstest.c deleted file mode 100644 index 07a95711..00000000 --- a/tests/kern/fstest/fstest.c +++ /dev/null @@ -1,1002 +0,0 @@ -/*- - * Copyright (c) 2006-2007 Pawel Jakub Dawidek - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD: src/tools/regression/fstest/fstest.c,v 1.1 2007/01/17 01:42:07 pjd Exp $ - */ - -#ifdef linux -#define _GNU_SOURCE -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifndef HAS_TRUNCATE64 -#define truncate64 truncate -#endif -#ifndef HAS_STAT64 -#define stat64 stat -#define lstat64 lstat -#endif - -#ifndef ALLPERMS -#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) -#endif - -enum action { - ACTION_OPEN, - ACTION_CREATE, - ACTION_UNLINK, - ACTION_MKDIR, - ACTION_RMDIR, - ACTION_LINK, - ACTION_SYMLINK, - ACTION_RENAME, - ACTION_MKFIFO, - ACTION_CHMOD, -#ifdef HAS_LCHMOD - ACTION_LCHMOD, -#endif - ACTION_CHOWN, - ACTION_LCHOWN, -#ifdef HAS_CHFLAGS - ACTION_CHFLAGS, -#endif -#ifdef HAS_LCHFLAGS - ACTION_LCHFLAGS, -#endif - ACTION_TRUNCATE, - ACTION_STAT, - ACTION_LSTAT, -}; - -#define TYPE_NONE 0x0000 -#define TYPE_STRING 0x0001 -#define TYPE_NUMBER 0x0002 - -#define TYPE_OPTIONAL 0x0100 - -#define MAX_ARGS 8 - -struct syscall_desc { - char *sd_name; - enum action sd_action; - int sd_args[MAX_ARGS]; -}; - -static struct syscall_desc syscalls[] = { - { "open", ACTION_OPEN, { TYPE_STRING, TYPE_STRING, TYPE_NUMBER | TYPE_OPTIONAL, TYPE_NONE } }, - { "create", ACTION_CREATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, - { "unlink", ACTION_UNLINK, { TYPE_STRING, TYPE_NONE } }, - { "mkdir", ACTION_MKDIR, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, - { "rmdir", ACTION_RMDIR, { TYPE_STRING, TYPE_NONE } }, - { "link", ACTION_LINK, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, - { "symlink", ACTION_SYMLINK, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, - { "rename", ACTION_RENAME, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, - { "mkfifo", ACTION_MKFIFO, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, - { "chmod", ACTION_CHMOD, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, -#ifdef HAS_LCHMOD - { "lchmod", ACTION_LCHMOD, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, -#endif - { "chown", ACTION_CHOWN, { TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } }, - { "lchown", ACTION_LCHOWN, { TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } }, -#ifdef HAS_CHFLAGS - { "chflags", ACTION_CHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, -#endif -#ifdef HAS_LCHFLAGS - { "lchflags", ACTION_LCHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, -#endif - { "truncate", ACTION_TRUNCATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, - { "stat", ACTION_STAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, - { "lstat", ACTION_LSTAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, - { NULL, -1, { TYPE_NONE } } -}; - -struct flag { - long long f_flag; - char *f_str; -}; - -static struct flag open_flags[] = { -#ifdef O_RDONLY - { O_RDONLY, "O_RDONLY" }, -#endif -#ifdef O_WRONLY - { O_WRONLY, "O_WRONLY" }, -#endif -#ifdef O_RDWR - { O_RDWR, "O_RDWR" }, -#endif -#ifdef O_NONBLOCK - { O_NONBLOCK, "O_NONBLOCK" }, -#endif -#ifdef O_APPEND - { O_APPEND, "O_APPEND" }, -#endif -#ifdef O_CREAT - { O_CREAT, "O_CREAT" }, -#endif -#ifdef O_TRUNC - { O_TRUNC, "O_TRUNC" }, -#endif -#ifdef O_EXCL - { O_EXCL, "O_EXCL" }, -#endif -#ifdef O_SHLOCK - { O_SHLOCK, "O_SHLOCK" }, -#endif -#ifdef O_EXLOCK - { O_EXLOCK, "O_EXLOCK" }, -#endif -#ifdef O_DIRECT - { O_DIRECT, "O_DIRECT" }, -#endif -#ifdef O_FSYNC - { O_FSYNC, "O_FSYNC" }, -#endif -#ifdef O_SYNC - { O_SYNC, "O_SYNC" }, -#endif -#ifdef O_NOFOLLOW - { O_NOFOLLOW, "O_NOFOLLOW" }, -#endif -#ifdef O_NOCTTY - { O_NOCTTY, "O_NOCTTY" }, -#endif - { 0, NULL } -}; - -#ifdef HAS_CHFLAGS -static struct flag chflags_flags[] = { -#ifdef UF_NODUMP - { UF_NODUMP, "UF_NODUMP" }, -#endif -#ifdef UF_IMMUTABLE - { UF_IMMUTABLE, "UF_IMMUTABLE" }, -#endif -#ifdef UF_APPEND - { UF_APPEND, "UF_APPEND" }, -#endif -#ifdef UF_NOUNLINK - { UF_NOUNLINK, "UF_NOUNLINK" }, -#endif -#ifdef UF_OPAQUE - { UF_OPAQUE, "UF_OPAQUE" }, -#endif -#ifdef SF_ARCHIVED - { SF_ARCHIVED, "SF_ARCHIVED" }, -#endif -#ifdef SF_IMMUTABLE - { SF_IMMUTABLE, "SF_IMMUTABLE" }, -#endif -#ifdef SF_APPEND - { SF_APPEND, "SF_APPEND" }, -#endif -#ifdef SF_NOUNLINK - { SF_NOUNLINK, "SF_NOUNLINK" }, -#endif -#ifdef SF_SNAPSHOT - { SF_SNAPSHOT, "SF_SNAPSHOT" }, -#endif - { 0, NULL } -}; -#endif - -static const char *err2str(int error); - -static void -usage(void) -{ - - fprintf(stderr, "usage: fstest [-u uid] [-g gid1[,gid2[...]]] syscall args ...\n"); - exit(1); -} - -static long long -str2flags(struct flag *tflags, char *sflags) -{ - long long flags = 0; - unsigned int i; - char *f; - - for (f = strtok(sflags, ","); f != NULL; f = strtok(NULL, ",")) { - /* Support magic 'none' flag which just reset all flags. */ - if (strcmp(f, "none") == 0) - return (0); - for (i = 0; tflags[i].f_str != NULL; i++) { - if (strcmp(tflags[i].f_str, f) == 0) - break; - } - if (tflags[i].f_str == NULL) { - fprintf(stderr, "unknown flag '%s'\n", f); - exit(1); - } - flags |= tflags[i].f_flag; - } - return (flags); -} - -#ifdef HAS_CHFLAGS -static char * -flags2str(struct flag *tflags, long long flags) -{ - static char sflags[1024]; - unsigned int i; - - sflags[0] = '\0'; - for (i = 0; tflags[i].f_str != NULL; i++) { - if (flags & tflags[i].f_flag) { - if (sflags[0] != '\0') - strlcat(sflags, ",", sizeof(sflags)); - strlcat(sflags, tflags[i].f_str, sizeof(sflags)); - } - } - if (sflags[0] == '\0') - strlcpy(sflags, "none", sizeof(sflags)); - return (sflags); -} -#endif - -static struct syscall_desc * -find_syscall(const char *name) -{ - int i; - - for (i = 0; syscalls[i].sd_name != NULL; i++) { - if (strcmp(syscalls[i].sd_name, name) == 0) - return (&syscalls[i]); - } - return (NULL); -} - -static void -show_stat(struct stat64 *sp, const char *what) -{ - - if (strcmp(what, "mode") == 0) - printf("0%o", (unsigned int)(sp->st_mode & ALLPERMS)); - else if (strcmp(what, "inode") == 0) - printf("%lld", (long long)sp->st_ino); - else if (strcmp(what, "nlink") == 0) - printf("%lld", (long long)sp->st_nlink); - else if (strcmp(what, "uid") == 0) - printf("%d", (int)sp->st_uid); - else if (strcmp(what, "gid") == 0) - printf("%d", (int)sp->st_gid); - else if (strcmp(what, "size") == 0) - printf("%lld", (long long)sp->st_size); - else if (strcmp(what, "blocks") == 0) - printf("%lld", (long long)sp->st_blocks); - else if (strcmp(what, "atime") == 0) - printf("%lld", (long long)sp->st_atime); - else if (strcmp(what, "mtime") == 0) - printf("%lld", (long long)sp->st_mtime); - else if (strcmp(what, "ctime") == 0) - printf("%lld", (long long)sp->st_ctime); -#ifdef HAS_CHFLAGS - else if (strcmp(what, "flags") == 0) - printf("%s", flags2str(chflags_flags, sp->st_flags)); -#endif - else if (strcmp(what, "type") == 0) { - switch (sp->st_mode & S_IFMT) { - case S_IFIFO: - printf("fifo"); - break; - case S_IFCHR: - printf("char"); - break; - case S_IFDIR: - printf("dir"); - break; - case S_IFBLK: - printf("block"); - break; - case S_IFREG: - printf("regular"); - break; - case S_IFLNK: - printf("symlink"); - break; - case S_IFSOCK: - printf("socket"); - break; - default: - printf("unknown"); - break; - } - } else { - printf("unknown"); - } -} - -static void -show_stats(struct stat64 *sp, char *what) -{ - const char *s = ""; - char *w; - - for (w = strtok(what, ","); w != NULL; w = strtok(NULL, ",")) { - printf("%s", s); - show_stat(sp, w); - s = ","; - } - printf("\n"); -} - -static unsigned int -call_syscall(struct syscall_desc *scall, char *argv[]) -{ - struct stat64 sb; - long long flags; - unsigned int i; - char *endp; - int rval; - union { - char *str; - long long num; - } args[MAX_ARGS]; - - /* - * Verify correctness of the arguments. - */ - for (i = 0; i < sizeof(args)/sizeof(args[0]); i++) { - if (scall->sd_args[i] == TYPE_NONE) { - if (argv[i] == NULL || strcmp(argv[i], ":") == 0) - break; - fprintf(stderr, "too many arguments [%s]\n", argv[i]); - exit(1); - } else { - if (argv[i] == NULL || strcmp(argv[i], ":") == 0) { - if (scall->sd_args[i] & TYPE_OPTIONAL) - break; - fprintf(stderr, "too few arguments\n"); - exit(1); - } - if (scall->sd_args[i] & TYPE_STRING) { - if (strcmp(argv[i], "NULL") == 0) - args[i].str = NULL; - else if (strcmp(argv[i], "DEADCODE") == 0) - args[i].str = (void *)0xdeadc0de; - else - args[i].str = argv[i]; - } else if (scall->sd_args[i] & TYPE_NUMBER) { - args[i].num = strtoll(argv[i], &endp, 0); - if (*endp != '\0' && !isspace((unsigned char)*endp)) { - fprintf(stderr, "invalid argument %u, number expected [%s]\n", i, endp); - exit(1); - } - } - } - } - /* - * Call the given syscall. - */ -#define NUM(n) (args[(n)].num) -#define STR(n) (args[(n)].str) - switch (scall->sd_action) { - case ACTION_OPEN: - flags = str2flags(open_flags, STR(1)); - if (flags & O_CREAT) { - if (i == 2) { - fprintf(stderr, "too few arguments\n"); - exit(1); - } - rval = open(STR(0), flags, (mode_t)NUM(2)); - } else { - if (i == 3) { - fprintf(stderr, "too many arguments\n"); - exit(1); - } - rval = open(STR(0), flags); - } - break; - case ACTION_CREATE: - rval = open(STR(0), O_CREAT | O_EXCL, NUM(1)); - if (rval >= 0) - close(rval); - break; - case ACTION_UNLINK: - rval = unlink(STR(0)); - break; - case ACTION_MKDIR: - rval = mkdir(STR(0), NUM(1)); - break; - case ACTION_RMDIR: - rval = rmdir(STR(0)); - break; - case ACTION_LINK: - rval = link(STR(0), STR(1)); - break; - case ACTION_SYMLINK: - rval = symlink(STR(0), STR(1)); - break; - case ACTION_RENAME: - rval = rename(STR(0), STR(1)); - break; - case ACTION_MKFIFO: - rval = mkfifo(STR(0), NUM(1)); - break; - case ACTION_CHMOD: - rval = chmod(STR(0), NUM(1)); - break; -#ifdef HAS_LCHMOD - case ACTION_LCHMOD: - rval = lchmod(STR(0), NUM(1)); - break; -#endif - case ACTION_CHOWN: - rval = chown(STR(0), NUM(1), NUM(2)); - break; - case ACTION_LCHOWN: - rval = lchown(STR(0), NUM(1), NUM(2)); - break; -#ifdef HAS_CHFLAGS - case ACTION_CHFLAGS: - rval = chflags(STR(0), str2flags(chflags_flags, STR(1))); - break; -#endif -#ifdef HAS_LCHFLAGS - case ACTION_LCHFLAGS: - rval = lchflags(STR(0), str2flags(chflags_flags, STR(1))); - break; -#endif - case ACTION_TRUNCATE: - rval = truncate64(STR(0), NUM(1)); - break; - case ACTION_STAT: - rval = stat64(STR(0), &sb); - if (rval == 0) { - show_stats(&sb, STR(1)); - return (i); - } - break; - case ACTION_LSTAT: - rval = lstat64(STR(0), &sb); - if (rval == 0) { - show_stats(&sb, STR(1)); - return (i); - } - break; - default: - fprintf(stderr, "unsupported syscall\n"); - exit(1); - } -#undef STR -#undef NUM - if (rval < 0) { - const char *serrno; - - serrno = err2str(errno); - fprintf(stderr, "%s returned %d\n", scall->sd_name, rval); - printf("%s\n", serrno); - exit(1); - } - printf("0\n"); - return (i); -} - -static void -set_gids(char *gids) -{ - gid_t *gidset; - long ngroups; - char *g, *endp; - unsigned i; - - ngroups = sysconf(_SC_NGROUPS_MAX); - assert(ngroups > 0); - gidset = malloc(sizeof(*gidset) * ngroups); - assert(gidset != NULL); - for (i = 0, g = strtok(gids, ","); g != NULL; g = strtok(NULL, ","), i++) { - if (i >= ngroups) { - fprintf(stderr, "too many gids\n"); - exit(1); - } - gidset[i] = strtol(g, &endp, 0); - if (*endp != '\0' && !isspace((unsigned char)*endp)) { - fprintf(stderr, "invalid gid '%s' - number expected\n", - g); - exit(1); - } - } - if (setgroups(i, gidset) < 0) { - fprintf(stderr, "cannot change groups: %s\n", strerror(errno)); - exit(1); - } - if (setegid(gidset[0]) < 0) { - fprintf(stderr, "cannot change effective gid: %s\n", strerror(errno)); - exit(1); - } - free(gidset); -} - -int -main(int argc, char *argv[]) -{ - struct syscall_desc *scall; - unsigned int n; - char *gids, *endp; - int uid, umsk, ch; - - uid = -1; - gids = NULL; - umsk = 0; - - while ((ch = getopt(argc, argv, "g:u:U:")) != -1) { - switch(ch) { - case 'g': - gids = optarg; - break; - case 'u': - uid = (int)strtol(optarg, &endp, 0); - if (*endp != '\0' && !isspace((unsigned char)*endp)) { - fprintf(stderr, "invalid uid '%s' - number " - "expected\n", optarg); - exit(1); - } - break; - case 'U': - umsk = (int)strtol(optarg, &endp, 0); - if (*endp != '\0' && !isspace((unsigned char)*endp)) { - fprintf(stderr, "invalid umask '%s' - number " - "expected\n", optarg); - exit(1); - } - break; - default: - usage(); - } - } - argc -= optind; - argv += optind; - - if (argc < 1) { - fprintf(stderr, "too few arguments\n"); - usage(); - } - - if (gids != NULL) { - fprintf(stderr, "changing groups to %s\n", gids); - set_gids(gids); - } - if (uid != -1) { - fprintf(stderr, "changing uid to %d\n", uid); - if (setuid(uid) < 0) { - fprintf(stderr, "cannot change uid: %s\n", - strerror(errno)); - exit(1); - } - } - - /* Change umask to requested value or to 0, if not requested. */ - umask(umsk); - - for (;;) { - scall = find_syscall(argv[0]); - if (scall == NULL) { - fprintf(stderr, "syscall '%s' not supported\n", argv[0]); - exit(1); - } - argc++; - argv++; - n = call_syscall(scall, argv); - argc += n; - argv += n; - if (argv[0] == NULL) - break; - argc++; - argv++; - } - - exit(0); -} - -static const char * -err2str(int error) -{ - static char errnum[8]; - - switch (error) { -#ifdef EPERM - case EPERM: - return ("EPERM"); -#endif -#ifdef ENOENT - case ENOENT: - return ("ENOENT"); -#endif -#ifdef ESRCH - case ESRCH: - return ("ESRCH"); -#endif -#ifdef EINTR - case EINTR: - return ("EINTR"); -#endif -#ifdef EIO - case EIO: - return ("EIO"); -#endif -#ifdef ENXIO - case ENXIO: - return ("ENXIO"); -#endif -#ifdef E2BIG - case E2BIG: - return ("E2BIG"); -#endif -#ifdef ENOEXEC - case ENOEXEC: - return ("ENOEXEC"); -#endif -#ifdef EBADF - case EBADF: - return ("EBADF"); -#endif -#ifdef ECHILD - case ECHILD: - return ("ECHILD"); -#endif -#ifdef EDEADLK - case EDEADLK: - return ("EDEADLK"); -#endif -#ifdef ENOMEM - case ENOMEM: - return ("ENOMEM"); -#endif -#ifdef EACCES - case EACCES: - return ("EACCES"); -#endif -#ifdef EFAULT - case EFAULT: - return ("EFAULT"); -#endif -#ifdef ENOTBLK - case ENOTBLK: - return ("ENOTBLK"); -#endif -#ifdef EBUSY - case EBUSY: - return ("EBUSY"); -#endif -#ifdef EEXIST - case EEXIST: - return ("EEXIST"); -#endif -#ifdef EXDEV - case EXDEV: - return ("EXDEV"); -#endif -#ifdef ENODEV - case ENODEV: - return ("ENODEV"); -#endif -#ifdef ENOTDIR - case ENOTDIR: - return ("ENOTDIR"); -#endif -#ifdef EISDIR - case EISDIR: - return ("EISDIR"); -#endif -#ifdef EINVAL - case EINVAL: - return ("EINVAL"); -#endif -#ifdef ENFILE - case ENFILE: - return ("ENFILE"); -#endif -#ifdef EMFILE - case EMFILE: - return ("EMFILE"); -#endif -#ifdef ENOTTY - case ENOTTY: - return ("ENOTTY"); -#endif -#ifdef ETXTBSY - case ETXTBSY: - return ("ETXTBSY"); -#endif -#ifdef EFBIG - case EFBIG: - return ("EFBIG"); -#endif -#ifdef ENOSPC - case ENOSPC: - return ("ENOSPC"); -#endif -#ifdef ESPIPE - case ESPIPE: - return ("ESPIPE"); -#endif -#ifdef EROFS - case EROFS: - return ("EROFS"); -#endif -#ifdef EMLINK - case EMLINK: - return ("EMLINK"); -#endif -#ifdef EPIPE - case EPIPE: - return ("EPIPE"); -#endif -#ifdef EDOM - case EDOM: - return ("EDOM"); -#endif -#ifdef ERANGE - case ERANGE: - return ("ERANGE"); -#endif -#ifdef EAGAIN - case EAGAIN: - return ("EAGAIN"); -#endif -#ifdef EINPROGRESS - case EINPROGRESS: - return ("EINPROGRESS"); -#endif -#ifdef EALREADY - case EALREADY: - return ("EALREADY"); -#endif -#ifdef ENOTSOCK - case ENOTSOCK: - return ("ENOTSOCK"); -#endif -#ifdef EDESTADDRREQ - case EDESTADDRREQ: - return ("EDESTADDRREQ"); -#endif -#ifdef EMSGSIZE - case EMSGSIZE: - return ("EMSGSIZE"); -#endif -#ifdef EPROTOTYPE - case EPROTOTYPE: - return ("EPROTOTYPE"); -#endif -#ifdef ENOPROTOOPT - case ENOPROTOOPT: - return ("ENOPROTOOPT"); -#endif -#ifdef EPROTONOSUPPORT - case EPROTONOSUPPORT: - return ("EPROTONOSUPPORT"); -#endif -#ifdef ESOCKTNOSUPPORT - case ESOCKTNOSUPPORT: - return ("ESOCKTNOSUPPORT"); -#endif -#ifdef EOPNOTSUPP - case EOPNOTSUPP: - return ("EOPNOTSUPP"); -#endif -#ifdef EPFNOSUPPORT - case EPFNOSUPPORT: - return ("EPFNOSUPPORT"); -#endif -#ifdef EAFNOSUPPORT - case EAFNOSUPPORT: - return ("EAFNOSUPPORT"); -#endif -#ifdef EADDRINUSE - case EADDRINUSE: - return ("EADDRINUSE"); -#endif -#ifdef EADDRNOTAVAIL - case EADDRNOTAVAIL: - return ("EADDRNOTAVAIL"); -#endif -#ifdef ENETDOWN - case ENETDOWN: - return ("ENETDOWN"); -#endif -#ifdef ENETUNREACH - case ENETUNREACH: - return ("ENETUNREACH"); -#endif -#ifdef ENETRESET - case ENETRESET: - return ("ENETRESET"); -#endif -#ifdef ECONNABORTED - case ECONNABORTED: - return ("ECONNABORTED"); -#endif -#ifdef ECONNRESET - case ECONNRESET: - return ("ECONNRESET"); -#endif -#ifdef ENOBUFS - case ENOBUFS: - return ("ENOBUFS"); -#endif -#ifdef EISCONN - case EISCONN: - return ("EISCONN"); -#endif -#ifdef ENOTCONN - case ENOTCONN: - return ("ENOTCONN"); -#endif -#ifdef ESHUTDOWN - case ESHUTDOWN: - return ("ESHUTDOWN"); -#endif -#ifdef ETOOMANYREFS - case ETOOMANYREFS: - return ("ETOOMANYREFS"); -#endif -#ifdef ETIMEDOUT - case ETIMEDOUT: - return ("ETIMEDOUT"); -#endif -#ifdef ECONNREFUSED - case ECONNREFUSED: - return ("ECONNREFUSED"); -#endif -#ifdef ELOOP - case ELOOP: - return ("ELOOP"); -#endif -#ifdef ENAMETOOLONG - case ENAMETOOLONG: - return ("ENAMETOOLONG"); -#endif -#ifdef EHOSTDOWN - case EHOSTDOWN: - return ("EHOSTDOWN"); -#endif -#ifdef EHOSTUNREACH - case EHOSTUNREACH: - return ("EHOSTUNREACH"); -#endif -#ifdef ENOTEMPTY - case ENOTEMPTY: - return ("ENOTEMPTY"); -#endif -#ifdef EPROCLIM - case EPROCLIM: - return ("EPROCLIM"); -#endif -#ifdef EUSERS - case EUSERS: - return ("EUSERS"); -#endif -#ifdef EDQUOT - case EDQUOT: - return ("EDQUOT"); -#endif -#ifdef ESTALE - case ESTALE: - return ("ESTALE"); -#endif -#ifdef EREMOTE - case EREMOTE: - return ("EREMOTE"); -#endif -#ifdef EBADRPC - case EBADRPC: - return ("EBADRPC"); -#endif -#ifdef ERPCMISMATCH - case ERPCMISMATCH: - return ("ERPCMISMATCH"); -#endif -#ifdef EPROGUNAVAIL - case EPROGUNAVAIL: - return ("EPROGUNAVAIL"); -#endif -#ifdef EPROGMISMATCH - case EPROGMISMATCH: - return ("EPROGMISMATCH"); -#endif -#ifdef EPROCUNAVAIL - case EPROCUNAVAIL: - return ("EPROCUNAVAIL"); -#endif -#ifdef ENOLCK - case ENOLCK: - return ("ENOLCK"); -#endif -#ifdef ENOSYS - case ENOSYS: - return ("ENOSYS"); -#endif -#ifdef EFTYPE - case EFTYPE: - return ("EFTYPE"); -#endif -#ifdef EAUTH - case EAUTH: - return ("EAUTH"); -#endif -#ifdef ENEEDAUTH - case ENEEDAUTH: - return ("ENEEDAUTH"); -#endif -#ifdef EIDRM - case EIDRM: - return ("EIDRM"); -#endif -#ifdef ENOMSG - case ENOMSG: - return ("ENOMSG"); -#endif -#ifdef EOVERFLOW - case EOVERFLOW: - return ("EOVERFLOW"); -#endif -#ifdef ECANCELED - case ECANCELED: - return ("ECANCELED"); -#endif -#ifdef EILSEQ - case EILSEQ: - return ("EILSEQ"); -#endif -#ifdef ENOATTR - case ENOATTR: - return ("ENOATTR"); -#endif -#ifdef EDOOFUS - case EDOOFUS: - return ("EDOOFUS"); -#endif -#ifdef EBADMSG - case EBADMSG: - return ("EBADMSG"); -#endif -#ifdef EMULTIHOP - case EMULTIHOP: - return ("EMULTIHOP"); -#endif -#ifdef ENOLINK - case ENOLINK: - return ("ENOLINK"); -#endif -#ifdef EPROTO - case EPROTO: - return ("EPROTO"); -#endif - default: - snprintf(errnum, sizeof(errnum), "%d", error); - return (errnum); - } -} diff --git a/tests/kern/fstest/tests/chflags/00.t b/tests/kern/fstest/tests/chflags/00.t deleted file mode 100755 index 96050ad4..00000000 --- a/tests/kern/fstest/tests/chflags/00.t +++ /dev/null @@ -1,178 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/00.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags changes flags" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..191" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n2} 0755 -cdir=`pwd` -cd ${n2} - -expect 0 create ${n0} 0644 -expect none stat ${n0} flags -expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK -expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags -expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE -expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags -expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK -expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags -expect 0 chflags ${n0} none -expect none stat ${n0} flags -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0644 -expect none stat ${n0} flags -expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK -expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags -expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE -expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags -expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK -expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags -expect 0 chflags ${n0} none -expect none stat ${n0} flags -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -expect none stat ${n0} flags -expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK -expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags -expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE -expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags -expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK -expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags -expect 0 chflags ${n0} none -expect none stat ${n0} flags -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 symlink ${n0} ${n1} -expect none stat ${n1} flags -expect none lstat ${n1} flags -expect 0 chflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK -expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n1} flags -expect none lstat ${n1} flags -expect 0 chflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE -expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n1} flags -expect none lstat ${n1} flags -expect 0 chflags ${n1} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK -expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n1} flags -expect none lstat ${n1} flags -expect 0 chflags ${n1} none -expect none stat ${n1} flags -expect none lstat ${n1} flags -expect 0 unlink ${n1} -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 symlink ${n0} ${n1} -expect none stat ${n1} flags -expect none lstat ${n1} flags -expect 0 lchflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK -expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK lstat ${n1} flags -expect none stat ${n1} flags -expect 0 lchflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE -expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE lstat ${n1} flags -expect none stat ${n1} flags -expect 0 lchflags ${n1} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK -expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK lstat ${n1} flags -expect none stat ${n1} flags -expect 0 lchflags ${n1} none -expect none lstat ${n1} flags -expect none stat ${n1} flags -expect 0 unlink ${n1} -expect 0 unlink ${n0} - -# successful chflags(2) updates ctime. -expect 0 create ${n0} 0644 -for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect 0 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -lt $ctime2 -done -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect 0 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -lt $ctime2 -done -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect 0 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -lt $ctime2 -done -expect 0 unlink ${n0} - -expect 0 symlink ${n1} ${n0} -for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do - ctime1=`${fstest} lstat ${n0} ctime` - sleep 1 - expect 0 lchflags ${n0} ${flag} - ctime2=`${fstest} lstat ${n0} ctime` - test_check $ctime1 -lt $ctime2 -done -expect 0 unlink ${n0} - -# unsuccessful chflags(2) does not update ctime. -expect 0 create ${n0} 0644 -for flag in UF_IMMUTABLE SF_IMMUTABLE none; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect EPERM -u 65534 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -eq $ctime2 -done -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -for flag in UF_IMMUTABLE SF_IMMUTABLE none; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect EPERM -u 65534 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -eq $ctime2 -done -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -for flag in UF_IMMUTABLE SF_IMMUTABLE none; do - ctime1=`${fstest} stat ${n0} ctime` - sleep 1 - expect EPERM -u 65534 chflags ${n0} ${flag} - ctime2=`${fstest} stat ${n0} ctime` - test_check $ctime1 -eq $ctime2 -done -expect 0 unlink ${n0} - -expect 0 symlink ${n1} ${n0} -for flag in UF_IMMUTABLE SF_IMMUTABLE none; do - ctime1=`${fstest} lstat ${n0} ctime` - sleep 1 - expect EPERM -u 65534 lchflags ${n0} ${flag} - ctime2=`${fstest} lstat ${n0} ctime` - test_check $ctime1 -eq $ctime2 -done -expect 0 unlink ${n0} - -cd ${cdir} -expect 0 rmdir ${n2} diff --git a/tests/kern/fstest/tests/chflags/01.t b/tests/kern/fstest/tests/chflags/01.t deleted file mode 100755 index 8be8a098..00000000 --- a/tests/kern/fstest/tests/chflags/01.t +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/01.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns ENOTDIR if a component of the path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..5" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR chflags ${n0}/${n1}/test UF_IMMUTABLE -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chflags/02.t b/tests/kern/fstest/tests/chflags/02.t deleted file mode 100755 index 00bc09a5..00000000 --- a/tests/kern/fstest/tests/chflags/02.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/02.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..6" - -expect 0 create ${name255} 0644 -expect 0 chflags ${name255} UF_IMMUTABLE -expect UF_IMMUTABLE stat ${name255} flags -expect 0 chflags ${name255} none -expect 0 unlink ${name255} -expect ENAMETOOLONG chflags ${name256} UF_IMMUTABLE diff --git a/tests/kern/fstest/tests/chflags/03.t b/tests/kern/fstest/tests/chflags/03.t deleted file mode 100755 index 2130dae5..00000000 --- a/tests/kern/fstest/tests/chflags/03.t +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/03.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns ENAMETOOLONG if an entire path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..13" - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 create ${path1023} 0644 -expect 0 chflags ${path1023} UF_IMMUTABLE -expect 0 chflags ${path1023} none -expect 0 unlink ${path1023} -expect ENAMETOOLONG chflags ${path1024} UF_IMMUTABLE -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/chflags/04.t b/tests/kern/fstest/tests/chflags/04.t deleted file mode 100755 index 4581d5a8..00000000 --- a/tests/kern/fstest/tests/chflags/04.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/04.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns ENOENT if the named file does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..4" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect ENOENT chflags ${n0}/${n1}/test UF_IMMUTABLE -expect ENOENT chflags ${n0}/${n1} UF_IMMUTABLE -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chflags/05.t b/tests/kern/fstest/tests/chflags/05.t deleted file mode 100755 index 00710735..00000000 --- a/tests/kern/fstest/tests/chflags/05.t +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/05.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns EACCES when search permission is denied for a component of the path prefix" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..16" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 -expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} UF_IMMUTABLE -expect UF_IMMUTABLE -u 65534 -g 65534 stat ${n1}/${n2} flags -expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} none -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 chflags ${n1}/${n2} UF_IMMUTABLE -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} UF_IMMUTABLE -expect UF_IMMUTABLE -u 65534 -g 65534 stat ${n1}/${n2} flags -expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} none -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chflags/06.t b/tests/kern/fstest/tests/chflags/06.t deleted file mode 100755 index 80c089c5..00000000 --- a/tests/kern/fstest/tests/chflags/06.t +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/06.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns ELOOP if too many symbolic links were encountered in translating the pathname" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP chflags ${n0}/test UF_IMMUTABLE -expect ELOOP chflags ${n1}/test UF_IMMUTABLE -expect 0 unlink ${n0} -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/chflags/07.t b/tests/kern/fstest/tests/chflags/07.t deleted file mode 100755 index 240e65bc..00000000 --- a/tests/kern/fstest/tests/chflags/07.t +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/07.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns EPERM when the effective user ID does not match the owner of the file and the effective user ID is not the super-user" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..30" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 create ${n1} 0644 -expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE -expect none stat ${n1} flags -expect 0 chown ${n1} 65534 65534 -expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE -expect none stat ${n1} flags -expect 0 unlink ${n1} - -expect 0 mkdir ${n1} 0755 -expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE -expect none stat ${n1} flags -expect 0 chown ${n1} 65534 65534 -expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE -expect none stat ${n1} flags -expect 0 rmdir ${n1} - -expect 0 mkfifo ${n1} 0644 -expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE -expect none stat ${n1} flags -expect 0 chown ${n1} 65534 65534 -expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE -expect none stat ${n1} flags -expect 0 unlink ${n1} - -expect 0 symlink ${n2} ${n1} -expect EPERM -u 65534 -g 65534 lchflags ${n1} UF_IMMUTABLE -expect none lstat ${n1} flags -expect 0 lchown ${n1} 65534 65534 -expect EPERM -u 65533 -g 65533 lchflags ${n1} UF_IMMUTABLE -expect none lstat ${n1} flags -expect 0 unlink ${n1} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chflags/08.t b/tests/kern/fstest/tests/chflags/08.t deleted file mode 100755 index e076980f..00000000 --- a/tests/kern/fstest/tests/chflags/08.t +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/08.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns EPERM when one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK is set and the user is not the super-user" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..78" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 create ${n1} 0644 -expect 0 chown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect 0 chflags ${n1} ${flag} - expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags - expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags -done -expect 0 chflags ${n1} none -expect 0 unlink ${n1} - -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect 0 chflags ${n1} ${flag} - expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags - expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags -done -expect 0 chflags ${n1} none -expect 0 rmdir ${n1} - -expect 0 mkfifo ${n1} 0644 -expect 0 chown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect 0 chflags ${n1} ${flag} - expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags - expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags -done -expect 0 chflags ${n1} none -expect 0 unlink ${n1} - -expect 0 symlink ${n2} ${n1} -expect 0 lchown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect 0 lchflags ${n1} ${flag} - expect EPERM -u 65533 -g 65533 lchflags ${n1} UF_IMMUTABLE - expect ${flag} lstat ${n1} flags - expect EPERM -u 65534 -g 65534 lchflags ${n1} UF_IMMUTABLE - expect ${flag} lstat ${n1} flags -done -expect 0 lchflags ${n1} none -expect 0 unlink ${n1} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chflags/09.t b/tests/kern/fstest/tests/chflags/09.t deleted file mode 100755 index 58a2f613..00000000 --- a/tests/kern/fstest/tests/chflags/09.t +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/09.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns EPERM when one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK is set and securelevel is greater than 0" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..102" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -old=`sysctl -n security.jail.chflags_allowed` -sysctl security.jail.chflags_allowed=1 >/dev/null - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 create ${n1} 0644 -expect 0 chown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect 0 chflags ${n1} ${flag} - jexpect 1 `pwd` EPERM chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags - jexpect 1 `pwd` EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags - jexpect 1 `pwd` EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags -done -expect 0 chflags ${n1} none -expect 0 unlink ${n1} - -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect 0 chflags ${n1} ${flag} - jexpect 1 `pwd` EPERM chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags - jexpect 1 `pwd` EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags - jexpect 1 `pwd` EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags -done -expect 0 chflags ${n1} none -expect 0 rmdir ${n1} - -expect 0 mkfifo ${n1} 0644 -expect 0 chown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect 0 chflags ${n1} ${flag} - jexpect 1 `pwd` EPERM chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags - jexpect 1 `pwd` EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags - jexpect 1 `pwd` EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE - expect ${flag} stat ${n1} flags -done -expect 0 chflags ${n1} none -expect 0 unlink ${n1} - -expect 0 symlink ${n2} ${n1} -expect 0 lchown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect 0 lchflags ${n1} ${flag} - jexpect 1 `pwd` EPERM lchflags ${n1} UF_IMMUTABLE - expect ${flag} lstat ${n1} flags - jexpect 1 `pwd` EPERM -u 65533 -g 65533 lchflags ${n1} UF_IMMUTABLE - expect ${flag} lstat ${n1} flags - jexpect 1 `pwd` EPERM -u 65534 -g 65534 lchflags ${n1} UF_IMMUTABLE - expect ${flag} lstat ${n1} flags -done -expect 0 lchflags ${n1} none -expect 0 unlink ${n1} - -sysctl security.jail.chflags_allowed=${old} >/dev/null -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chflags/10.t b/tests/kern/fstest/tests/chflags/10.t deleted file mode 100755 index 1f62a3e7..00000000 --- a/tests/kern/fstest/tests/chflags/10.t +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/10.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns EPERM if non-super-user tries to set one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..62" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 create ${n1} 0644 -expect 0 chown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag} - expect none stat ${n1} flags - expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag} - expect none stat ${n1} flags -done -expect 0 unlink ${n1} - -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag} - expect none stat ${n1} flags - expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag} - expect none stat ${n1} flags -done -expect 0 rmdir ${n1} - -expect 0 mkfifo ${n1} 0644 -expect 0 chown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag} - expect none stat ${n1} flags - expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag} - expect none stat ${n1} flags -done -expect 0 unlink ${n1} - -expect 0 symlink ${n2} ${n1} -expect 0 lchown ${n1} 65534 65534 -for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do - expect EPERM -u 65533 -g 65533 lchflags ${n1} ${flag} - expect none lstat ${n1} flags - expect EPERM -u 65534 -g 65534 lchflags ${n1} ${flag} - expect none lstat ${n1} flags -done -expect 0 unlink ${n1} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chflags/11.t b/tests/kern/fstest/tests/chflags/11.t deleted file mode 100755 index a4823d4f..00000000 --- a/tests/kern/fstest/tests/chflags/11.t +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/11.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns EPERM if a user tries to set or remove the SF_SNAPSHOT flag" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..46" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 create ${n1} 0644 -expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect EPERM chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect 0 chown ${n1} 65534 65534 -expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect EPERM chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect 0 unlink ${n1} - -expect 0 mkdir ${n1} 0644 -expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect EPERM chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect 0 chown ${n1} 65534 65534 -expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect EPERM chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect 0 rmdir ${n1} - -expect 0 mkfifo ${n1} 0644 -expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect EPERM chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect 0 chown ${n1} 65534 65534 -expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect EPERM chflags ${n1} SF_SNAPSHOT -expect none stat ${n1} flags -expect 0 unlink ${n1} - -expect 0 symlink ${n2} ${n1} -expect EPERM -u 65534 -g 65534 lchflags ${n1} SF_SNAPSHOT -expect none lstat ${n1} flags -expect EPERM lchflags ${n1} SF_SNAPSHOT -expect none lstat ${n1} flags -expect 0 lchown ${n1} 65534 65534 -expect EPERM -u 65534 -g 65534 lchflags ${n1} SF_SNAPSHOT -expect none lstat ${n1} flags -expect EPERM lchflags ${n1} SF_SNAPSHOT -expect none lstat ${n1} flags -expect 0 unlink ${n1} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chflags/12.t b/tests/kern/fstest/tests/chflags/12.t deleted file mode 100755 index e4671d1d..00000000 --- a/tests/kern/fstest/tests/chflags/12.t +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/12.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns EROFS if the named file resides on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..14" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - expect 0 chflags ${n0}/${n1} UF_IMMUTABLE - expect UF_IMMUTABLE stat ${n0}/${n1} flags - expect 0 chflags ${n0}/${n1} none - expect none stat ${n0}/${n1} flags - mount -ur /dev/md${n} - expect EROFS chflags ${n0}/${n1} UF_IMMUTABLE - expect none stat ${n0}/${n1} flags - mount -uw /dev/md${n} - expect 0 chflags ${n0}/${n1} UF_IMMUTABLE - expect UF_IMMUTABLE stat ${n0}/${n1} flags - expect 0 chflags ${n0}/${n1} none - expect none stat ${n0}/${n1} flags - expect 0 unlink ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/chflags/13.t b/tests/kern/fstest/tests/chflags/13.t deleted file mode 100755 index 6da6bf03..00000000 --- a/tests/kern/fstest/tests/chflags/13.t +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chflags/13.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chflags returns EFAULT if the path argument points outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..2" - -expect EFAULT chflags NULL UF_IMMUTABLE -expect EFAULT chflags DEADCODE UF_IMMUTABLE diff --git a/tests/kern/fstest/tests/chmod/00.t b/tests/kern/fstest/tests/chmod/00.t deleted file mode 100755 index 74dc5524..00000000 --- a/tests/kern/fstest/tests/chmod/00.t +++ /dev/null @@ -1,161 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/00.t,v 1.2 2007/01/25 20:48:14 pjd Exp $ - -desc="chmod changes permission" - -dir=`dirname $0` -. ${dir}/../misc.sh - -if supported lchmod; then - echo "1..77" -else - echo "1..58" -fi - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n2} 0755 -cdir=`pwd` -cd ${n2} - -expect 0 create ${n0} 0644 -expect 0644 stat ${n0} mode -expect 0 chmod ${n0} 0111 -expect 0111 stat ${n0} mode -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0755 stat ${n0} mode -expect 0 chmod ${n0} 0753 -expect 0753 stat ${n0} mode -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -expect 0644 stat ${n0} mode -expect 0 chmod ${n0} 0310 -expect 0310 stat ${n0} mode -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 symlink ${n0} ${n1} -expect 0644 stat ${n1} mode -expect 0 chmod ${n1} 0321 -expect 0321 stat ${n1} mode -expect 0321 lstat ${n0} mode -expect 0 unlink ${n0} -expect 0 unlink ${n1} - -if supported lchmod; then - expect 0 create ${n0} 0644 - expect 0 symlink ${n0} ${n1} - expect 0644 stat ${n1} mode - expect 0 lchmod ${n1} 0321 - expect 0321 lstat ${n1} mode - expect 0 lchmod ${n1} 0531 - expect 0531 lstat ${n1} mode - expect 0644 stat ${n0} mode - expect 0644 stat ${n1} mode - expect 0 unlink ${n0} - expect 0 unlink ${n1} -fi - -# successful chmod(2) updates ctime. -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 chmod ${n0} 0111 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 chmod ${n0} 0753 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 chmod ${n0} 0310 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} - -if supported lchmod; then - expect 0 symlink ${n1} ${n0} - ctime1=`${fstest} lstat ${n0} ctime` - sleep 1 - expect 0 lchmod ${n0} 0321 - ctime2=`${fstest} lstat ${n0} ctime` - test_check $ctime1 -lt $ctime2 - expect 0 unlink ${n0} -fi - -# unsuccessful chmod(2) does not update ctime. -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EPERM -u 65534 chmod ${n0} 0111 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EPERM -u 65534 chmod ${n0} 0753 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EPERM -u 65534 chmod ${n0} 0310 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} - -if supported lchmod; then - expect 0 symlink ${n1} ${n0} - ctime1=`${fstest} lstat ${n0} ctime` - sleep 1 - expect EPERM -u 65534 lchmod ${n0} 0321 - ctime2=`${fstest} lstat ${n0} ctime` - test_check $ctime1 -eq $ctime2 - expect 0 unlink ${n0} -fi - -# POSIX: If the calling process does not have appropriate privileges, and if -# the group ID of the file does not match the effective group ID or one of the -# supplementary group IDs and if the file is a regular file, bit S_ISGID -# (set-group-ID on execution) in the file's mode shall be cleared upon -# successful return from chmod(). - -expect 0 create ${n0} 0755 -expect 0 chown ${n0} 65535 65535 -expect 0 -u 65535 -g 65535 chmod ${n0} 02755 -expect 02755 stat ${n0} mode -expect 0 -u 65535 -g 65535 chmod ${n0} 0755 -expect 0755 stat ${n0} mode - -# Unfortunately FreeBSD doesn't clear set-gid bit, but returns EPERM instead. -case "${os}" in -FreeBSD) - expect EPERM -u 65535 -g 65534 chmod ${n0} 02755 - expect 0755 stat ${n0} mode - ;; -*) - expect 0 -u 65535 -g 65534 chmod ${n0} 02755 - expect 0755 stat ${n0} mode - ;; -esac -expect 0 unlink ${n0} - -cd ${cdir} -expect 0 rmdir ${n2} diff --git a/tests/kern/fstest/tests/chmod/01.t b/tests/kern/fstest/tests/chmod/01.t deleted file mode 100755 index 6f84c7c8..00000000 --- a/tests/kern/fstest/tests/chmod/01.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/01.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns ENOTDIR if a component of the path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR chmod ${n0}/${n1}/test 0644 -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chmod/02.t b/tests/kern/fstest/tests/chmod/02.t deleted file mode 100755 index 7a5b4a4b..00000000 --- a/tests/kern/fstest/tests/chmod/02.t +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/02.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -expect 0 create ${name255} 0644 -expect 0 chmod ${name255} 0620 -expect 0620 stat ${name255} mode -expect 0 unlink ${name255} -expect ENAMETOOLONG chmod ${name256} 0620 diff --git a/tests/kern/fstest/tests/chmod/03.t b/tests/kern/fstest/tests/chmod/03.t deleted file mode 100755 index eba3833d..00000000 --- a/tests/kern/fstest/tests/chmod/03.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/03.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns ENAMETOOLONG if an entire path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 create ${path1023} 0644 -expect 0 chmod ${path1023} 0642 -expect 0 unlink ${path1023} -create_too_long -expect ENAMETOOLONG chmod ${too_long} 0642 -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/chmod/04.t b/tests/kern/fstest/tests/chmod/04.t deleted file mode 100755 index 2e59773d..00000000 --- a/tests/kern/fstest/tests/chmod/04.t +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/04.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns ENOENT if the named file does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect ENOENT chmod ${n0}/${n1}/test 0644 -expect ENOENT chmod ${n0}/${n1} 0644 -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chmod/05.t b/tests/kern/fstest/tests/chmod/05.t deleted file mode 100755 index 1753e091..00000000 --- a/tests/kern/fstest/tests/chmod/05.t +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/05.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns EACCES when search permission is denied for a component of the path prefix" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..14" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 -expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0642 -expect 0642 -u 65534 -g 65534 stat ${n1}/${n2} mode -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 chmod ${n1}/${n2} 0620 -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0420 -expect 0420 -u 65534 -g 65534 stat ${n1}/${n2} mode -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chmod/06.t b/tests/kern/fstest/tests/chmod/06.t deleted file mode 100755 index bb13ff52..00000000 --- a/tests/kern/fstest/tests/chmod/06.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/06.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns ELOOP if too many symbolic links were encountered in translating the pathname" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP chmod ${n0}/test 0644 -expect ELOOP chmod ${n1}/test 0644 -expect 0 unlink ${n0} -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/chmod/07.t b/tests/kern/fstest/tests/chmod/07.t deleted file mode 100755 index b3c95e8d..00000000 --- a/tests/kern/fstest/tests/chmod/07.t +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/07.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns EPERM if the operation would change the ownership, but the effective user ID is not the super-user" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..14" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 -expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0642 -expect 0642 stat ${n1}/${n2} mode -expect EPERM -u 65533 -g 65533 chmod ${n1}/${n2} 0641 -expect 0642 stat ${n1}/${n2} mode -expect 0 chown ${n1}/${n2} 0 0 -expect EPERM -u 65534 -g 65534 chmod ${n1}/${n2} 0641 -expect 0642 stat ${n1}/${n2} mode -expect 0 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chmod/08.t b/tests/kern/fstest/tests/chmod/08.t deleted file mode 100755 index f8823969..00000000 --- a/tests/kern/fstest/tests/chmod/08.t +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/08.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns EPERM if the named file has its immutable or append-only flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..40" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM chmod ${n0} 0600 -expect 0644 stat ${n0} mode -expect 0 chflags ${n0} none -expect 0 chmod ${n0} 0600 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM chmod ${n0} 0600 -expect 0644 stat ${n0} mode -expect 0 chflags ${n0} none -expect 0 chmod ${n0} 0600 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_APPEND -expect EPERM chmod ${n0} 0600 -expect 0644 stat ${n0} mode -expect 0 chflags ${n0} none -expect 0 chmod ${n0} 0600 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_APPEND -expect EPERM chmod ${n0} 0600 -expect 0644 stat ${n0} mode -expect 0 chflags ${n0} none -expect 0 chmod ${n0} 0600 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 chmod ${n0} 0600 -expect 0600 stat ${n0} mode -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 chmod ${n0} 0600 -expect 0600 stat ${n0} mode -expect 0 chflags ${n0} none -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/chmod/09.t b/tests/kern/fstest/tests/chmod/09.t deleted file mode 100755 index 68580c30..00000000 --- a/tests/kern/fstest/tests/chmod/09.t +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/09.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns EROFS if the named file resides on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..10" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - expect 0 chmod ${n0}/${n1} 0640 - expect 0640 stat ${n0}/${n1} mode - mount -ur /dev/md${n} - expect EROFS chmod ${n0}/${n1} 0600 - expect 0640 stat ${n0}/${n1} mode - mount -uw /dev/md${n} - expect 0 chmod ${n0}/${n1} 0600 - expect 0600 stat ${n0}/${n1} mode - expect 0 unlink ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/chmod/10.t b/tests/kern/fstest/tests/chmod/10.t deleted file mode 100755 index 2a996bf7..00000000 --- a/tests/kern/fstest/tests/chmod/10.t +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/10.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns EFAULT if the path argument points outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..2" - -expect EFAULT chmod NULL 0644 -expect EFAULT chmod DEADCODE 0644 diff --git a/tests/kern/fstest/tests/chmod/11.t b/tests/kern/fstest/tests/chmod/11.t deleted file mode 100755 index 1cba21a5..00000000 --- a/tests/kern/fstest/tests/chmod/11.t +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chmod/11.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chmod returns EFTYPE if the effective user ID is not the super-user, the mode includes the sticky bit (S_ISVTX), and path does not refer to a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..20" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 mkdir ${n1} 0755 -expect 0 chmod ${n1} 01755 -expect 01755 stat ${n1} mode -expect 0 rmdir ${n1} - -expect 0 create ${n1} 0644 -expect 0 chmod ${n1} 01644 -expect 01644 stat ${n1} mode -expect 0 unlink ${n1} - -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 chmod ${n1} 01755 -expect 01755 stat ${n1} mode -expect 0 rmdir ${n1} - -expect 0 create ${n1} 0644 -expect 0 chown ${n1} 65534 65534 -case "${os}" in -FreeBSD) - expect EFTYPE -u 65534 -g 65534 chmod ${n1} 01644 - expect 0644 stat ${n1} mode - ;; -SunOS) - expect 0 -u 65534 -g 65534 chmod ${n1} 01644 - expect 0644 stat ${n1} mode - ;; -Linux) - expect 0 -u 65534 -g 65534 chmod ${n1} 01644 - expect 01644 stat ${n1} mode - ;; -esac -expect 0 unlink ${n1} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chown/00.t b/tests/kern/fstest/tests/chown/00.t deleted file mode 100755 index 27c2f4bb..00000000 --- a/tests/kern/fstest/tests/chown/00.t +++ /dev/null @@ -1,376 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/00.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown changes ownership" - -dir=`dirname $0` -. ${dir}/../misc.sh - -if supported lchmod; then - echo "1..186" -else - echo "1..171" -fi - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n2} 0755 -cdir=`pwd` -cd ${n2} - -# super-user can always modify ownership -# 2 -expect 0 create ${n0} 0644 -expect 0 chown ${n0} 123 456 -expect 123,456 lstat ${n0} uid,gid -expect 0 chown ${n0} 0 0 -expect 0,0 lstat ${n0} uid,gid -expect 0 unlink ${n0} -# 8 -expect 0 mkfifo ${n0} 0644 -expect 0 chown ${n0} 123 456 -expect 123,456 lstat ${n0} uid,gid -expect 0 chown ${n0} 0 0 -expect 0,0 lstat ${n0} uid,gid -expect 0 unlink ${n0} -# 14 -expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 123 456 -expect 123,456 lstat ${n0} uid,gid -expect 0 chown ${n0} 0 0 -expect 0,0 lstat ${n0} uid,gid -expect 0 rmdir ${n0} -# 20 -expect 0 create ${n0} 0644 -expect 0 symlink ${n0} ${n1} -expect 0 chown ${n1} 123 456 -expect 123,456 stat ${n1} uid,gid -expect 123,456 stat ${n0} uid,gid -expect 0 lchown ${n1} 135 579 -expect 135,579 lstat ${n1} uid,gid -expect 123,456 stat ${n1} uid,gid -expect 123,456 stat ${n0} uid,gid -expect 0 unlink ${n0} -expect 0 unlink ${n1} - -# non-super-user can modify file group if he is owner of a file and -# gid he is setting is in his groups list. -# 31 -expect 0 create ${n0} 0644 -expect 0 chown ${n0} 65534 65533 -expect 65534,65533 lstat ${n0} uid,gid -expect 0 -u 65534 -g 65532,65531 -- chown ${n0} -1 65532 -expect 65534,65532 lstat ${n0} uid,gid -expect 0 -u 65534 -g 65532,65531 chown ${n0} 65534 65531 -expect 65534,65531 lstat ${n0} uid,gid -expect 0 unlink ${n0} - -# chown(2) return 0 if user is not owner of a file, but chown(2) is called -# with both uid and gid equal to -1. -# 39 -expect 0 create ${n0} 0644 -expect 0 chown ${n0} 65534 65533 -expect 0 -u 65532 -g 65531 -- chown ${n0} -1 -1 -expect 0 unlink ${n0} - -# when super-user calls chown(2), set-uid and set-gid bits are not removed. -# 43 -expect 0 create ${n0} 0644 -expect 0 chown ${n0} 65534 65533 -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 chown ${n0} 65532 65531 -case "${os}" in -Linux) - expect 0555 lstat ${n0} mode - ;; -*) - expect 06555 lstat ${n0} mode - ;; -esac -expect 0 unlink ${n0} -# 50 -expect 0 create ${n0} 0644 -expect 0 chown ${n0} 0 0 -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 chown ${n0} 65534 65533 -case "${os}" in -Linux) - expect 0555 lstat ${n0} mode - ;; -*) - expect 06555 lstat ${n0} mode - ;; -esac - -expect 0 unlink ${n0} -# 57 -expect 0 create ${n0} 0644 -expect 0 chown ${n0} 65534 65533 -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 chown ${n0} 0 0 -case "${os}" in -Linux) - expect 0555 lstat ${n0} mode - ;; -*) - expect 06555 lstat ${n0} mode - ;; -esac -expect 0 unlink ${n0} - -# when non-super-user calls chown(2) successfully, set-uid and set-gid bits are -# removed, except when both uid and gid are equal to -1. -# 64 -expect 0 create ${n0} 0644 -expect 0 chown ${n0} 65534 65533 -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532 -expect 0555,65534,65532 lstat ${n0} mode,uid,gid -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 65533 -expect 0555,65534,65533 lstat ${n0} mode,uid,gid -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 -1 -case "${os}" in -Linux) - expect 0555,65534,65533 lstat ${n0} mode,uid,gid - ;; -*) - expect 06555,65534,65533 lstat ${n0} mode,uid,gid - ;; -esac - -expect 0 unlink ${n0} -# 79 -expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 65534 65533 -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532 -case "${os}:${fs}" in -Linux:ext3|Linux:ntfs-3g|Linux:ZFS) - expect 06555,65534,65532 lstat ${n0} mode,uid,gid - ;; -*) - expect 0555,65534,65532 lstat ${n0} mode,uid,gid - ;; -esac -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 65533 -case "${os}:${fs}" in -Linux:ext3|Linux:ntfs-3g|Linux:ZFS) - expect 06555,65534,65533 lstat ${n0} mode,uid,gid - ;; -*) - expect 0555,65534,65533 lstat ${n0} mode,uid,gid - ;; -esac -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 -1 -expect 06555,65534,65533 lstat ${n0} mode,uid,gid -expect 0 rmdir ${n0} -# 94 -if supported lchmod; then - expect 0 symlink ${n1} ${n0} - expect 0 lchown ${n0} 65534 65533 - expect 0 lchmod ${n0} 06555 - expect 06555 lstat ${n0} mode - expect 0 -u 65534 -g 65533,65532 lchown ${n0} 65534 65532 - expect 0555,65534,65532 lstat ${n0} mode,uid,gid - expect 0 lchmod ${n0} 06555 - expect 06555 lstat ${n0} mode - expect 0 -u 65534 -g 65533,65532 -- lchown ${n0} -1 65533 - expect 0555,65534,65533 lstat ${n0} mode,uid,gid - expect 0 lchmod ${n0} 06555 - expect 06555 lstat ${n0} mode - expect 0 -u 65534 -g 65533,65532 -- lchown ${n0} -1 -1 - expect 06555,65534,65533 lstat ${n0} mode,uid,gid - expect 0 unlink ${n0} -fi - -# successfull chown(2) call (except uid and gid equal to -1) updates ctime. -# 109 -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 chown ${n0} 65534 65533 -expect 65534,65533 lstat ${n0} uid,gid -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} -# 114 -expect 0 mkdir ${n0} 0755 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 chown ${n0} 65534 65533 -expect 65534,65533 lstat ${n0} uid,gid -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 rmdir ${n0} -# 119 -expect 0 mkfifo ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 chown ${n0} 65534 65533 -expect 65534,65533 lstat ${n0} uid,gid -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} -# 124 -expect 0 symlink ${n1} ${n0} -ctime1=`${fstest} lstat ${n0} ctime` -sleep 1 -expect 0 lchown ${n0} 65534 65533 -expect 65534,65533 lstat ${n0} uid,gid -ctime2=`${fstest} lstat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} -# 129 -expect 0 create ${n0} 0644 -expect 0 chown ${n0} 65534 65533 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 -u 65534 -g 65532 chown ${n0} 65534 65532 -expect 65534,65532 lstat ${n0} uid,gid -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} -# 135 -expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 65534 65533 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 -u 65534 -g 65532 chown ${n0} 65534 65532 -expect 65534,65532 lstat ${n0} uid,gid -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 rmdir ${n0} -# 141 -expect 0 mkfifo ${n0} 0644 -expect 0 chown ${n0} 65534 65533 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 chown ${n0} 65534 65533 -expect 0 -u 65534 -g 65532 chown ${n0} 65534 65532 -expect 65534,65532 lstat ${n0} uid,gid -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} -# 148 -expect 0 symlink ${n1} ${n0} -expect 0 lchown ${n0} 65534 65533 -ctime1=`${fstest} lstat ${n0} ctime` -sleep 1 -expect 0 -u 65534 -g 65532 lchown ${n0} 65534 65532 -expect 65534,65532 lstat ${n0} uid,gid -ctime2=`${fstest} lstat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} -# 154 -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 -- chown ${n0} -1 -1 -ctime2=`${fstest} stat ${n0} ctime` -case "${os}:${fs}" in -Linux:ext3|Linux:ZFS) - test_check $ctime1 -lt $ctime2 - ;; -*) - test_check $ctime1 -eq $ctime2 - ;; -esac -expect 0 unlink ${n0} -# 158 -expect 0 mkdir ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 -- chown ${n0} -1 -1 -ctime2=`${fstest} stat ${n0} ctime` -case "${os}:${fs}" in -Linux:ext3|Linux:ZFS) - test_check $ctime1 -lt $ctime2 - ;; -*) - test_check $ctime1 -eq $ctime2 - ;; -esac -expect 0 rmdir ${n0} -# 162 -expect 0 mkfifo ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 -- chown ${n0} -1 -1 -ctime2=`${fstest} stat ${n0} ctime` -case "${os}:${fs}" in -Linux:ext3|Linux:ZFS) - test_check $ctime1 -lt $ctime2 - ;; -*) - test_check $ctime1 -eq $ctime2 - ;; -esac -expect 0 unlink ${n0} -# 166 -expect 0 symlink ${n1} ${n0} -ctime1=`${fstest} lstat ${n0} ctime` -sleep 1 -expect 0 -- lchown ${n0} -1 -1 -ctime2=`${fstest} lstat ${n0} ctime` -case "${os}:${fs}" in -Linux:ext3|Linux:ZFS) - test_check $ctime1 -lt $ctime2 - ;; -*) - test_check $ctime1 -eq $ctime2 - ;; -esac -expect 0 unlink ${n0} - -# unsuccessful chown(2) does not update ctime. -# 170 -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EPERM -u 65534 -- chown ${n0} 65534 -1 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} -# 174 -expect 0 mkdir ${n0} 0755 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EPERM -u 65534 -g 65534 -- chown ${n0} -1 65534 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 rmdir ${n0} -# 178 -expect 0 mkfifo ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EPERM -u 65534 -g 65534 chown ${n0} 65534 65534 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} -# 182 -expect 0 symlink ${n1} ${n0} -ctime1=`${fstest} lstat ${n0} ctime` -sleep 1 -expect EPERM -u 65534 -g 65534 lchown ${n0} 65534 65534 -ctime2=`${fstest} lstat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} - -# 186 -cd ${cdir} -expect 0 rmdir ${n2} diff --git a/tests/kern/fstest/tests/chown/01.t b/tests/kern/fstest/tests/chown/01.t deleted file mode 100755 index b1cb2f0f..00000000 --- a/tests/kern/fstest/tests/chown/01.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/01.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown returns ENOTDIR if a component of the path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR chown ${n0}/${n1}/test 65534 65534 -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chown/02.t b/tests/kern/fstest/tests/chown/02.t deleted file mode 100755 index e9814bd3..00000000 --- a/tests/kern/fstest/tests/chown/02.t +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/02.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -expect 0 create ${name255} 0644 -expect 0 chown ${name255} 65534 65534 -expect 65534,65534 stat ${name255} uid,gid -expect 0 unlink ${name255} -expect ENAMETOOLONG chown ${name256} 65533 65533 diff --git a/tests/kern/fstest/tests/chown/03.t b/tests/kern/fstest/tests/chown/03.t deleted file mode 100755 index f8569fd1..00000000 --- a/tests/kern/fstest/tests/chown/03.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/03.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown returns ENAMETOOLONG if an entire path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 create ${path1023} 0644 -expect 0 chown ${path1023} 65534 65534 -expect 0 unlink ${path1023} -create_too_long -expect ENAMETOOLONG chown ${too_long} 65533 65533 -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/chown/04.t b/tests/kern/fstest/tests/chown/04.t deleted file mode 100755 index 1395c3b6..00000000 --- a/tests/kern/fstest/tests/chown/04.t +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/04.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown returns ENOENT if the named file does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect ENOENT chown ${n0}/${n1}/test 65534 65534 -expect ENOENT chown ${n0}/${n1} 65534 65534 -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chown/05.t b/tests/kern/fstest/tests/chown/05.t deleted file mode 100755 index 373fc867..00000000 --- a/tests/kern/fstest/tests/chown/05.t +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/05.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown returns EACCES when search permission is denied for a component of the path prefix" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..15" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 -expect 0 -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65533 -expect 65534,65533 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65534 -expect 0 chmod ${n1} 0755 -expect 65534,65533 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid -expect 0 -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65534 -expect 65534,65534 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chown/06.t b/tests/kern/fstest/tests/chown/06.t deleted file mode 100755 index 661fd864..00000000 --- a/tests/kern/fstest/tests/chown/06.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/06.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown returns ELOOP if too many symbolic links were encountered in translating the pathname" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP chown ${n0}/test 65534 65534 -expect ELOOP chown ${n1}/test 65534 65534 -expect 0 unlink ${n0} -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/chown/07.t b/tests/kern/fstest/tests/chown/07.t deleted file mode 100755 index af51ec5f..00000000 --- a/tests/kern/fstest/tests/chown/07.t +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/07.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown returns EPERM if the operation would change the ownership, but the effective user ID is not the super-user and the process is not an owner of the file" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..11" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 -expect EPERM -u 65534 -g 65534 chown ${n1}/${n2} 65533 65533 -expect EPERM -u 65533 -g 65533 chown ${n1}/${n2} 65534 65534 -expect EPERM -u 65533 -g 65533 chown ${n1}/${n2} 65533 65533 -expect EPERM -u 65534 -g 65534 -- chown ${n1}/${n2} -1 65533 -expect 0 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/chown/08.t b/tests/kern/fstest/tests/chown/08.t deleted file mode 100755 index a5bbed79..00000000 --- a/tests/kern/fstest/tests/chown/08.t +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/08.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown returns EPERM if the named file has its immutable or append-only flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..34" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM chown ${n0} 65534 65534 -expect 0 chflags ${n0} none -expect 0 chown ${n0} 65534 65534 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM chown ${n0} 65534 65534 -expect 0 chflags ${n0} none -expect 0 chown ${n0} 65534 65534 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_APPEND -expect EPERM chown ${n0} 65534 65534 -expect 0 chflags ${n0} none -expect 0 chown ${n0} 65534 65534 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_APPEND -expect EPERM chown ${n0} 65534 65534 -expect 0 chflags ${n0} none -expect 0 chown ${n0} 65534 65534 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 chown ${n0} 65534 65534 -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 chown ${n0} 65534 65534 -expect 0 chflags ${n0} none -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/chown/09.t b/tests/kern/fstest/tests/chown/09.t deleted file mode 100755 index 5097d00c..00000000 --- a/tests/kern/fstest/tests/chown/09.t +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/09.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown returns EROFS if the named file resides on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:{fs}" in -FreeBSD:UFS) - echo "1..10" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - expect 0 chown ${n0}/${n1} 65534 65534 - expect 65534,65534 stat ${n0}/${n1} uid,gid - mount -ur /dev/md${n} - expect EROFS chown ${n0}/${n1} 65533 65533 - expect 65534,65534 stat ${n0}/${n1} uid,gid - mount -uw /dev/md${n} - expect 0 chown ${n0}/${n1} 65533 65533 - expect 65533,65533 stat ${n0}/${n1} uid,gid - expect 0 unlink ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/chown/10.t b/tests/kern/fstest/tests/chown/10.t deleted file mode 100755 index bb79067c..00000000 --- a/tests/kern/fstest/tests/chown/10.t +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/chown/10.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -desc="chown returns EFAULT if the path argument points outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..2" - -expect EFAULT chown NULL 65534 65534 -expect EFAULT chown DEADCODE 65534 65534 diff --git a/tests/kern/fstest/tests/conf b/tests/kern/fstest/tests/conf deleted file mode 100644 index 4c25723d..00000000 --- a/tests/kern/fstest/tests/conf +++ /dev/null @@ -1,8 +0,0 @@ -# $FreeBSD: src/tools/regression/fstest/tests/conf,v 1.1 2007/01/17 01:42:08 pjd Exp $ -# fstest configuration file - -# Known operating systems: FreeBSD, SunOS, Linux -os=`uname` - -# Known file systems: UFS, ZFS, ext3, ntfs-3g, xfs -fs="ZFS" diff --git a/tests/kern/fstest/tests/link/00.t b/tests/kern/fstest/tests/link/00.t deleted file mode 100755 index dcd408f3..00000000 --- a/tests/kern/fstest/tests/link/00.t +++ /dev/null @@ -1,151 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/00.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link creates hardlinks" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..82" - -n0=`namegen` -n1=`namegen` -n2=`namegen` -n3=`namegen` - -expect 0 mkdir ${n3} 0755 -cdir=`pwd` -cd ${n3} - -expect 0 create ${n0} 0644 -expect regular,0644,1 lstat ${n0} type,mode,nlink - -expect 0 link ${n0} ${n1} -expect regular,0644,2 lstat ${n0} type,mode,nlink -expect regular,0644,2 lstat ${n1} type,mode,nlink - -expect 0 link ${n1} ${n2} -expect regular,0644,3 lstat ${n0} type,mode,nlink -expect regular,0644,3 lstat ${n1} type,mode,nlink -expect regular,0644,3 lstat ${n2} type,mode,nlink - -expect 0 chmod ${n1} 0201 -expect 0 chown ${n1} 65534 65533 - -expect regular,0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid -expect regular,0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect regular,0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid - -expect 0 unlink ${n0} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect regular,0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect regular,0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid - -expect 0 unlink ${n2} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect regular,0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect ENOENT lstat ${n2} type,mode,nlink,uid,gid - -expect 0 unlink ${n1} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect ENOENT lstat ${n1} type,mode,nlink,uid,gid -expect ENOENT lstat ${n2} type,mode,nlink,uid,gid - -expect 0 mkfifo ${n0} 0644 -expect fifo,0644,1 lstat ${n0} type,mode,nlink - -expect 0 link ${n0} ${n1} -expect fifo,0644,2 lstat ${n0} type,mode,nlink -expect fifo,0644,2 lstat ${n1} type,mode,nlink - -expect 0 link ${n1} ${n2} -expect fifo,0644,3 lstat ${n0} type,mode,nlink -expect fifo,0644,3 lstat ${n1} type,mode,nlink -expect fifo,0644,3 lstat ${n2} type,mode,nlink - -expect 0 chmod ${n1} 0201 -expect 0 chown ${n1} 65534 65533 - -expect fifo,0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid -expect fifo,0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect fifo,0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid - -expect 0 unlink ${n0} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect fifo,0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect fifo,0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid - -expect 0 unlink ${n2} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect fifo,0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid -expect ENOENT lstat ${n2} type,mode,nlink,uid,gid - -expect 0 unlink ${n1} -expect ENOENT lstat ${n0} type,mode,nlink,uid,gid -expect ENOENT lstat ${n1} type,mode,nlink,uid,gid -expect ENOENT lstat ${n2} type,mode,nlink,uid,gid - -# successful link(2) updates ctime. -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -dctime1=`${fstest} stat . ctime` -dmtime1=`${fstest} stat . mtime` -sleep 1 -expect 0 link ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -dctime2=`${fstest} stat . ctime` -test_check $dctime1 -lt $dctime2 -dmtime2=`${fstest} stat . mtime` -test_check $dctime1 -lt $dmtime2 -expect 0 unlink ${n0} -expect 0 unlink ${n1} - -expect 0 mkfifo ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -dctime1=`${fstest} stat . ctime` -dmtime1=`${fstest} stat . mtime` -sleep 1 -expect 0 link ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -dctime2=`${fstest} stat . ctime` -test_check $dctime1 -lt $dctime2 -dmtime2=`${fstest} stat . mtime` -test_check $dctime1 -lt $dmtime2 -expect 0 unlink ${n0} -expect 0 unlink ${n1} - -# unsuccessful link(2) does not update ctime. -expect 0 create ${n0} 0644 -expect 0 -- chown ${n0} 65534 -1 -ctime1=`${fstest} stat ${n0} ctime` -dctime1=`${fstest} stat . ctime` -dmtime1=`${fstest} stat . mtime` -sleep 1 -expect EACCES -u 65534 link ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -dctime2=`${fstest} stat . ctime` -test_check $dctime1 -eq $dctime2 -dmtime2=`${fstest} stat . mtime` -test_check $dctime1 -eq $dmtime2 -expect 0 unlink ${n0} - -expect 0 mkfifo ${n0} 0644 -expect 0 -- chown ${n0} 65534 -1 -ctime1=`${fstest} stat ${n0} ctime` -dctime1=`${fstest} stat . ctime` -dmtime1=`${fstest} stat . mtime` -sleep 1 -expect EACCES -u 65534 link ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -dctime2=`${fstest} stat . ctime` -test_check $dctime1 -eq $dctime2 -dmtime2=`${fstest} stat . mtime` -test_check $dctime1 -eq $dmtime2 -expect 0 unlink ${n0} - -cd ${cdir} -expect 0 rmdir ${n3} diff --git a/tests/kern/fstest/tests/link/01.t b/tests/kern/fstest/tests/link/01.t deleted file mode 100755 index be003b92..00000000 --- a/tests/kern/fstest/tests/link/01.t +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/01.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns ENOTDIR if a component of either path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..8" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR link ${n0}/${n1}/test ${n0}/${n2} -expect 0 create ${n0}/${n2} 0644 -expect ENOTDIR link ${n0}/${n2} ${n0}/${n1}/test -expect 0 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n2} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/link/02.t b/tests/kern/fstest/tests/link/02.t deleted file mode 100755 index 6c34e8ea..00000000 --- a/tests/kern/fstest/tests/link/02.t +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/02.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns ENAMETOOLONG if a component of either pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..10" - -n0=`namegen` - -expect 0 create ${name255} 0644 -expect 0 link ${name255} ${n0} -expect 0 unlink ${name255} -expect 0 link ${n0} ${name255} -expect 0 unlink ${n0} -expect 0 unlink ${name255} - -expect 0 create ${n0} 0644 -expect ENAMETOOLONG link ${n0} ${name256} -expect 0 unlink ${n0} -expect ENAMETOOLONG link ${name256} ${n0} diff --git a/tests/kern/fstest/tests/link/03.t b/tests/kern/fstest/tests/link/03.t deleted file mode 100755 index 0ad3354a..00000000 --- a/tests/kern/fstest/tests/link/03.t +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/03.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns ENAMETOOLONG if an entire length of either path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..16" - -n0=`namegen` - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 create ${path1023} 0644 -expect 0 link ${path1023} ${n0} -expect 0 unlink ${path1023} -expect 0 link ${n0} ${path1023} -expect 0 unlink ${path1023} -create_too_long -expect ENAMETOOLONG link ${n0} ${too_long} -unlink_too_long -expect 0 unlink ${n0} -create_too_long -expect ENAMETOOLONG link ${too_long} ${n0} -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/link/04.t b/tests/kern/fstest/tests/link/04.t deleted file mode 100755 index a3b8f7f3..00000000 --- a/tests/kern/fstest/tests/link/04.t +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/04.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns ENOENT if a component of either path prefix does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -expect ENOENT link ${n0}/${n1}/test ${n2} -expect 0 create ${n2} 0644 -expect ENOENT link ${n2} ${n0}/${n1}/test -expect 0 unlink ${n2} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/link/05.t b/tests/kern/fstest/tests/link/05.t deleted file mode 100755 index a95d3d1f..00000000 --- a/tests/kern/fstest/tests/link/05.t +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/05.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns EMLINK if the link count of the file named by name1 would exceed 32767" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..5" - - n0=`namegen` - n1=`namegen` - n2=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs -i 1 /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - i=1 - while :; do - link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1 - if [ $? -ne 0 ]; then - break - fi - i=`expr $i + 1` - done - test_check $i -eq 32767 - - expect EMLINK link ${n0}/${n1} ${n0}/${n2} - - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/link/06.t b/tests/kern/fstest/tests/link/06.t deleted file mode 100755 index b0391dce..00000000 --- a/tests/kern/fstest/tests/link/06.t +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/06.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns EACCES when a component of either path prefix denies search permission" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..18" - -n0=`namegen` -n1=`namegen` -n2=`namegen` -n3=`namegen` -n4=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 mkdir ${n2} 0755 -expect 0 chown ${n2} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 - -expect 0 -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} -expect 0 -u 65534 -g 65534 unlink ${n2}/${n4} - -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n1}/${n4} -expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} - -expect 0 chmod ${n1} 0755 -expect 0 chmod ${n2} 0644 -expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} - -expect 0 unlink ${n1}/${n3} -expect 0 rmdir ${n1} -expect 0 rmdir ${n2} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/link/07.t b/tests/kern/fstest/tests/link/07.t deleted file mode 100755 index 9760e35c..00000000 --- a/tests/kern/fstest/tests/link/07.t +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/07.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns EACCES when the requested link requires writing in a directory with a mode that denies write permission" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..17" - -n0=`namegen` -n1=`namegen` -n2=`namegen` -n3=`namegen` -n4=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 mkdir ${n2} 0755 -expect 0 chown ${n2} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 - -expect 0 -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} -expect 0 -u 65534 -g 65534 unlink ${n2}/${n4} - -expect 0 chmod ${n2} 0555 -expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} -expect 0 chmod ${n1} 0555 -expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n1}/${n4} -expect 0 chmod ${n1} 0755 - -expect 0 unlink ${n1}/${n3} -expect 0 rmdir ${n1} -expect 0 rmdir ${n2} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/link/08.t b/tests/kern/fstest/tests/link/08.t deleted file mode 100755 index 24b764b2..00000000 --- a/tests/kern/fstest/tests/link/08.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/08.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns ELOOP if too many symbolic links were encountered in translating one of the pathnames" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..10" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP link ${n0}/test ${n2} -expect ELOOP link ${n1}/test ${n2} -expect 0 create ${n2} 0644 -expect ELOOP link ${n2} ${n0}/test -expect ELOOP link ${n2} ${n1}/test -expect 0 unlink ${n0} -expect 0 unlink ${n1} -expect 0 unlink ${n2} diff --git a/tests/kern/fstest/tests/link/09.t b/tests/kern/fstest/tests/link/09.t deleted file mode 100755 index 7899fcbc..00000000 --- a/tests/kern/fstest/tests/link/09.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/09.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns ENOENT if the source file does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -n0=`namegen` -n1=`namegen` - -expect 0 create ${n0} 0644 -expect 0 link ${n0} ${n1} -expect 0 unlink ${n0} -expect 0 unlink ${n1} -expect ENOENT link ${n0} ${n1} diff --git a/tests/kern/fstest/tests/link/10.t b/tests/kern/fstest/tests/link/10.t deleted file mode 100755 index 61612e6b..00000000 --- a/tests/kern/fstest/tests/link/10.t +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/10.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns EEXIST if the destination file does exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..14" - -n0=`namegen` -n1=`namegen` - -expect 0 create ${n0} 0644 - -expect 0 create ${n1} 0644 -expect EEXIST link ${n0} ${n1} -expect 0 unlink ${n1} - -expect 0 mkdir ${n1} 0755 -expect EEXIST link ${n0} ${n1} -expect 0 rmdir ${n1} - -expect 0 symlink test ${n1} -expect EEXIST link ${n0} ${n1} -expect 0 unlink ${n1} - -expect 0 mkfifo ${n1} 0644 -expect EEXIST link ${n0} ${n1} -expect 0 unlink ${n1} - -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/link/11.t b/tests/kern/fstest/tests/link/11.t deleted file mode 100755 index 8a7c571c..00000000 --- a/tests/kern/fstest/tests/link/11.t +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/11.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns EPERM if the source file is a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -case "${os}:${fs}" in -SunOS:UFS) - echo "1..10" - - expect 0 mkdir ${n0} 0755 - expect 0 link ${n0} ${n1} - expect 0 unlink ${n1} - expect 0 rmdir ${n0} - ;; -*) - echo "1..9" - - expect 0 mkdir ${n0} 0755 - expect EPERM link ${n0} ${n1} - expect 0 rmdir ${n0} - ;; -esac - -expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 65534 65534 -cdir=`pwd` -cd ${n0} - -expect 0 -u 65534 -g 65534 mkdir ${n1} 0755 -expect EPERM -u 65534 -g 65534 link ${n1} ${n2} -expect 0 -u 65534 -g 65534 rmdir ${n1} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/link/12.t b/tests/kern/fstest/tests/link/12.t deleted file mode 100755 index a9366a34..00000000 --- a/tests/kern/fstest/tests/link/12.t +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/12.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns EPERM if the source file has its immutable or append-only flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..32" - -n0=`namegen` -n1=`namegen` - -expect 0 create ${n0} 0644 - -expect 0 link ${n0} ${n1} -expect 0 unlink ${n1} - -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM link ${n0} ${n1} -expect 0 chflags ${n0} none -expect 0 link ${n0} ${n1} -expect 0 unlink ${n1} - -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM link ${n0} ${n1} -expect 0 chflags ${n0} none -expect 0 link ${n0} ${n1} -expect 0 unlink ${n1} - -expect 0 chflags ${n0} SF_APPEND -expect EPERM link ${n0} ${n1} -expect 0 chflags ${n0} none -expect 0 link ${n0} ${n1} -expect 0 unlink ${n1} - -expect 0 chflags ${n0} UF_APPEND -expect EPERM link ${n0} ${n1} -expect 0 chflags ${n0} none -expect 0 link ${n0} ${n1} -expect 0 unlink ${n1} - -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 link ${n0} ${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n1} - -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 link ${n0} ${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n1} - -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/link/13.t b/tests/kern/fstest/tests/link/13.t deleted file mode 100755 index 82dca471..00000000 --- a/tests/kern/fstest/tests/link/13.t +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/13.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns EPERM if the parent directory of the destination file has its immutable flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..32" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 create ${n0}/${n1} 0644 -expect 0 link ${n0}/${n1} ${n0}/${n2} -expect 0 unlink ${n0}/${n2} - -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM link ${n0}/${n1} ${n0}/${n2} -expect 0 chflags ${n0} none -expect 0 link ${n0}/${n1} ${n0}/${n2} -expect 0 unlink ${n0}/${n2} - -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM link ${n0}/${n1} ${n0}/${n2} -expect 0 chflags ${n0} none -expect 0 link ${n0}/${n1} ${n0}/${n2} -expect 0 unlink ${n0}/${n2} - -expect 0 chflags ${n0} SF_APPEND -expect 0 link ${n0}/${n1} ${n0}/${n2} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n2} - -expect 0 chflags ${n0} UF_APPEND -expect 0 link ${n0}/${n1} ${n0}/${n2} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n2} - -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 link ${n0}/${n1} ${n0}/${n2} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n2} - -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 link ${n0}/${n1} ${n0}/${n2} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n2} - -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/link/14.t b/tests/kern/fstest/tests/link/14.t deleted file mode 100755 index 40a91bca..00000000 --- a/tests/kern/fstest/tests/link/14.t +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/14.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns EXDEV if the source and the destination files are on different file systems" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}" in -FreeBSD) - echo "1..8" - - n0=`namegen` - n1=`namegen` - n2=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - expect EXDEV link ${n0}/${n1} ${n2} - expect 0 unlink ${n0}/${n1} - expect 0 create ${n1} 0644 - expect EXDEV link ${n1} ${n0}/${n2} - expect 0 unlink ${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/link/15.t b/tests/kern/fstest/tests/link/15.t deleted file mode 100755 index 943df52f..00000000 --- a/tests/kern/fstest/tests/link/15.t +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/15.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns ENOSPC if the directory in which the entry for the new link is being placed cannot be extended because there is no space left on the file system containing the directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..4" - - n0=`namegen` - n1=`namegen` - n2=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 256k` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - i=0 - while :; do - link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1 - if [ $? -ne 0 ]; then - break - fi - i=`expr $i + 1` - done - expect ENOSPC link ${n0}/${n1} ${n0}/${n2} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/link/16.t b/tests/kern/fstest/tests/link/16.t deleted file mode 100755 index fad792ed..00000000 --- a/tests/kern/fstest/tests/link/16.t +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/16.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns EROFS if the requested link requires writing in a directory on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}" in -FreeBSD) - echo "1..9" - - n0=`namegen` - n1=`namegen` - n2=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - - expect 0 link ${n0}/${n1} ${n0}/${n2} - expect 0 unlink ${n0}/${n2} - mount -ur /dev/md${n} - expect EROFS link ${n0}/${n1} ${n0}/${n2} - mount -uw /dev/md${n} - expect 0 link ${n0}/${n1} ${n0}/${n2} - expect 0 unlink ${n0}/${n2} - - expect 0 unlink ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/link/17.t b/tests/kern/fstest/tests/link/17.t deleted file mode 100755 index 278e27cf..00000000 --- a/tests/kern/fstest/tests/link/17.t +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/link/17.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="link returns EFAULT if one of the pathnames specified is outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..8" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect EFAULT link ${n0} NULL -expect EFAULT link ${n0} DEADCODE -expect 0 unlink ${n0} -expect EFAULT link NULL ${n0} -expect EFAULT link DEADCODE ${n0} -expect EFAULT link NULL DEADCODE -expect EFAULT link DEADCODE NULL diff --git a/tests/kern/fstest/tests/misc.sh b/tests/kern/fstest/tests/misc.sh deleted file mode 100644 index 0faefcb3..00000000 --- a/tests/kern/fstest/tests/misc.sh +++ /dev/null @@ -1,143 +0,0 @@ -# $FreeBSD: src/tools/regression/fstest/tests/misc.sh,v 1.1 2007/01/17 01:42:08 pjd Exp $ - -ntest=1 - -name253="_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_12" -name255="${name253}34" -name256="${name255}5" -path1021="${name255}/${name255}/${name255}/${name253}" -path1023="${path1021}/x" -path1024="${path1023}x" - -echo ${dir} | egrep '^/' >/dev/null 2>&1 -if [ $? -eq 0 ]; then - maindir="${dir}/../.." -else - maindir="`pwd`/${dir}/../.." -fi -fstest="${maindir}/fstest" -. ${maindir}/tests/conf - -run_getconf() -{ - if val=$(getconf "${1}" .); then - if [ "$value" = "undefined" ]; then - echo "${1} is undefined" - exit 1 - fi - else - echo "Failed to get ${1}" - exit 1 - fi - - echo $val -} - -name_max_val=$(run_getconf NAME_MAX) -path_max_val=$(run_getconf PATH_MAX) - -name_max="_" -i=1 -while test $i -lt $name_max_val ; do - name_max="${name_max}x" - i=$(($i+1)) -done - -num_of_dirs=$(( ($path_max_val + $name_max_val) / ($name_max_val + 1) - 1 )) - -long_dir="${name_max}" -i=1 -while test $i -lt $num_of_dirs ; do - long_dir="${long_dir}/${name_max}" - i=$(($i+1)) -done -long_dir="${long_dir}/x" - -too_long="${long_dir}/${name_max}" - -create_too_long() -{ - mkdir -p ${long_dir} -} - -unlink_too_long() -{ - rm -rf ${name_max} -} - -expect() -{ - e="${1}" - shift - r=`${fstest} $* 2>/dev/null | tail -1` - echo "${r}" | egrep '^'${e}'$' >/dev/null 2>&1 - if [ $? -eq 0 ]; then - echo "ok ${ntest}" - else - echo "not ok ${ntest}" - fi - ntest=`expr $ntest + 1` -} - -jexpect() -{ - s="${1}" - d="${2}" - e="${3}" - shift 3 - r=`jail -s ${s} / fstest 127.0.0.1 /bin/sh -c "cd ${d} && ${fstest} $* 2>/dev/null" | tail -1` - echo "${r}" | egrep '^'${e}'$' >/dev/null 2>&1 - if [ $? -eq 0 ]; then - echo "ok ${ntest}" - else - echo "not ok ${ntest}" - fi - ntest=`expr $ntest + 1` -} - -test_check() -{ - if [ $* ]; then - echo "ok ${ntest}" - else - echo "not ok ${ntest}" - fi - ntest=`expr $ntest + 1` -} - -namegen() -{ - echo "fstest_`dd if=/dev/urandom bs=1k count=1 2>/dev/null | md5sum | cut -f1 -d' '`" -} - -quick_exit() -{ - echo "1..1" - echo "ok 1" - exit 0 -} - -supported() -{ - case "${1}" in - chflags) - if [ ${os} != "FreeBSD" -o ${fs} != "UFS" ]; then - return 1 - fi - ;; - lchmod) - if [ ${os} != "FreeBSD" ]; then - return 1 - fi - ;; - esac - return 0 -} - -require() -{ - if supported ${1}; then - return - fi - quick_exit -} diff --git a/tests/kern/fstest/tests/mkdir/00.t b/tests/kern/fstest/tests/mkdir/00.t deleted file mode 100755 index cd39339d..00000000 --- a/tests/kern/fstest/tests/mkdir/00.t +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/00.t,v 1.2 2007/01/25 20:50:02 pjd Exp $ - -desc="mkdir creates directories" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..36" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n1} 0755 -cdir=`pwd` -cd ${n1} - -# POSIX: The file permission bits of the new directory shall be initialized from -# mode. These file permission bits of the mode argument shall be modified by the -# process' file creation mask. -expect 0 mkdir ${n0} 0755 -expect dir,0755 lstat ${n0} type,mode -expect 0 rmdir ${n0} -expect 0 mkdir ${n0} 0151 -expect dir,0151 lstat ${n0} type,mode -expect 0 rmdir ${n0} -expect 0 -U 077 mkdir ${n0} 0151 -expect dir,0100 lstat ${n0} type,mode -expect 0 rmdir ${n0} -expect 0 -U 070 mkdir ${n0} 0345 -expect dir,0305 lstat ${n0} type,mode -expect 0 rmdir ${n0} -expect 0 -U 0501 mkdir ${n0} 0345 -expect dir,0244 lstat ${n0} type,mode -expect 0 rmdir ${n0} - -# POSIX: The directory's user ID shall be set to the process' effective user ID. -# The directory's group ID shall be set to the group ID of the parent directory -# or to the effective group ID of the process. -expect 0 chown . 65535 65535 -expect 0 -u 65535 -g 65535 mkdir ${n0} 0755 -expect 65535,65535 lstat ${n0} uid,gid -expect 0 rmdir ${n0} -expect 0 -u 65535 -g 65534 mkdir ${n0} 0755 -expect "65535,6553[45]" lstat ${n0} uid,gid -expect 0 rmdir ${n0} -expect 0 chmod . 0777 -expect 0 -u 65534 -g 65533 mkdir ${n0} 0755 -expect "65534,6553[35]" lstat ${n0} uid,gid -expect 0 rmdir ${n0} - -# POSIX: Upon successful completion, mkdir() shall mark for update the st_atime, -# st_ctime, and st_mtime fields of the directory. Also, the st_ctime and -# st_mtime fields of the directory that contains the new entry shall be marked -# for update. -expect 0 chown . 0 0 -time=`${fstest} stat . ctime` -sleep 1 -expect 0 mkdir ${n0} 0755 -atime=`${fstest} stat ${n0} atime` -test_check $time -lt $atime -mtime=`${fstest} stat ${n0} mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat ${n0} ctime` -test_check $time -lt $ctime -mtime=`${fstest} stat . mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat . ctime` -test_check $time -lt $ctime -expect 0 rmdir ${n0} - -cd ${cdir} -expect 0 rmdir ${n1} diff --git a/tests/kern/fstest/tests/mkdir/01.t b/tests/kern/fstest/tests/mkdir/01.t deleted file mode 100755 index b8b5eb10..00000000 --- a/tests/kern/fstest/tests/mkdir/01.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/01.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns ENOTDIR if a component of the path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR mkdir ${n0}/${n1}/test 0755 -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/mkdir/02.t b/tests/kern/fstest/tests/mkdir/02.t deleted file mode 100755 index b23f9f56..00000000 --- a/tests/kern/fstest/tests/mkdir/02.t +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/02.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..3" - -expect 0 mkdir ${name255} 0755 -expect 0 rmdir ${name255} -expect ENAMETOOLONG mkdir ${name256} 0755 diff --git a/tests/kern/fstest/tests/mkdir/03.t b/tests/kern/fstest/tests/mkdir/03.t deleted file mode 100755 index 6d90e531..00000000 --- a/tests/kern/fstest/tests/mkdir/03.t +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/03.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns ENAMETOOLONG if an entire path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..11" - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 mkdir ${path1023} 0755 -expect 0 rmdir ${path1023} -create_too_long -expect ENAMETOOLONG mkdir ${too_long} 0755 -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/mkdir/04.t b/tests/kern/fstest/tests/mkdir/04.t deleted file mode 100755 index 4de4a9dc..00000000 --- a/tests/kern/fstest/tests/mkdir/04.t +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/04.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns ENOENT if a component of the path prefix does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..3" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect ENOENT mkdir ${n0}/${n1}/test 0755 -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/mkdir/05.t b/tests/kern/fstest/tests/mkdir/05.t deleted file mode 100755 index 3631ddee..00000000 --- a/tests/kern/fstest/tests/mkdir/05.t +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/05.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns EACCES when search permission is denied for a component of the path prefix" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 -expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 -expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/mkdir/06.t b/tests/kern/fstest/tests/mkdir/06.t deleted file mode 100755 index 27057394..00000000 --- a/tests/kern/fstest/tests/mkdir/06.t +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/06.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns EACCES when write permission is denied on the parent directory of the directory to be created" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 -expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} -expect 0 chmod ${n1} 0555 -expect EACCES -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 -expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/mkdir/07.t b/tests/kern/fstest/tests/mkdir/07.t deleted file mode 100755 index fe311e87..00000000 --- a/tests/kern/fstest/tests/mkdir/07.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/07.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns ELOOP if too many symbolic links were encountered in translating the pathname" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP mkdir ${n0}/test 0755 -expect ELOOP mkdir ${n1}/test 0755 -expect 0 unlink ${n0} -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/mkdir/08.t b/tests/kern/fstest/tests/mkdir/08.t deleted file mode 100755 index f8d8eca6..00000000 --- a/tests/kern/fstest/tests/mkdir/08.t +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/08.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns EPERM if the parent directory of the directory to be created has its immutable flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..30" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 rmdir ${n0}/${n1} - -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM mkdir ${n0}/${n1} 0755 -expect 0 chflags ${n0} none -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 rmdir ${n0}/${n1} - -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM mkdir ${n0}/${n1} 0755 -expect 0 chflags ${n0} none -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 rmdir ${n0}/${n1} - -expect 0 chflags ${n0} SF_APPEND -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 chflags ${n0} none -expect 0 rmdir ${n0}/${n1} - -expect 0 chflags ${n0} UF_APPEND -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 chflags ${n0} none -expect 0 rmdir ${n0}/${n1} - -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 rmdir ${n0}/${n1} -expect 0 chflags ${n0} none - -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 rmdir ${n0}/${n1} -expect 0 chflags ${n0} none - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/mkdir/09.t b/tests/kern/fstest/tests/mkdir/09.t deleted file mode 100755 index 1c5eb4d4..00000000 --- a/tests/kern/fstest/tests/mkdir/09.t +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/09.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns EROFS if the named file resides on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..7" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 mkdir ${n0}/${n1} 0755 - expect 0 rmdir ${n0}/${n1} - mount -ur /dev/md${n} - expect EROFS mkdir ${n0}/${n1} 0755 - mount -uw /dev/md${n} - expect 0 mkdir ${n0}/${n1} 0755 - expect 0 rmdir ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/mkdir/10.t b/tests/kern/fstest/tests/mkdir/10.t deleted file mode 100755 index 06b5c608..00000000 --- a/tests/kern/fstest/tests/mkdir/10.t +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/10.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns EEXIST if the named file exists" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -n0=`namegen` - -expect 0 mkdir ${n0} 0755 -expect EEXIST mkdir ${n0} 0755 -expect 0 rmdir ${n0} - -expect 0 create ${n0} 0644 -expect EEXIST mkdir ${n0} 0755 -expect 0 unlink ${n0} - -expect 0 symlink test ${n0} -expect EEXIST mkdir ${n0} 0755 -expect 0 unlink ${n0} - -expect 0 mkfifo ${n0} 0644 -expect EEXIST mkdir ${n0} 0755 -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/mkdir/11.t b/tests/kern/fstest/tests/mkdir/11.t deleted file mode 100755 index 1413b5f5..00000000 --- a/tests/kern/fstest/tests/mkdir/11.t +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/11.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns ENOSPC if there are no free inodes on the file system on which the directory is being created" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..3" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 256k` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - i=0 - while :; do - mkdir ${n0}/${i} >/dev/null 2>&1 - if [ $? -ne 0 ]; then - break - fi - i=`expr $i + 1` - done - expect ENOSPC mkdir ${n0}/${n1} 0755 - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/mkdir/12.t b/tests/kern/fstest/tests/mkdir/12.t deleted file mode 100755 index dfc868cd..00000000 --- a/tests/kern/fstest/tests/mkdir/12.t +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkdir/12.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkdir returns EFAULT if the path argument points outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..2" - -expect EFAULT mkdir NULL 0755 -expect EFAULT mkdir DEADCODE 0755 diff --git a/tests/kern/fstest/tests/mkfifo/00.t b/tests/kern/fstest/tests/mkfifo/00.t deleted file mode 100755 index ba484319..00000000 --- a/tests/kern/fstest/tests/mkfifo/00.t +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/00.t,v 1.2 2007/01/25 20:50:02 pjd Exp $ - -desc="mkfifo creates fifo files" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..36" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n1} 0755 -cdir=`pwd` -cd ${n1} - -# POSIX: The file permission bits of the new FIFO shall be initialized from -# mode. The file permission bits of the mode argument shall be modified by the -# process' file creation mask. -expect 0 mkfifo ${n0} 0755 -expect fifo,0755 lstat ${n0} type,mode -expect 0 unlink ${n0} -expect 0 mkfifo ${n0} 0151 -expect fifo,0151 lstat ${n0} type,mode -expect 0 unlink ${n0} -expect 0 -U 077 mkfifo ${n0} 0151 -expect fifo,0100 lstat ${n0} type,mode -expect 0 unlink ${n0} -expect 0 -U 070 mkfifo ${n0} 0345 -expect fifo,0305 lstat ${n0} type,mode -expect 0 unlink ${n0} -expect 0 -U 0501 mkfifo ${n0} 0345 -expect fifo,0244 lstat ${n0} type,mode -expect 0 unlink ${n0} - -# POSIX: The FIFO's user ID shall be set to the process' effective user ID. -# The FIFO's group ID shall be set to the group ID of the parent directory or to -# the effective group ID of the process. -expect 0 chown . 65535 65535 -expect 0 -u 65535 -g 65535 mkfifo ${n0} 0755 -expect 65535,65535 lstat ${n0} uid,gid -expect 0 unlink ${n0} -expect 0 -u 65535 -g 65534 mkfifo ${n0} 0755 -expect "65535,6553[45]" lstat ${n0} uid,gid -expect 0 unlink ${n0} -expect 0 chmod . 0777 -expect 0 -u 65534 -g 65533 mkfifo ${n0} 0755 -expect "65534,6553[35]" lstat ${n0} uid,gid -expect 0 unlink ${n0} - -# POSIX: Upon successful completion, mkfifo() shall mark for update the -# st_atime, st_ctime, and st_mtime fields of the file. Also, the st_ctime and -# st_mtime fields of the directory that contains the new entry shall be marked -# for update. -expect 0 chown . 0 0 -time=`${fstest} stat . ctime` -sleep 1 -expect 0 mkfifo ${n0} 0755 -atime=`${fstest} stat ${n0} atime` -test_check $time -lt $atime -mtime=`${fstest} stat ${n0} mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat ${n0} ctime` -test_check $time -lt $ctime -mtime=`${fstest} stat . mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat . ctime` -test_check $time -lt $ctime -expect 0 unlink ${n0} - -cd ${cdir} -expect 0 rmdir ${n1} diff --git a/tests/kern/fstest/tests/mkfifo/01.t b/tests/kern/fstest/tests/mkfifo/01.t deleted file mode 100755 index 90a9307e..00000000 --- a/tests/kern/fstest/tests/mkfifo/01.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/01.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns ENOTDIR if a component of the path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR mkfifo ${n0}/${n1}/test 0644 -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/mkfifo/02.t b/tests/kern/fstest/tests/mkfifo/02.t deleted file mode 100755 index f0d5cae1..00000000 --- a/tests/kern/fstest/tests/mkfifo/02.t +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/02.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..3" - -expect 0 mkfifo ${name255} 0644 -expect 0 unlink ${name255} -expect ENAMETOOLONG mkfifo ${name256} 0644 diff --git a/tests/kern/fstest/tests/mkfifo/03.t b/tests/kern/fstest/tests/mkfifo/03.t deleted file mode 100755 index 4c1feeda..00000000 --- a/tests/kern/fstest/tests/mkfifo/03.t +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/03.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns ENAMETOOLONG if an entire path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..11" - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 mkfifo ${path1023} 0644 -expect 0 unlink ${path1023} -create_too_long -expect ENAMETOOLONG mkfifo ${too_long} 0644 -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/mkfifo/04.t b/tests/kern/fstest/tests/mkfifo/04.t deleted file mode 100755 index 9fbfcb29..00000000 --- a/tests/kern/fstest/tests/mkfifo/04.t +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/04.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns ENOENT if a component of the path prefix does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..3" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect ENOENT mkfifo ${n0}/${n1}/test 0644 -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/mkfifo/05.t b/tests/kern/fstest/tests/mkfifo/05.t deleted file mode 100755 index 0c98abc0..00000000 --- a/tests/kern/fstest/tests/mkfifo/05.t +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/05.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns EACCES when search permission is denied for a component of the path prefix" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/mkfifo/06.t b/tests/kern/fstest/tests/mkfifo/06.t deleted file mode 100755 index be991410..00000000 --- a/tests/kern/fstest/tests/mkfifo/06.t +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/06.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns EACCES when write permission is denied on the parent directory of the file to be created" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 chmod ${n1} 0555 -expect EACCES -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/mkfifo/07.t b/tests/kern/fstest/tests/mkfifo/07.t deleted file mode 100755 index 3bb381e9..00000000 --- a/tests/kern/fstest/tests/mkfifo/07.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/07.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns ELOOP if too many symbolic links were encountered in translating the pathname" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP mkfifo ${n0}/test 0644 -expect ELOOP mkfifo ${n1}/test 0644 -expect 0 unlink ${n0} -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/mkfifo/08.t b/tests/kern/fstest/tests/mkfifo/08.t deleted file mode 100755 index 9ea2e79e..00000000 --- a/tests/kern/fstest/tests/mkfifo/08.t +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/08.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns EROFS if the named file resides on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..7" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 mkfifo ${n0}/${n1} 0644 - expect 0 unlink ${n0}/${n1} - mount -ur /dev/md${n} - expect EROFS mkfifo ${n0}/${n1} 0644 - mount -uw /dev/md${n} - expect 0 mkfifo ${n0}/${n1} 0644 - expect 0 unlink ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/mkfifo/09.t b/tests/kern/fstest/tests/mkfifo/09.t deleted file mode 100755 index e3931b70..00000000 --- a/tests/kern/fstest/tests/mkfifo/09.t +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/09.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns EEXIST if the named file exists" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -n0=`namegen` - -expect 0 mkdir ${n0} 0755 -expect EEXIST mkfifo ${n0} 0644 -expect 0 rmdir ${n0} - -expect 0 create ${n0} 0644 -expect EEXIST mkfifo ${n0} 0644 -expect 0 unlink ${n0} - -expect 0 symlink test ${n0} -expect EEXIST mkfifo ${n0} 0644 -expect 0 unlink ${n0} - -expect 0 mkfifo ${n0} 0644 -expect EEXIST mkfifo ${n0} 0644 -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/mkfifo/10.t b/tests/kern/fstest/tests/mkfifo/10.t deleted file mode 100755 index d65f191e..00000000 --- a/tests/kern/fstest/tests/mkfifo/10.t +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/10.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns EPERM if the parent directory of the file to be created has its immutable flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..30" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 mkfifo ${n0}/${n1} 0644 -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM mkfifo ${n0}/${n1} 0644 -expect 0 chflags ${n0} none -expect 0 mkfifo ${n0}/${n1} 0644 -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM mkfifo ${n0}/${n1} 0644 -expect 0 chflags ${n0} none -expect 0 mkfifo ${n0}/${n1} 0644 -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} SF_APPEND -expect 0 mkfifo ${n0}/${n1} 0644 -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} UF_APPEND -expect 0 mkfifo ${n0}/${n1} 0644 -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 mkfifo ${n0}/${n1} 0644 -expect 0 unlink ${n0}/${n1} -expect 0 chflags ${n0} none - -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 mkfifo ${n0}/${n1} 0644 -expect 0 unlink ${n0}/${n1} -expect 0 chflags ${n0} none - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/mkfifo/11.t b/tests/kern/fstest/tests/mkfifo/11.t deleted file mode 100755 index 6ca965b0..00000000 --- a/tests/kern/fstest/tests/mkfifo/11.t +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/11.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ - -desc="mkfifo returns ENOSPC if there are no free inodes on the file system on which the file is being created" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..3" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 256k` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - i=0 - while :; do - mkfifo ${n0}/${i} >/dev/null 2>&1 - if [ $? -ne 0 ]; then - break - fi - i=`expr $i + 1` - done - expect ENOSPC mkfifo ${n0}/${n1} 0644 - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/mkfifo/12.t b/tests/kern/fstest/tests/mkfifo/12.t deleted file mode 100755 index 2280194d..00000000 --- a/tests/kern/fstest/tests/mkfifo/12.t +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/mkfifo/12.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="mkfifo returns EFAULT if the path argument points outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..2" - -expect EFAULT mkfifo NULL 0644 -expect EFAULT mkfifo DEADCODE 0644 diff --git a/tests/kern/fstest/tests/open/00.t b/tests/kern/fstest/tests/open/00.t deleted file mode 100755 index 75d99b83..00000000 --- a/tests/kern/fstest/tests/open/00.t +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/00.t,v 1.2 2007/01/25 20:50:02 pjd Exp $ - -desc="open opens (and eventually creates) a file" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..47" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n1} 0755 -cdir=`pwd` -cd ${n1} - -# POSIX: (If O_CREAT is specified and the file doesn't exist) [...] the access -# permission bits of the file mode shall be set to the value of the third -# argument taken as type mode_t modified as follows: a bitwise AND is performed -# on the file-mode bits and the corresponding bits in the complement of the -# process' file mode creation mask. Thus, all bits in the file mode whose -# corresponding bit in the file mode creation mask is set are cleared. -expect 0 open ${n0} O_CREAT,O_WRONLY 0755 -expect regular,0755 lstat ${n0} type,mode -expect 0 unlink ${n0} -expect 0 open ${n0} O_CREAT,O_WRONLY 0151 -expect regular,0151 lstat ${n0} type,mode -expect 0 unlink ${n0} -expect 0 -U 077 open ${n0} O_CREAT,O_WRONLY 0151 -expect regular,0100 lstat ${n0} type,mode -expect 0 unlink ${n0} -expect 0 -U 070 open ${n0} O_CREAT,O_WRONLY 0345 -expect regular,0305 lstat ${n0} type,mode -expect 0 unlink ${n0} -expect 0 -U 0501 open ${n0} O_CREAT,O_WRONLY 0345 -expect regular,0244 lstat ${n0} type,mode -expect 0 unlink ${n0} - -# POSIX: (If O_CREAT is specified and the file doesn't exist) [...] the user ID -# of the file shall be set to the effective user ID of the process; the group ID -# of the file shall be set to the group ID of the file's parent directory or to -# the effective group ID of the process [...] -expect 0 chown . 65535 65535 -expect 0 -u 65535 -g 65535 open ${n0} O_CREAT,O_WRONLY 0644 -expect 65535,65535 lstat ${n0} uid,gid -expect 0 unlink ${n0} -expect 0 -u 65535 -g 65534 open ${n0} O_CREAT,O_WRONLY 0644 -expect "65535,6553[45]" lstat ${n0} uid,gid -expect 0 unlink ${n0} -expect 0 chmod . 0777 -expect 0 -u 65534 -g 65533 open ${n0} O_CREAT,O_WRONLY 0644 -expect "65534,6553[35]" lstat ${n0} uid,gid -expect 0 unlink ${n0} - -# Update parent directory ctime/mtime if file didn't exist. -expect 0 chown . 0 0 -time=`${fstest} stat . ctime` -sleep 1 -expect 0 open ${n0} O_CREAT,O_WRONLY 0644 -atime=`${fstest} stat ${n0} atime` -test_check $time -lt $atime -mtime=`${fstest} stat ${n0} mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat ${n0} ctime` -test_check $time -lt $ctime -mtime=`${fstest} stat . mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat . ctime` -test_check $time -lt $ctime -expect 0 unlink ${n0} - -# Don't update parent directory ctime/mtime if file existed. -expect 0 create ${n0} 0644 -dmtime=`${fstest} stat . mtime` -dctime=`${fstest} stat . ctime` -sleep 1 -expect 0 open ${n0} O_CREAT,O_RDONLY 0644 -mtime=`${fstest} stat . mtime` -test_check $dmtime -eq $mtime -ctime=`${fstest} stat . ctime` -test_check $dctime -eq $ctime -expect 0 unlink ${n0} - -echo test > ${n0} -expect 5 stat ${n0} size -mtime1=`${fstest} stat ${n0} mtime` -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 open ${n0} O_WRONLY,O_TRUNC -mtime2=`${fstest} stat ${n0} mtime` -test_check $mtime1 -lt $mtime2 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 stat ${n0} size -expect 0 unlink ${n0} - -cd ${cdir} -expect 0 rmdir ${n1} diff --git a/tests/kern/fstest/tests/open/01.t b/tests/kern/fstest/tests/open/01.t deleted file mode 100755 index a25ec8ed..00000000 --- a/tests/kern/fstest/tests/open/01.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/01.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns ENOTDIR if a component of the path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR open ${n0}/${n1}/test O_CREAT 0644 -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/open/02.t b/tests/kern/fstest/tests/open/02.t deleted file mode 100755 index 6ac818e5..00000000 --- a/tests/kern/fstest/tests/open/02.t +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/02.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -expect 0 open ${name255} O_CREAT 0620 -expect 0620 stat ${name255} mode -expect 0 unlink ${name255} -expect ENAMETOOLONG open ${name256} O_CREAT 0620 diff --git a/tests/kern/fstest/tests/open/03.t b/tests/kern/fstest/tests/open/03.t deleted file mode 100755 index 88c3226a..00000000 --- a/tests/kern/fstest/tests/open/03.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/03.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns ENAMETOOLONG if an entire path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 open ${path1023} O_CREAT 0642 -expect 0642 stat ${path1023} mode -expect 0 unlink ${path1023} -create_too_long -expect ENAMETOOLONG open ${too_long} O_CREAT 0642 -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/open/04.t b/tests/kern/fstest/tests/open/04.t deleted file mode 100755 index 10ac17a7..00000000 --- a/tests/kern/fstest/tests/open/04.t +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/04.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns ENOENT if a component of the path name that must exist does not exist or O_CREAT is not set and the named file does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect ENOENT open ${n0}/${n1}/test O_CREAT 0644 -expect ENOENT open ${n0}/${n1} O_RDONLY -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/open/05.t b/tests/kern/fstest/tests/open/05.t deleted file mode 100755 index 60b4dc38..00000000 --- a/tests/kern/fstest/tests/open/05.t +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/05.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EACCES when search permission is denied for a component of the path prefix" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 -expect 0 -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/open/06.t b/tests/kern/fstest/tests/open/06.t deleted file mode 100755 index 614f66fe..00000000 --- a/tests/kern/fstest/tests/open/06.t +++ /dev/null @@ -1,102 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/06.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EACCES when the required permissions (for reading and/or writing) are denied for the given flags" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..72" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 65534 65534 -cdir=`pwd` -cd ${n0} - -expect 0 -u 65534 -g 65534 create ${n1} 0644 - -expect 0 -u 65534 -g 65534 chmod ${n1} 0600 -expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY -expect 0 -u 65534 -g 65534 open ${n1} O_WRONLY -expect 0 -u 65534 -g 65534 open ${n1} O_RDWR -expect 0 -u 65534 -g 65534 chmod ${n1} 0060 -expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY -expect 0 -u 65533 -g 65534 open ${n1} O_WRONLY -expect 0 -u 65533 -g 65534 open ${n1} O_RDWR -expect 0 -u 65534 -g 65534 chmod ${n1} 0006 -expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY -expect 0 -u 65533 -g 65533 open ${n1} O_WRONLY -expect 0 -u 65533 -g 65533 open ${n1} O_RDWR - -expect 0 -u 65534 -g 65534 chmod ${n1} 0477 -expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY -expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY -expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR -expect 0 -u 65534 -g 65534 chmod ${n1} 0747 -expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY -expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY -expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR -expect 0 -u 65534 -g 65534 chmod ${n1} 0774 -expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY -expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY -expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR - -expect 0 -u 65534 -g 65534 chmod ${n1} 0277 -expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY -expect 0 -u 65534 -g 65534 open ${n1} O_WRONLY -expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR -expect 0 -u 65534 -g 65534 chmod ${n1} 0727 -expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY -expect 0 -u 65533 -g 65534 open ${n1} O_WRONLY -expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR -expect 0 -u 65534 -g 65534 chmod ${n1} 0772 -expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY -expect 0 -u 65533 -g 65533 open ${n1} O_WRONLY -expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR - -expect 0 -u 65534 -g 65534 chmod ${n1} 0177 -expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY -expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY -expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR -expect 0 -u 65534 -g 65534 chmod ${n1} 0717 -expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY -expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY -expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR -expect 0 -u 65534 -g 65534 chmod ${n1} 0771 -expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY -expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY -expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR - -expect 0 -u 65534 -g 65534 chmod ${n1} 0077 -expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY -expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY -expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR -expect 0 -u 65534 -g 65534 chmod ${n1} 0707 -expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY -expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY -expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR -expect 0 -u 65534 -g 65534 chmod ${n1} 0770 -expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY -expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY -expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR -# -# EACCES for opening a directory read-only with no read access -# EACCES for reading a directory with no execute access -# -cd .. -expect 0 -u 65534 -g 65534 open ${n0} O_RDONLY -expect 0 -u 65534 -g 65534 chmod ${n0} 0355 -expect EACCES -u 65534 -g 65534 open ${n0} O_RDONLY -expect 0770 -u 65534 -g 65534 stat ${n0}/${n1} mode -expect 0 -u 65534 -g 65534 chmod ${n0} 0655 -expect EACCES -u 65534 -g 65534 stat ${n0}/${n1} mode - -expect 0 -u 65534 -g 65534 chmod ${n0} 0755 -cd ${n0} -expect 0 -u 65534 -g 65534 unlink ${n1} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/open/07.t b/tests/kern/fstest/tests/open/07.t deleted file mode 100755 index ddf337c0..00000000 --- a/tests/kern/fstest/tests/open/07.t +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/07.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EACCES when O_TRUNC is specified and write permission is denied" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..23" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 65534 65534 -cdir=`pwd` -cd ${n0} - -expect 0 -u 65534 -g 65534 create ${n1} 0644 - -expect 0 -u 65534 -g 65534 chmod ${n1} 0477 -expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC -expect 0 -u 65534 -g 65534 chmod ${n1} 0747 -expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC -expect 0 -u 65534 -g 65534 chmod ${n1} 0774 -expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC - -expect 0 -u 65534 -g 65534 chmod ${n1} 0177 -expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC -expect 0 -u 65534 -g 65534 chmod ${n1} 0717 -expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC -expect 0 -u 65534 -g 65534 chmod ${n1} 0771 -expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC - -expect 0 -u 65534 -g 65534 chmod ${n1} 0077 -expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC -expect 0 -u 65534 -g 65534 chmod ${n1} 0707 -expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC -expect 0 -u 65534 -g 65534 chmod ${n1} 0770 -expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC - -expect 0 -u 65534 -g 65534 unlink ${n1} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/open/08.t b/tests/kern/fstest/tests/open/08.t deleted file mode 100755 index 1323d310..00000000 --- a/tests/kern/fstest/tests/open/08.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/08.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EACCES when O_CREAT is specified, the file does not exist, and the directory in which it is to be created does not permit writing" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..3" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_CREAT 0644 -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/open/09.t b/tests/kern/fstest/tests/open/09.t deleted file mode 100755 index bb5bbba2..00000000 --- a/tests/kern/fstest/tests/open/09.t +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/09.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="O_CREAT is specified, the file does not exist, and the directory in which it is to be created has its immutable flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..30" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644 -expect 0 chflags ${n0} none -expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644 -expect 0 chflags ${n0} none -expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} SF_APPEND -expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} UF_APPEND -expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 symlink test ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/open/10.t b/tests/kern/fstest/tests/open/10.t deleted file mode 100755 index 7602904c..00000000 --- a/tests/kern/fstest/tests/open/10.t +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/10.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EPERM when the named file has its immutable flag set and the file is to be modified" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..28" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM open ${n0} O_WRONLY -expect EPERM open ${n0} O_RDWR -expect EPERM open ${n0} O_RDONLY,O_TRUNC -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM open ${n0} O_WRONLY -expect EPERM open ${n0} O_RDWR -expect EPERM open ${n0} O_RDONLY,O_TRUNC -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 open ${n0} O_WRONLY -expect 0 open ${n0} O_RDWR -expect 0 open ${n0} O_RDONLY,O_TRUNC -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 open ${n0} O_WRONLY -expect 0 open ${n0} O_RDWR -expect 0 open ${n0} O_RDONLY,O_TRUNC -expect 0 chflags ${n0} none -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/open/11.t b/tests/kern/fstest/tests/open/11.t deleted file mode 100755 index 0af364c5..00000000 --- a/tests/kern/fstest/tests/open/11.t +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/11.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EPERM when the named file has its append-only flag set, the file is to be modified, and O_TRUNC is specified or O_APPEND is not specified" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..24" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_APPEND -expect 0 open ${n0} O_WRONLY,O_APPEND -expect 0 open ${n0} O_RDWR,O_APPEND -expect EPERM open ${n0} O_WRONLY -expect EPERM open ${n0} O_RDWR -expect EPERM open ${n0} O_RDONLY,O_TRUNC -expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC -expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC -expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_APPEND -expect 0 open ${n0} O_WRONLY,O_APPEND -expect 0 open ${n0} O_RDWR,O_APPEND -expect EPERM open ${n0} O_WRONLY -expect EPERM open ${n0} O_RDWR -expect EPERM open ${n0} O_RDONLY,O_TRUNC -expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC -expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC -expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC -expect 0 chflags ${n0} none -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/open/12.t b/tests/kern/fstest/tests/open/12.t deleted file mode 100755 index 06082202..00000000 --- a/tests/kern/fstest/tests/open/12.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/12.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns ELOOP if too many symbolic links were encountered in translating the pathname" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP open ${n0}/test O_RDONLY -expect ELOOP open ${n1}/test O_RDONLY -expect 0 unlink ${n0} -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/open/13.t b/tests/kern/fstest/tests/open/13.t deleted file mode 100755 index 7f37e445..00000000 --- a/tests/kern/fstest/tests/open/13.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/13.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EISDIR when he named file is a directory, and the arguments specify it is to be modified" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..8" - -n0=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 open ${n0} O_RDONLY -expect EISDIR open ${n0} O_WRONLY -expect EISDIR open ${n0} O_RDWR -expect EISDIR open ${n0} O_RDONLY,O_TRUNC -expect EISDIR open ${n0} O_WRONLY,O_TRUNC -expect EISDIR open ${n0} O_RDWR,O_TRUNC - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/open/14.t b/tests/kern/fstest/tests/open/14.t deleted file mode 100755 index 2d662838..00000000 --- a/tests/kern/fstest/tests/open/14.t +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/14.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EROFS if the named file resides on a read-only file system, and the file is to be modified" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..10" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - expect 0 open ${n0}/${n1} O_WRONLY - expect 0 open ${n0}/${n1} O_RDWR - expect 0 open ${n0}/${n1} O_RDONLY,O_TRUNC - mount -ur /dev/md${n} - expect EROFS open ${n0}/${n1} O_WRONLY - expect EROFS open ${n0}/${n1} O_RDWR - expect EROFS open ${n0}/${n1} O_RDONLY,O_TRUNC - mount -uw /dev/md${n} - expect 0 unlink ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/open/15.t b/tests/kern/fstest/tests/open/15.t deleted file mode 100755 index 261f6f71..00000000 --- a/tests/kern/fstest/tests/open/15.t +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/15.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EROFS when O_CREAT is specified and the named file would reside on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..5" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 - expect 0 unlink ${n0}/${n1} - mount -ur /dev/md${n} - expect EROFS open ${n0}/${n1} O_RDONLY,O_CREAT 0644 - mount -uw /dev/md${n} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/open/16.t b/tests/kern/fstest/tests/open/16.t deleted file mode 100755 index 7667b55a..00000000 --- a/tests/kern/fstest/tests/open/16.t +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/16.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EMLINK/ELOOP when O_NOFOLLOW was specified and the target is a symbolic link" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -case "${os}" in -FreeBSD) - expect EMLINK open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644 - expect EMLINK open ${n1} O_RDONLY,O_NOFOLLOW - expect EMLINK open ${n1} O_WRONLY,O_NOFOLLOW - expect EMLINK open ${n1} O_RDWR,O_NOFOLLOW - ;; -*) - expect ELOOP open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644 - expect ELOOP open ${n1} O_RDONLY,O_NOFOLLOW - expect ELOOP open ${n1} O_WRONLY,O_NOFOLLOW - expect ELOOP open ${n1} O_RDWR,O_NOFOLLOW - ;; -esac -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/open/17.t b/tests/kern/fstest/tests/open/17.t deleted file mode 100755 index d662d37c..00000000 --- a/tests/kern/fstest/tests/open/17.t +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/17.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns ENXIO when O_NONBLOCK is set, the named file is a fifo, O_WRONLY is set, and no process has the file open for reading" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..3" - -n0=`namegen` - -expect 0 mkfifo ${n0} 0644 -expect ENXIO open ${n0} O_WRONLY,O_NONBLOCK -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/open/18.t b/tests/kern/fstest/tests/open/18.t deleted file mode 100755 index 9c5fe31b..00000000 --- a/tests/kern/fstest/tests/open/18.t +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/18.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EWOULDBLOCK when O_NONBLOCK and one of O_SHLOCK or O_EXLOCK is specified and the file is locked" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}" in -FreeBSD) - echo "1..6" - - n0=`namegen` - - expect 0 create ${n0} 0644 - expect 0 open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK - expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK - expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK - expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK - expect 0 unlink ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/open/19.t b/tests/kern/fstest/tests/open/19.t deleted file mode 100755 index 9022d94b..00000000 --- a/tests/kern/fstest/tests/open/19.t +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/19.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns ENOSPC when O_CREAT is specified, the file does not exist, and there are no free inodes on the file system on which the file is being created" - - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..3" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 256k` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - i=0 - while :; do - touch ${n0}/${i} >/dev/null 2>&1 - if [ $? -ne 0 ]; then - break - fi - i=`expr $i + 1` - done - expect ENOSPC open ${n0}/${i} O_RDONLY,O_CREAT 0644 - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/open/20.t b/tests/kern/fstest/tests/open/20.t deleted file mode 100755 index db1eadae..00000000 --- a/tests/kern/fstest/tests/open/20.t +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/20.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns ETXTBSY when the file is a pure procedure (shared text) file that is being executed and the open() system call requests write access" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}" in -FreeBSD) - echo "1..4" - - n0=`namegen` - - cp -pf `which sleep` ${n0} - ./${n0} 3 & - expect ETXTBSY open ${n0} O_WRONLY - expect ETXTBSY open ${n0} O_RDWR - expect ETXTBSY open ${n0} O_RDONLY,O_TRUNC - expect 0 unlink ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/open/21.t b/tests/kern/fstest/tests/open/21.t deleted file mode 100755 index f969c82a..00000000 --- a/tests/kern/fstest/tests/open/21.t +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/21.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EFAULT if the path argument points outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..2" - -expect EFAULT open NULL O_RDONLY -expect EFAULT open DEADCODE O_RDONLY diff --git a/tests/kern/fstest/tests/open/22.t b/tests/kern/fstest/tests/open/22.t deleted file mode 100755 index 0ab17cd6..00000000 --- a/tests/kern/fstest/tests/open/22.t +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/22.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EEXIST when O_CREAT and O_EXCL were specified and the file exists" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect EEXIST open ${n0} O_CREAT,O_EXCL 0644 -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -expect EEXIST open ${n0} O_CREAT,O_EXCL 0644 -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -expect EEXIST open ${n0} O_CREAT,O_EXCL 0644 -expect 0 unlink ${n0} - -expect 0 symlink test ${n0} -expect EEXIST open ${n0} O_CREAT,O_EXCL 0644 -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/open/23.t b/tests/kern/fstest/tests/open/23.t deleted file mode 100755 index d5732948..00000000 --- a/tests/kern/fstest/tests/open/23.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/open/23.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="open returns EINVAL when an attempt was made to open a descriptor with an illegal combination of O_RDONLY, O_WRONLY, and O_RDWR" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -n0=`namegen` - -expect 0 create ${n0} 0644 -case "${os}" in -Linux) - expect 0 open ${n0} O_WRONLY,O_RDWR - expect 0 open ${n0} O_RDONLY,O_WRONLY,O_RDWR - ;; -*) - expect EINVAL open ${n0} O_WRONLY,O_RDWR - expect EINVAL open ${n0} O_RDONLY,O_WRONLY,O_RDWR - ;; -esac -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/rename/00.t b/tests/kern/fstest/tests/rename/00.t deleted file mode 100755 index 85d1014d..00000000 --- a/tests/kern/fstest/tests/rename/00.t +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/00.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename changes file name" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..79" - -n0=`namegen` -n1=`namegen` -n2=`namegen` -n3=`namegen` - -expect 0 mkdir ${n3} 0755 -cdir=`pwd` -cd ${n3} - -expect 0 create ${n0} 0644 -expect regular,0644,1 lstat ${n0} type,mode,nlink -inode=`${fstest} lstat ${n0} inode` -expect 0 rename ${n0} ${n1} -expect ENOENT lstat ${n0} type,mode,nlink -expect regular,${inode},0644,1 lstat ${n1} type,inode,mode,nlink -expect 0 link ${n1} ${n0} -expect regular,${inode},0644,2 lstat ${n0} type,inode,mode,nlink -expect regular,${inode},0644,2 lstat ${n1} type,inode,mode,nlink -expect 0 rename ${n1} ${n2} -expect regular,${inode},0644,2 lstat ${n0} type,inode,mode,nlink -expect ENOENT lstat ${n1} type,mode,nlink -expect regular,${inode},0644,2 lstat ${n2} type,inode,mode,nlink -expect 0 unlink ${n0} -expect 0 unlink ${n2} - -expect 0 mkdir ${n0} 0755 -expect dir,0755 lstat ${n0} type,mode -inode=`${fstest} lstat ${n0} inode` -expect 0 rename ${n0} ${n1} -expect ENOENT lstat ${n0} type,mode -expect dir,${inode},0755 lstat ${n1} type,inode,mode -expect 0 rmdir ${n1} - -expect 0 mkfifo ${n0} 0644 -expect fifo,0644,1 lstat ${n0} type,mode,nlink -inode=`${fstest} lstat ${n0} inode` -expect 0 rename ${n0} ${n1} -expect ENOENT lstat ${n0} type,mode,nlink -expect fifo,${inode},0644,1 lstat ${n1} type,inode,mode,nlink -expect 0 link ${n1} ${n0} -expect fifo,${inode},0644,2 lstat ${n0} type,inode,mode,nlink -expect fifo,${inode},0644,2 lstat ${n1} type,inode,mode,nlink -expect 0 rename ${n1} ${n2} -expect fifo,${inode},0644,2 lstat ${n0} type,inode,mode,nlink -expect ENOENT lstat ${n1} type,mode,nlink -expect fifo,${inode},0644,2 lstat ${n2} type,inode,mode,nlink -expect 0 unlink ${n0} -expect 0 unlink ${n2} - -expect 0 create ${n0} 0644 -rinode=`${fstest} lstat ${n0} inode` -expect regular,0644 lstat ${n0} type,mode -expect 0 symlink ${n0} ${n1} -sinode=`${fstest} lstat ${n1} inode` -expect regular,${rinode},0644 stat ${n1} type,inode,mode -expect symlink,${sinode} lstat ${n1} type,inode -expect 0 rename ${n1} ${n2} -expect regular,${rinode},0644 stat ${n0} type,inode,mode -expect ENOENT lstat ${n1} type,mode -expect symlink,${sinode} lstat ${n2} type,inode -expect 0 unlink ${n0} -expect 0 unlink ${n2} - -# successful rename(2) updates ctime. -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 rename ${n0} ${n1} -ctime2=`${fstest} stat ${n1} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n1} - -expect 0 mkdir ${n0} 0755 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 rename ${n0} ${n1} -ctime2=`${fstest} stat ${n1} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 rmdir ${n1} - -expect 0 mkfifo ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 rename ${n0} ${n1} -ctime2=`${fstest} stat ${n1} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n1} - -expect 0 symlink ${n2} ${n0} -ctime1=`${fstest} lstat ${n0} ctime` -sleep 1 -expect 0 rename ${n0} ${n1} -ctime2=`${fstest} lstat ${n1} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n1} - -# unsuccessful link(2) does not update ctime. -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EACCES -u 65534 rename ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EACCES -u 65534 rename ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EACCES -u 65534 rename ${n0} ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} - -expect 0 symlink ${n2} ${n0} -ctime1=`${fstest} lstat ${n0} ctime` -sleep 1 -expect EACCES -u 65534 rename ${n0} ${n1} -ctime2=`${fstest} lstat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} - -cd ${cdir} -expect 0 rmdir ${n3} diff --git a/tests/kern/fstest/tests/rename/01.t b/tests/kern/fstest/tests/rename/01.t deleted file mode 100755 index ec291015..00000000 --- a/tests/kern/fstest/tests/rename/01.t +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/01.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns ENAMETOOLONG if a component of either pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..8" - -n0=`namegen` - -expect 0 create ${name255} 0644 -expect 0 rename ${name255} ${n0} -expect 0 rename ${n0} ${name255} -expect 0 unlink ${name255} - -expect 0 create ${n0} 0644 -expect ENAMETOOLONG rename ${n0} ${name256} -expect 0 unlink ${n0} -expect ENAMETOOLONG rename ${name256} ${n0} diff --git a/tests/kern/fstest/tests/rename/02.t b/tests/kern/fstest/tests/rename/02.t deleted file mode 100755 index a291d6dc..00000000 --- a/tests/kern/fstest/tests/rename/02.t +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/02.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns ENAMETOOLONG if an entire length of either path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..14" - -n0=`namegen` - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 create ${n0} 0644 -expect 0 rename ${n0} ${path1023} -expect 0 rename ${path1023} ${n0} -expect ENAMETOOLONG rename ${n0} ${too_long} -expect 0 unlink ${n0} -create_too_long -expect ENAMETOOLONG rename ${too_long} ${n0} -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/rename/03.t b/tests/kern/fstest/tests/rename/03.t deleted file mode 100755 index a768393c..00000000 --- a/tests/kern/fstest/tests/rename/03.t +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/03.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns ENOENT if a component of the 'from' path does not exist, or a path prefix of 'to' does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -expect ENOENT rename ${n0}/${n1}/test ${n2} -expect 0 create ${n2} 0644 -expect ENOENT rename ${n2} ${n0}/${n1}/test -expect 0 unlink ${n2} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rename/04.t b/tests/kern/fstest/tests/rename/04.t deleted file mode 100755 index 43406289..00000000 --- a/tests/kern/fstest/tests/rename/04.t +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/04.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EACCES when a component of either path prefix denies search permission" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..18" - -n0=`namegen` -n1=`namegen` -n2=`namegen` -n3=`namegen` -n4=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 mkdir ${n2} 0755 -expect 0 chown ${n2} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 - -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} -expect 0 -u 65534 -g 65534 rename ${n2}/${n4} ${n1}/${n3} - -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n1}/${n4} -expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} - -expect 0 chmod ${n1} 0755 -expect 0 chmod ${n2} 0644 -expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} - -expect 0 unlink ${n1}/${n3} -expect 0 rmdir ${n1} -expect 0 rmdir ${n2} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rename/05.t b/tests/kern/fstest/tests/rename/05.t deleted file mode 100755 index 3b9e9b94..00000000 --- a/tests/kern/fstest/tests/rename/05.t +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/05.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EACCES when the requested link requires writing in a directory with a mode that denies write permission" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..17" - -n0=`namegen` -n1=`namegen` -n2=`namegen` -n3=`namegen` -n4=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 mkdir ${n2} 0755 -expect 0 chown ${n2} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 - -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} -expect 0 -u 65534 -g 65534 rename ${n2}/${n4} ${n1}/${n3} - -expect 0 chmod ${n2} 0555 -expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} -expect 0 chmod ${n1} 0555 -expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n1}/${n4} -expect 0 chmod ${n1} 0755 - -expect 0 unlink ${n1}/${n3} -expect 0 rmdir ${n1} -expect 0 rmdir ${n2} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rename/06.t b/tests/kern/fstest/tests/rename/06.t deleted file mode 100755 index fd88e310..00000000 --- a/tests/kern/fstest/tests/rename/06.t +++ /dev/null @@ -1,50 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/06.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EPERM if the file pointed at by the 'from' argument has its immutable, undeletable or append-only flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..84" - -n0=`namegen` -n1=`namegen` - -expect 0 create ${n0} 0644 -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n0} ${n1} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n0} ${n1} -done -expect 0 chflags ${n0} none -expect 0 rmdir ${n0} - -expect 0 mkfifo ${n0} 0644 -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n0} ${n1} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 symlink ${n1} ${n0} -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do - expect 0 lchflags ${n0} ${flag} - expect ${flag} lstat ${n0} flags - expect EPERM rename ${n0} ${n1} -done -expect 0 lchflags ${n0} none -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/rename/07.t b/tests/kern/fstest/tests/rename/07.t deleted file mode 100755 index 642e0728..00000000 --- a/tests/kern/fstest/tests/rename/07.t +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/07.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EPERM if the parent directory of the file pointed at by the 'from' argument has its immutable or append-only flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..106" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 create ${n0}/${n1} 0644 -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n0}/${n1} ${n2} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 mkdir ${n0}/${n1} 0755 -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n0}/${n1} ${n2} -done -expect 0 chflags ${n0} none -expect 0 rmdir ${n0}/${n1} - -expect 0 mkfifo ${n0}/${n1} 0644 -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n0}/${n1} ${n2} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 symlink ${n2} ${n0}/${n1} -for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n0}/${n1} ${n2} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 create ${n0}/${n1} 0644 -for flag in SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect 0 rename ${n0}/${n1} ${n2} - expect 0 rename ${n2} ${n0}/${n1} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 mkdir ${n0}/${n1} 0755 -for flag in SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect 0 rename ${n0}/${n1} ${n2} - expect 0 rename ${n2} ${n0}/${n1} -done -expect 0 chflags ${n0} none -expect 0 rmdir ${n0}/${n1} - -expect 0 mkfifo ${n0}/${n1} 0644 -for flag in SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect 0 rename ${n0}/${n1} ${n2} - expect 0 rename ${n2} ${n0}/${n1} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 symlink ${n2} ${n0}/${n1} -for flag in SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect 0 rename ${n0}/${n1} ${n2} - expect 0 rename ${n2} ${n0}/${n1} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rename/08.t b/tests/kern/fstest/tests/rename/08.t deleted file mode 100755 index 70227f11..00000000 --- a/tests/kern/fstest/tests/rename/08.t +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/08.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EPERM if the parent directory of the file pointed at by the 'to' argument has its immutable flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..126" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 create ${n1} 0644 -for flag in SF_IMMUTABLE UF_IMMUTABLE; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n1} ${n0}/${n2} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n1} - -expect 0 mkdir ${n1} 0755 -for flag in SF_IMMUTABLE UF_IMMUTABLE; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n1} ${n0}/${n2} -done -expect 0 chflags ${n0} none -expect 0 rmdir ${n1} - -expect 0 mkfifo ${n1} 0644 -for flag in SF_IMMUTABLE UF_IMMUTABLE; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n1} ${n0}/${n2} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n1} - -expect 0 symlink ${n2} ${n1} -for flag in SF_IMMUTABLE UF_IMMUTABLE; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect EPERM rename ${n1} ${n0}/${n2} -done -expect 0 chflags ${n0} none -expect 0 unlink ${n1} - -expect 0 create ${n1} 0644 -for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect 0 rename ${n1} ${n0}/${n2} - expect 0 chflags ${n0} none - expect 0 rename ${n0}/${n2} ${n1} -done -expect 0 unlink ${n1} - -expect 0 mkdir ${n1} 0755 -for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect 0 rename ${n1} ${n0}/${n2} - expect 0 chflags ${n0} none - expect 0 rename ${n0}/${n2} ${n1} -done -expect 0 rmdir ${n1} - -expect 0 mkfifo ${n1} 0644 -for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect 0 rename ${n1} ${n0}/${n2} - expect 0 chflags ${n0} none - expect 0 rename ${n0}/${n2} ${n1} -done -expect 0 unlink ${n1} - -expect 0 symlink ${n2} ${n1} -for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do - expect 0 chflags ${n0} ${flag} - expect ${flag} stat ${n0} flags - expect 0 rename ${n1} ${n0}/${n2} - expect 0 chflags ${n0} none - expect 0 rename ${n0}/${n2} ${n1} -done -expect 0 unlink ${n1} - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rename/09.t b/tests/kern/fstest/tests/rename/09.t deleted file mode 100755 index 2586719f..00000000 --- a/tests/kern/fstest/tests/rename/09.t +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/09.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EACCES or EPERM if the directory containing 'from' is marked sticky, and neither the containing directory nor 'from' are owned by the effective user ID" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..56" - -n0=`namegen` -n1=`namegen` -n2=`namegen` -n3=`namegen` -n4=`namegen` - -expect 0 mkdir ${n4} 0755 -cdir=`pwd` -cd ${n4} - -expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 65534 65534 -expect 0 chmod ${n0} 01777 - -expect 0 mkdir ${n1} 0755 - -# User owns both: the sticky directory and the file to be renamed. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n1}/${n3} -# User owns the file to be renamed, but doesn't own the sticky directory. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65533 -g 65533 create ${n0}/${n2} 0644 -expect 0 -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n1}/${n3} -# User owns the sticky directory, but doesn't own the file to be renamed. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65533 -g 65533 create ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n1}/${n3} -# User doesn't own the sticky directory nor the file to be renamed. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -expect "EACCES|EPERM" -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n0}/${n2} - -# User owns both: the sticky directory and the fifo to be renamed. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n1}/${n3} -# User owns the fifo to be renamed, but doesn't own the sticky directory. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n2} 0644 -expect 0 -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n1}/${n3} -# User owns the sticky directory, but doesn't own the fifo to be renamed. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n1}/${n3} -# User doesn't own the sticky directory nor the fifo to be renamed. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 -expect "EACCES|EPERM" -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n0}/${n2} - -# User owns both: the sticky directory and the symlink to be renamed. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n1}/${n3} -# User owns the symlink to be renamed, but doesn't own the sticky directory. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65533 -g 65533 symlink test ${n0}/${n2} -expect 0 -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n1}/${n3} -# User owns the sticky directory, but doesn't own the symlink to be renamed. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65533 -g 65533 symlink test ${n0}/${n2} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n1}/${n3} -# User doesn't own the sticky directory nor the symlink to be renamed. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2} -expect "EACCES|EPERM" -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} -expect 0 unlink ${n0}/${n2} - -expect 0 rmdir ${n1} -expect 0 rmdir ${n0} - -cd ${cdir} -expect 0 rmdir ${n4} diff --git a/tests/kern/fstest/tests/rename/10.t b/tests/kern/fstest/tests/rename/10.t deleted file mode 100755 index 3441f2e9..00000000 --- a/tests/kern/fstest/tests/rename/10.t +++ /dev/null @@ -1,243 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/10.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EACCES or EPERM if the file pointed at by the 'to' argument exists, the directory containing 'to' is marked sticky, and neither the containing directory nor 'to' are owned by the effective user ID" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..188" - -n0=`namegen` -n1=`namegen` -n2=`namegen` -n3=`namegen` -n4=`namegen` - -expect 0 mkdir ${n4} 0755 -cdir=`pwd` -cd ${n4} - -expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 65534 65534 - -expect 0 mkdir ${n1} 0755 -expect 0 chmod ${n1} 01777 - -# User owns both: the sticky directory and the destination file. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -inode=`${fstest} lstat ${n0}/${n2} inode` -expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} -expect ${inode} lstat ${n0}/${n2} inode -expect ENOENT lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n1}/${n3} -# User owns the sticky directory, but doesn't own the destination file. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -inode=`${fstest} lstat ${n0}/${n2} inode` -expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} type -expect ${inode} lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} -expect ${inode} lstat ${n0}/${n2} inode -expect ENOENT lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n1}/${n3} -# User owns the destination file, but doesn't own the sticky directory. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -inode=`${fstest} lstat ${n0}/${n2} inode` -expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} type -expect ${inode} lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} -expect ${inode} lstat ${n0}/${n2} inode -expect ENOENT lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n1}/${n3} -# User doesn't own the sticky directory nor the destination file. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -expect 0 -u 65533 -g 65533 create ${n1}/${n3} 0644 -inode=`${fstest} lstat ${n1}/${n3} inode` -expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n0}/${n2} -expect 0 unlink ${n1}/${n3} - -# User owns both: the sticky directory and the destination file. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755 -expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} type -expect 0 rmdir ${n1}/${n3} -# User owns the sticky directory, but doesn't own the destination file. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755 -expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} type -expect 0 rmdir ${n1}/${n3} -# User owns the destination file, but doesn't own the sticky directory. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755 -expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} type -expect 0 rmdir ${n1}/${n3} -# User doesn't own the sticky directory nor the destination file. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755 -expect 0 -u 65533 -g 65533 mkdir ${n1}/${n3} 0755 -expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect 0 rmdir ${n0}/${n2} -expect 0 rmdir ${n1}/${n3} - -# User owns both: the sticky directory and the destination file. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 -inode=`${fstest} lstat ${n0}/${n2} inode` -expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} -expect ${inode} lstat ${n0}/${n2} inode -expect ENOENT lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n1}/${n3} -# User owns the sticky directory, but doesn't own the destination file. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 -inode=`${fstest} lstat ${n0}/${n2} inode` -expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} type -expect ${inode} lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} -expect ${inode} lstat ${n0}/${n2} inode -expect ENOENT lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n1}/${n3} -# User owns the destination file, but doesn't own the sticky directory. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 -inode=`${fstest} lstat ${n0}/${n2} inode` -expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} type -expect ${inode} lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} -expect ${inode} lstat ${n0}/${n2} inode -expect ENOENT lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n1}/${n3} -# User doesn't own the sticky directory nor the destination file. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 -expect 0 -u 65533 -g 65533 mkfifo ${n1}/${n3} 0644 -inode=`${fstest} lstat ${n1}/${n3} inode` -expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n0}/${n2} -expect 0 unlink ${n1}/${n3} - -# User owns both: the sticky directory and the destination file. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2} -inode=`${fstest} lstat ${n0}/${n2} inode` -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} -expect ${inode} lstat ${n0}/${n2} inode -expect ENOENT lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n1}/${n3} -# User owns the sticky directory, but doesn't own the destination file. -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2} -inode=`${fstest} lstat ${n0}/${n2} inode` -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} type -expect ${inode} lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} -expect ${inode} lstat ${n0}/${n2} inode -expect ENOENT lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n1}/${n3} -# User owns the destination file, but doesn't own the sticky directory. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2} -inode=`${fstest} lstat ${n0}/${n2} inode` -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3} -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} type -expect ${inode} lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 -expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} -expect ${inode} lstat ${n0}/${n2} inode -expect ENOENT lstat ${n1}/${n3} inode -expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644 -expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ENOENT lstat ${n0}/${n2} inode -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n1}/${n3} -# User doesn't own the sticky directory nor the destination file. -expect 0 chown ${n1} 65533 65533 -expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2} -expect 0 -u 65533 -g 65533 symlink test ${n1}/${n3} -inode=`${fstest} lstat ${n1}/${n3} inode` -expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} -expect ${inode} lstat ${n1}/${n3} inode -expect 0 unlink ${n0}/${n2} -expect 0 unlink ${n1}/${n3} - -expect 0 rmdir ${n1} -expect 0 rmdir ${n0} - -cd ${cdir} -expect 0 rmdir ${n4} diff --git a/tests/kern/fstest/tests/rename/11.t b/tests/kern/fstest/tests/rename/11.t deleted file mode 100755 index 53e15538..00000000 --- a/tests/kern/fstest/tests/rename/11.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/11.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns ELOOP if too many symbolic links were encountered in translating one of the pathnames" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..10" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP rename ${n0}/test ${n2} -expect ELOOP rename ${n1}/test ${n2} -expect 0 create ${n2} 0644 -expect ELOOP rename ${n2} ${n0}/test -expect ELOOP rename ${n2} ${n1}/test -expect 0 unlink ${n0} -expect 0 unlink ${n1} -expect 0 unlink ${n2} diff --git a/tests/kern/fstest/tests/rename/12.t b/tests/kern/fstest/tests/rename/12.t deleted file mode 100755 index c5b03a3d..00000000 --- a/tests/kern/fstest/tests/rename/12.t +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/12.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns ENOTDIR if a component of either path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..8" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR rename ${n0}/${n1}/test ${n0}/${n2} -expect 0 create ${n0}/${n2} 0644 -expect ENOTDIR link ${n0}/${n2} ${n0}/${n1}/test -expect 0 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n2} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rename/13.t b/tests/kern/fstest/tests/rename/13.t deleted file mode 100755 index 984351bf..00000000 --- a/tests/kern/fstest/tests/rename/13.t +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/13.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns ENOTDIR when the 'from' argument is a directory, but 'to' is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..17" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 create ${n1} 0644 -expect ENOTDIR rename ${n0} ${n1} -expect dir lstat ${n0} type -expect regular lstat ${n1} type -expect 0 unlink ${n1} - -expect 0 mkfifo ${n1} 0644 -expect ENOTDIR rename ${n0} ${n1} -expect dir lstat ${n0} type -expect fifo lstat ${n1} type -expect 0 unlink ${n1} - -expect 0 symlink test ${n1} -expect ENOTDIR rename ${n0} ${n1} -expect dir lstat ${n0} type -expect symlink lstat ${n1} type -expect 0 unlink ${n1} - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rename/14.t b/tests/kern/fstest/tests/rename/14.t deleted file mode 100755 index 0b708c23..00000000 --- a/tests/kern/fstest/tests/rename/14.t +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/14.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EISDIR when the 'to' argument is a directory, but 'from' is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..17" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 create ${n1} 0644 -expect EISDIR rename ${n1} ${n0} -expect dir lstat ${n0} type -expect regular lstat ${n1} type -expect 0 unlink ${n1} - -expect 0 mkfifo ${n1} 0644 -expect EISDIR rename ${n1} ${n0} -expect dir lstat ${n0} type -expect fifo lstat ${n1} type -expect 0 unlink ${n1} - -expect 0 symlink test ${n1} -expect EISDIR rename ${n1} ${n0} -expect dir lstat ${n0} type -expect symlink lstat ${n1} type -expect 0 unlink ${n1} - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rename/15.t b/tests/kern/fstest/tests/rename/15.t deleted file mode 100755 index 64a75ccb..00000000 --- a/tests/kern/fstest/tests/rename/15.t +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/15.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EXDEV if the link named by 'to' and the file named by 'from' are on different file systems" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}" in -FreeBSD) - echo "1..14" - - n0=`namegen` - n1=`namegen` - n2=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - - expect 0 create ${n0}/${n1} 0644 - expect EXDEV rename ${n0}/${n1} ${n2} - expect 0 unlink ${n0}/${n1} - - expect 0 mkdir ${n0}/${n1} 0755 - expect EXDEV rename ${n0}/${n1} ${n2} - expect 0 rmdir ${n0}/${n1} - - expect 0 mkfifo ${n0}/${n1} 0644 - expect EXDEV rename ${n0}/${n1} ${n2} - expect 0 unlink ${n0}/${n1} - - expect 0 symlink test ${n0}/${n1} - expect EXDEV rename ${n0}/${n1} ${n2} - expect 0 unlink ${n0}/${n1} - - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/rename/16.t b/tests/kern/fstest/tests/rename/16.t deleted file mode 100755 index ba2a9271..00000000 --- a/tests/kern/fstest/tests/rename/16.t +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/16.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EROFS if the requested link requires writing in a directory on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}" in -FreeBSD) - echo "1..8" - - n0=`namegen` - n1=`namegen` - n2=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - mount -ur /dev/md${n} - - expect EROFS rename ${n0}/${n1} ${n0}/${n2} - expect EROFS rename ${n0}/${n1} ${n2} - expect 0 create ${n2} 0644 - expect EROFS rename ${n2} ${n0}/${n2} - expect 0 unlink ${n2} - - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/rename/17.t b/tests/kern/fstest/tests/rename/17.t deleted file mode 100755 index c949b964..00000000 --- a/tests/kern/fstest/tests/rename/17.t +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/17.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EFAULT if one of the pathnames specified is outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..8" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect EFAULT rename ${n0} NULL -expect EFAULT rename ${n0} DEADCODE -expect 0 unlink ${n0} -expect EFAULT rename NULL ${n0} -expect EFAULT rename DEADCODE ${n0} -expect EFAULT rename NULL DEADCODE -expect EFAULT rename DEADCODE NULL diff --git a/tests/kern/fstest/tests/rename/18.t b/tests/kern/fstest/tests/rename/18.t deleted file mode 100755 index d3fb3a4c..00000000 --- a/tests/kern/fstest/tests/rename/18.t +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/18.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EINVAL when the 'from' argument is a parent directory of 'to'" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 mkdir ${n0}/${n1} 0755 - -expect EINVAL rename ${n0} ${n0}/${n1} -expect EINVAL rename ${n0} ${n0}/${n1}/${n2} - -expect 0 rmdir ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rename/19.t b/tests/kern/fstest/tests/rename/19.t deleted file mode 100755 index 82e3864e..00000000 --- a/tests/kern/fstest/tests/rename/19.t +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/19.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EINVAL when an attempt is made to rename '.' or '..'" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 mkdir ${n0}/${n1} 0755 - -case "${os}" in -Linux) - expect EBUSY rename ${n0}/${n1}/. ${n2} - expect EBUSY rename ${n0}/${n1}/.. ${n2} - ;; -*) - expect EINVAL rename ${n0}/${n1}/. ${n2} - expect EINVAL rename ${n0}/${n1}/.. ${n2} - ;; -esac - -expect 0 rmdir ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rename/20.t b/tests/kern/fstest/tests/rename/20.t deleted file mode 100755 index 82ea13a2..00000000 --- a/tests/kern/fstest/tests/rename/20.t +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rename/20.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ - -desc="rename returns EEXIST or ENOTEMPTY if the 'to' argument is a directory and is not empty" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..16" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 mkdir ${n1} 0755 - -expect 0 create ${n1}/${n2} 0644 -expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1} -expect 0 unlink ${n1}/${n2} - -expect 0 mkdir ${n1}/${n2} 0755 -expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1} -expect 0 rmdir ${n1}/${n2} - -expect 0 mkfifo ${n1}/${n2} 0644 -expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1} -expect 0 unlink ${n1}/${n2} - -expect 0 symlink test ${n1}/${n2} -expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1} -expect 0 unlink ${n1}/${n2} - -expect 0 rmdir ${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rmdir/00.t b/tests/kern/fstest/tests/rmdir/00.t deleted file mode 100755 index 8e49f035..00000000 --- a/tests/kern/fstest/tests/rmdir/00.t +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/00.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir removes directories" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..10" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect dir lstat ${n0} type -expect 0 rmdir ${n0} -expect ENOENT lstat ${n0} type - -expect 0 mkdir ${n0} 0755 -expect 0 mkdir ${n0}/${n1} 0755 -time=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 rmdir ${n0}/${n1} -mtime=`${fstest} stat ${n0} mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat ${n0} ctime` -test_check $time -lt $ctime -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rmdir/01.t b/tests/kern/fstest/tests/rmdir/01.t deleted file mode 100755 index d7b8345b..00000000 --- a/tests/kern/fstest/tests/rmdir/01.t +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/01.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns ENOTDIR if a component of the path is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..14" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR rmdir ${n0}/${n1}/test -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} - -expect 0 create ${n0} 0644 -expect ENOTDIR rmdir ${n0} -expect 0 unlink ${n0} - -expect 0 symlink ${n1} ${n0} -expect ENOTDIR rmdir ${n0} -expect 0 unlink ${n0} - -expect 0 mkfifo ${n0} 0644 -expect ENOTDIR rmdir ${n0} -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/rmdir/02.t b/tests/kern/fstest/tests/rmdir/02.t deleted file mode 100755 index a37a7a46..00000000 --- a/tests/kern/fstest/tests/rmdir/02.t +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/02.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -expect 0 mkdir ${name255} 0755 -expect 0 rmdir ${name255} -expect ENOENT rmdir ${name255} -expect ENAMETOOLONG rmdir ${name256} diff --git a/tests/kern/fstest/tests/rmdir/03.t b/tests/kern/fstest/tests/rmdir/03.t deleted file mode 100755 index fbbf2413..00000000 --- a/tests/kern/fstest/tests/rmdir/03.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/03.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns ENAMETOOLONG if an entire path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 mkdir ${path1023} 0755 -expect 0 rmdir ${path1023} -expect ENOENT rmdir ${path1023} -create_too_long -expect ENAMETOOLONG rmdir ${too_long} -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/rmdir/04.t b/tests/kern/fstest/tests/rmdir/04.t deleted file mode 100755 index 1984c0a1..00000000 --- a/tests/kern/fstest/tests/rmdir/04.t +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/04.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns ENOENT if the named directory does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 rmdir ${n0} -expect ENOENT rmdir ${n0} -expect ENOENT rmdir ${n1} diff --git a/tests/kern/fstest/tests/rmdir/05.t b/tests/kern/fstest/tests/rmdir/05.t deleted file mode 100755 index f4a39d52..00000000 --- a/tests/kern/fstest/tests/rmdir/05.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/05.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns ELOOP if too many symbolic links were encountered in translating the pathname" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP rmdir ${n0}/test -expect ELOOP rmdir ${n1}/test -expect 0 unlink ${n0} -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/rmdir/06.t b/tests/kern/fstest/tests/rmdir/06.t deleted file mode 100755 index e552f95b..00000000 --- a/tests/kern/fstest/tests/rmdir/06.t +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/06.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns EEXIST or ENOTEMPTY the named directory contains files other than '.' and '..' in it" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..20" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 mkdir ${n0}/${n1} 0755 -expect "EEXIST|ENOTEMPTY" rmdir ${n0} -expect 0 rmdir ${n0}/${n1} -expect 0 rmdir ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect "EEXIST|ENOTEMPTY" rmdir ${n0} -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 symlink test ${n0}/${n1} -expect "EEXIST|ENOTEMPTY" rmdir ${n0} -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 mkfifo ${n0}/${n1} 0644 -expect "EEXIST|ENOTEMPTY" rmdir ${n0} -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rmdir/07.t b/tests/kern/fstest/tests/rmdir/07.t deleted file mode 100755 index 78af4755..00000000 --- a/tests/kern/fstest/tests/rmdir/07.t +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/07.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns EACCES when search permission is denied for a component of the path prefix" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..10" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 rmdir ${n1}/${n2} -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rmdir/08.t b/tests/kern/fstest/tests/rmdir/08.t deleted file mode 100755 index a8994d0e..00000000 --- a/tests/kern/fstest/tests/rmdir/08.t +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/08.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns EACCES when write permission is denied on the directory containing the link to be removed" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..10" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 -expect 0 chmod ${n1} 0555 -expect EACCES -u 65534 -g 65534 rmdir ${n1}/${n2} -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rmdir/09.t b/tests/kern/fstest/tests/rmdir/09.t deleted file mode 100755 index 0471f670..00000000 --- a/tests/kern/fstest/tests/rmdir/09.t +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/09.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns EPERM if the named file has its immutable, undeletable or append-only flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..30" - -n0=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM rmdir ${n0} -expect 0 chflags ${n0} none -expect 0 rmdir ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM rmdir ${n0} -expect 0 chflags ${n0} none -expect 0 rmdir ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 chflags ${n0} SF_NOUNLINK -expect EPERM rmdir ${n0} -expect 0 chflags ${n0} none -expect 0 rmdir ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 chflags ${n0} UF_NOUNLINK -expect EPERM rmdir ${n0} -expect 0 chflags ${n0} none -expect 0 rmdir ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 chflags ${n0} SF_APPEND -expect EPERM rmdir ${n0} -expect 0 chflags ${n0} none -expect 0 rmdir ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 chflags ${n0} UF_APPEND -expect EPERM rmdir ${n0} -expect 0 chflags ${n0} none -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rmdir/10.t b/tests/kern/fstest/tests/rmdir/10.t deleted file mode 100755 index 9d2ae7a8..00000000 --- a/tests/kern/fstest/tests/rmdir/10.t +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/10.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns EPERM if the parent directory of the named file has its immutable or append-only flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..30" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM rmdir ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 rmdir ${n0}/${n1} - -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM rmdir ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 rmdir ${n0}/${n1} - -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 chflags ${n0} SF_APPEND -expect EPERM rmdir ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 rmdir ${n0}/${n1} - -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 chflags ${n0} UF_APPEND -expect EPERM rmdir ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 rmdir ${n0}/${n1} - -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 rmdir ${n0}/${n1} -expect 0 chflags ${n0} none - -expect 0 mkdir ${n0}/${n1} 0755 -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 rmdir ${n0}/${n1} -expect 0 chflags ${n0} none - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rmdir/11.t b/tests/kern/fstest/tests/rmdir/11.t deleted file mode 100755 index 2ed72576..00000000 --- a/tests/kern/fstest/tests/rmdir/11.t +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/11.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns EACCES or EPERM if the directory containing the directory to be removed is marked sticky, and neither the containing directory nor the directory to be removed are owned by the effective user ID" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..15" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n2} 0755 -cdir=`pwd` -cd ${n2} - -expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 65534 65534 -expect 0 chmod ${n0} 01777 - -# User owns both: the sticky directory and the directory to be removed. -expect 0 -u 65534 -g 65534 mkdir ${n0}/${n1} 0755 -expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} -# User owns the directory to be removed, but doesn't own the sticky directory. -expect 0 -u 65533 -g 65533 mkdir ${n0}/${n1} 0755 -expect 0 -u 65533 -g 65533 rmdir ${n0}/${n1} -# User owns the sticky directory, but doesn't own the directory to be removed. -expect 0 -u 65533 -g 65533 mkdir ${n0}/${n1} 0755 -expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} -# User doesn't own the sticky directory nor the directory to be removed. -expect 0 -u 65534 -g 65534 mkdir ${n0}/${n1} 0755 -expect "EACCES|EPERM" -u 65533 -g 65533 rmdir ${n0}/${n1} -expect 0 rmdir ${n0}/${n1} - -expect 0 rmdir ${n0} - -cd ${cdir} -expect 0 rmdir ${n2} diff --git a/tests/kern/fstest/tests/rmdir/12.t b/tests/kern/fstest/tests/rmdir/12.t deleted file mode 100755 index 55e8829c..00000000 --- a/tests/kern/fstest/tests/rmdir/12.t +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/12.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns EINVAL if the last component of the path is '.' or '..'" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 mkdir ${n0}/${n1} 0755 -expect EINVAL rmdir ${n0}/${n1}/. -case "${os}" in -FreeBSD) - expect EINVAL rmdir ${n0}/${n1}/.. - ;; -Linux) - expect 'ENOTEMPTY|EEXIST' rmdir ${n0}/${n1}/.. - ;; -*) - expect EEXIST rmdir ${n0}/${n1}/.. - ;; -esac -expect 0 rmdir ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/rmdir/13.t b/tests/kern/fstest/tests/rmdir/13.t deleted file mode 100755 index 8f9d04cb..00000000 --- a/tests/kern/fstest/tests/rmdir/13.t +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/13.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns EBUSY if the directory to be removed is the mount point for a mounted file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}" in -FreeBSD) - echo "1..3" - - n0=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect EBUSY rmdir ${n0} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/rmdir/14.t b/tests/kern/fstest/tests/rmdir/14.t deleted file mode 100755 index a1e136d8..00000000 --- a/tests/kern/fstest/tests/rmdir/14.t +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/14.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns EROFS if the named file resides on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..5" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 mkdir ${n0}/${n1} 0755 - mount -ur /dev/md${n} - expect EROFS rmdir ${n0}/${n1} - mount -uw /dev/md${n} - expect 0 rmdir ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/rmdir/15.t b/tests/kern/fstest/tests/rmdir/15.t deleted file mode 100755 index 54688633..00000000 --- a/tests/kern/fstest/tests/rmdir/15.t +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/rmdir/15.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="rmdir returns EFAULT if the path argument points outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..2" - -expect EFAULT rmdir NULL -expect EFAULT rmdir DEADCODE diff --git a/tests/kern/fstest/tests/symlink/00.t b/tests/kern/fstest/tests/symlink/00.t deleted file mode 100755 index 26c80a88..00000000 --- a/tests/kern/fstest/tests/symlink/00.t +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/00.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink creates symbolic links" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..14" - -n0=`namegen` -n1=`namegen` - -expect 0 create ${n0} 0644 -expect regular,0644 lstat ${n0} type,mode -expect 0 symlink ${n0} ${n1} -expect symlink lstat ${n1} type -expect regular,0644 stat ${n1} type,mode -expect 0 unlink ${n0} -expect ENOENT stat ${n1} type,mode -expect 0 unlink ${n1} - -expect 0 mkdir ${n0} 0755 -time=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 symlink test ${n0}/${n1} -mtime=`${fstest} stat ${n0} mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat ${n0} ctime` -test_check $time -lt $ctime -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/symlink/01.t b/tests/kern/fstest/tests/symlink/01.t deleted file mode 100755 index bf9495b9..00000000 --- a/tests/kern/fstest/tests/symlink/01.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/01.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns ENOTDIR if a component of the name2 path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR symlink test ${n0}/${n1}/test -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/symlink/02.t b/tests/kern/fstest/tests/symlink/02.t deleted file mode 100755 index 2ab046ca..00000000 --- a/tests/kern/fstest/tests/symlink/02.t +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/02.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns ENAMETOOLONG if a component of the name2 pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..7" - -n0=`namegen` - -expect 0 symlink ${name255} ${n0} -expect 0 unlink ${n0} -expect 0 symlink ${n0} ${name255} -expect 0 unlink ${name255} - -expect ENAMETOOLONG symlink ${n0} ${name256} -expect 0 symlink ${name256} ${n0} -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/symlink/03.t b/tests/kern/fstest/tests/symlink/03.t deleted file mode 100755 index 570594b8..00000000 --- a/tests/kern/fstest/tests/symlink/03.t +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/03.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns ENAMETOOLONG if an entire length of either path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..14" - -n0=`namegen` - -expect 0 symlink ${path1023} ${n0} -expect 0 unlink ${n0} -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 symlink ${n0} ${path1023} -expect 0 unlink ${path1023} -create_too_long -expect ENAMETOOLONG symlink ${n0} ${too_long} -expect ENAMETOOLONG symlink ${too_long} ${n0} -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/symlink/04.t b/tests/kern/fstest/tests/symlink/04.t deleted file mode 100755 index e6b1d20a..00000000 --- a/tests/kern/fstest/tests/symlink/04.t +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/04.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns ENOENT if a component of the name2 path prefix does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..3" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect ENOENT symlink test ${n0}/${n1}/test -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/symlink/05.t b/tests/kern/fstest/tests/symlink/05.t deleted file mode 100755 index 932eabc5..00000000 --- a/tests/kern/fstest/tests/symlink/05.t +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/05.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns EACCES when a component of the name2 path prefix denies search permission" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 - -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} - -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 symlink test ${n1}/${n2} -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} - -expect 0 rmdir ${n1} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/symlink/06.t b/tests/kern/fstest/tests/symlink/06.t deleted file mode 100755 index 0a93657e..00000000 --- a/tests/kern/fstest/tests/symlink/06.t +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/06.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns EACCES if the parent directory of the file to be created denies write permission" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} - -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 - -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} - -expect 0 chmod ${n1} 0555 -expect EACCES -u 65534 -g 65534 symlink test ${n1}/${n2} -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} -expect 0 unlink ${n1}/${n2} - -expect 0 rmdir ${n1} - -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/symlink/07.t b/tests/kern/fstest/tests/symlink/07.t deleted file mode 100755 index 596df07d..00000000 --- a/tests/kern/fstest/tests/symlink/07.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/07.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns ELOOP if too many symbolic links were encountered in translating the name2 path name" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP symlink test ${n0}/test -expect ELOOP symlink test ${n1}/test -expect 0 unlink ${n0} -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/symlink/08.t b/tests/kern/fstest/tests/symlink/08.t deleted file mode 100755 index 55ec809c..00000000 --- a/tests/kern/fstest/tests/symlink/08.t +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/08.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns EEXIST if the name2 argument already exists" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..9" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect EEXIST symlink test ${n0} -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -expect EEXIST symlink test ${n0} -expect 0 rmdir ${n0} - -expect 0 symlink test ${n0} -expect EEXIST symlink test ${n0} -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/symlink/09.t b/tests/kern/fstest/tests/symlink/09.t deleted file mode 100755 index 6458925b..00000000 --- a/tests/kern/fstest/tests/symlink/09.t +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/09.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns EPERM if the parent directory of the file named by name2 has its immutable flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..30" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 symlink test ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM symlink test ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 symlink test ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM symlink test ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 symlink test ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} SF_APPEND -expect 0 symlink test ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} UF_APPEND -expect 0 symlink test ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 symlink test ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 symlink test ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/symlink/10.t b/tests/kern/fstest/tests/symlink/10.t deleted file mode 100755 index c7697d79..00000000 --- a/tests/kern/fstest/tests/symlink/10.t +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/10.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns EROFS if the file name2 would reside on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..7" - - n0=`namegen` - n1=`namegen` - n2=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - - expect 0 symlink test ${n0}/${n1} - expect 0 unlink ${n0}/${n1} - mount -ur /dev/md${n} - expect EROFS symlink test ${n0}/${n1} - mount -uw /dev/md${n} - expect 0 symlink test ${n0}/${n1} - expect 0 unlink ${n0}/${n1} - - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/symlink/11.t b/tests/kern/fstest/tests/symlink/11.t deleted file mode 100755 index bdf17719..00000000 --- a/tests/kern/fstest/tests/symlink/11.t +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/11.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns ENOSPC if there are no free inodes on the file system on which the symbolic link is being created" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..3" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 256k` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - i=0 - while :; do - ln -s test ${n0}/${i} >/dev/null 2>&1 - if [ $? -ne 0 ]; then - break - fi - i=`expr $i + 1` - done - expect ENOSPC symlink test ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/symlink/12.t b/tests/kern/fstest/tests/symlink/12.t deleted file mode 100755 index 2893e64c..00000000 --- a/tests/kern/fstest/tests/symlink/12.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/symlink/12.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ - -desc="symlink returns EFAULT if one of the pathnames specified is outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` - -expect EFAULT symlink NULL ${n0} -expect EFAULT symlink DEADCODE ${n0} -expect EFAULT symlink test NULL -expect EFAULT symlink test DEADCODE -expect EFAULT symlink NULL DEADCODE -expect EFAULT symlink DEADCODE NULL diff --git a/tests/kern/fstest/tests/truncate/00.t b/tests/kern/fstest/tests/truncate/00.t deleted file mode 100755 index 04530252..00000000 --- a/tests/kern/fstest/tests/truncate/00.t +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/00.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate descrease/increase file size" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..21" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n1} 0755 -cdir=`pwd` -cd ${n1} - -expect 0 create ${n0} 0644 -expect 0 truncate ${n0} 1234567 -expect 1234567 lstat ${n0} size -expect 0 truncate ${n0} 567 -expect 567 lstat ${n0} size -expect 0 unlink ${n0} - -dd if=/dev/urandom of=${n0} bs=12345 count=1 >/dev/null 2>&1 -expect 0 truncate ${n0} 23456 -expect 23456 lstat ${n0} size -expect 0 truncate ${n0} 1 -expect 1 lstat ${n0} size -expect 0 unlink ${n0} - -# successful truncate(2) updates ctime. -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 truncate ${n0} 123 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} - -# unsuccessful truncate(2) does not update ctime. -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EACCES -u 65534 truncate ${n0} 123 -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} - -cd ${cdir} -expect 0 rmdir ${n1} diff --git a/tests/kern/fstest/tests/truncate/01.t b/tests/kern/fstest/tests/truncate/01.t deleted file mode 100755 index 7e477d1a..00000000 --- a/tests/kern/fstest/tests/truncate/01.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/01.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns ENOTDIR if a component of the path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR truncate ${n0}/${n1}/test 123 -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/truncate/02.t b/tests/kern/fstest/tests/truncate/02.t deleted file mode 100755 index b104ec63..00000000 --- a/tests/kern/fstest/tests/truncate/02.t +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/02.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -expect 0 create ${name255} 0644 -expect 0 truncate ${name255} 123 -expect 123 stat ${name255} size -expect 0 unlink ${name255} -expect ENAMETOOLONG truncate ${name256} 123 diff --git a/tests/kern/fstest/tests/truncate/03.t b/tests/kern/fstest/tests/truncate/03.t deleted file mode 100755 index 0cad07fe..00000000 --- a/tests/kern/fstest/tests/truncate/03.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/03.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns ENAMETOOLONG if an entire path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 create ${path1023} 0644 -expect 0 truncate ${path1023} 123 -expect 0 unlink ${path1023} -create_too_long -expect ENAMETOOLONG truncate ${too_long} 123 -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/truncate/04.t b/tests/kern/fstest/tests/truncate/04.t deleted file mode 100755 index 44891ed2..00000000 --- a/tests/kern/fstest/tests/truncate/04.t +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/04.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns ENOENT if the named file does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect ENOENT truncate ${n0}/${n1}/test 123 -expect ENOENT truncate ${n0}/${n1} 123 -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/truncate/05.t b/tests/kern/fstest/tests/truncate/05.t deleted file mode 100755 index fe5a7d54..00000000 --- a/tests/kern/fstest/tests/truncate/05.t +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/05.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns EACCES when search permission is denied for a component of the path prefix" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..15" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 -expect 0 -u 65534 -g 65534 truncate ${n1}/${n2} 123 -expect 123 -u 65534 -g 65534 stat ${n1}/${n2} size -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 truncate ${n1}/${n2} 1234 -expect 0 chmod ${n1} 0755 -expect 123 -u 65534 -g 65534 stat ${n1}/${n2} size -expect 0 -u 65534 -g 65534 truncate ${n1}/${n2} 1234 -expect 1234 -u 65534 -g 65534 stat ${n1}/${n2} size -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/truncate/06.t b/tests/kern/fstest/tests/truncate/06.t deleted file mode 100755 index 66f73ac9..00000000 --- a/tests/kern/fstest/tests/truncate/06.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/06.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns EACCES if the named file is not writable by the user" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..8" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 create ${n1} 0644 -expect EACCES -u 65534 -g 65534 truncate ${n1} 123 -expect 0 chown ${n1} 65534 65534 -expect 0 chmod ${n1} 0444 -expect EACCES -u 65534 -g 65534 truncate ${n1} 123 -expect 0 unlink ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/truncate/07.t b/tests/kern/fstest/tests/truncate/07.t deleted file mode 100755 index 1954d833..00000000 --- a/tests/kern/fstest/tests/truncate/07.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/07.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns ELOOP if too many symbolic links were encountered in translating the pathname" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP truncate ${n0}/test 123 -expect ELOOP truncate ${n1}/test 123 -expect 0 unlink ${n0} -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/truncate/08.t b/tests/kern/fstest/tests/truncate/08.t deleted file mode 100755 index 6adfb69c..00000000 --- a/tests/kern/fstest/tests/truncate/08.t +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/08.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns EPERM if the named file has its immutable or append-only flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..40" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM truncate ${n0} 123 -expect 0 stat ${n0} size -expect 0 chflags ${n0} none -expect 0 truncate ${n0} 123 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM truncate ${n0} 123 -expect 0 stat ${n0} size -expect 0 chflags ${n0} none -expect 0 truncate ${n0} 123 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_APPEND -expect EPERM truncate ${n0} 123 -expect 0 stat ${n0} size -expect 0 chflags ${n0} none -expect 0 truncate ${n0} 123 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_APPEND -expect EPERM truncate ${n0} 123 -expect 0 stat ${n0} size -expect 0 chflags ${n0} none -expect 0 truncate ${n0} 123 -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 truncate ${n0} 123 -expect 123 stat ${n0} size -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 truncate ${n0} 123 -expect 123 stat ${n0} size -expect 0 chflags ${n0} none -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/truncate/09.t b/tests/kern/fstest/tests/truncate/09.t deleted file mode 100755 index 735cfe54..00000000 --- a/tests/kern/fstest/tests/truncate/09.t +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/09.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns EISDIR if the named file is a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..3" - -n0=`namegen` - -expect 0 mkdir ${n0} 0755 -expect EISDIR truncate ${n0} 123 -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/truncate/10.t b/tests/kern/fstest/tests/truncate/10.t deleted file mode 100755 index 436cc101..00000000 --- a/tests/kern/fstest/tests/truncate/10.t +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/10.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns EROFS if the named file resides on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..10" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - expect 0 truncate ${n0}/${n1} 123 - expect 123 stat ${n0}/${n1} size - mount -ur /dev/md${n} - expect EROFS truncate ${n0}/${n1} 1234 - expect 123 stat ${n0}/${n1} size - mount -uw /dev/md${n} - expect 0 truncate ${n0}/${n1} 1234 - expect 1234 stat ${n0}/${n1} size - expect 0 unlink ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/truncate/11.t b/tests/kern/fstest/tests/truncate/11.t deleted file mode 100755 index 418b8f56..00000000 --- a/tests/kern/fstest/tests/truncate/11.t +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/11.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns ETXTBSY the file is a pure procedure (shared text) file that is being executed" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}" in -FreeBSD) - echo "1..2" - - n0=`namegen` - - cp -pf `which sleep` ${n0} - ./${n0} 3 & - expect ETXTBSY truncate ${n0} 123 - expect 0 unlink ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/truncate/12.t b/tests/kern/fstest/tests/truncate/12.t deleted file mode 100755 index 4091fdc8..00000000 --- a/tests/kern/fstest/tests/truncate/12.t +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/12.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns EFBIG or EINVAL if the length argument was greater than the maximum file size" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..3" - -n0=`namegen` - -expect 0 create ${n0} 0644 -r=`${fstest} truncate ${n0} 999999999999999 2>/dev/null` -case "${r}" in -EFBIG|EINVAL) - expect 0 stat ${n0} size - ;; -0) - expect 999999999999999 stat ${n0} size - ;; -*) - echo "not ok ${ntest}" - ntest=`expr ${ntest} + 1` - ;; -esac -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/truncate/13.t b/tests/kern/fstest/tests/truncate/13.t deleted file mode 100755 index ac0523c9..00000000 --- a/tests/kern/fstest/tests/truncate/13.t +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/13.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns EINVAL if the length argument was less than 0" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect EINVAL -- truncate ${n0} -1 -expect EINVAL -- truncate ${n0} -999999 -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/truncate/14.t b/tests/kern/fstest/tests/truncate/14.t deleted file mode 100755 index 67d7b4cf..00000000 --- a/tests/kern/fstest/tests/truncate/14.t +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/truncate/14.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="truncate returns EFAULT if the path argument points outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..2" - -expect EFAULT truncate NULL 123 -expect EFAULT truncate DEADCODE 123 diff --git a/tests/kern/fstest/tests/unlink/00.t b/tests/kern/fstest/tests/unlink/00.t deleted file mode 100755 index e0e8b618..00000000 --- a/tests/kern/fstest/tests/unlink/00.t +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/00.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink removes regular files, symbolic links, fifos and sockets" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..55" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n2} 0755 -cdir=`pwd` -cd ${n2} - -expect 0 create ${n0} 0644 -expect regular lstat ${n0} type -expect 0 unlink ${n0} -expect ENOENT lstat ${n0} type - -expect 0 symlink ${n1} ${n0} -expect symlink lstat ${n0} type -expect 0 unlink ${n0} -expect ENOENT lstat ${n0} type - -expect 0 mkfifo ${n0} 0644 -expect fifo lstat ${n0} type -expect 0 unlink ${n0} -expect ENOENT lstat ${n0} type - -# TODO: sockets removal - -# successful unlink(2) updates ctime. -expect 0 create ${n0} 0644 -expect 0 link ${n0} ${n1} -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 unlink ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} - -expect 0 mkfifo ${n0} 0644 -expect 0 link ${n0} ${n1} -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 unlink ${n1} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -lt $ctime2 -expect 0 unlink ${n0} - -# unsuccessful unlink(2) does not update ctime. -expect 0 create ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EACCES -u 65534 unlink ${n0} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} - -expect 0 mkfifo ${n0} 0644 -ctime1=`${fstest} stat ${n0} ctime` -sleep 1 -expect EACCES -u 65534 unlink ${n0} -ctime2=`${fstest} stat ${n0} ctime` -test_check $ctime1 -eq $ctime2 -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -time=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 unlink ${n0}/${n1} -mtime=`${fstest} stat ${n0} mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat ${n0} ctime` -test_check $time -lt $ctime -expect 0 rmdir ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 mkfifo ${n0}/${n1} 0644 -time=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 unlink ${n0}/${n1} -mtime=`${fstest} stat ${n0} mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat ${n0} ctime` -test_check $time -lt $ctime -expect 0 rmdir ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 symlink test ${n0}/${n1} -time=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 unlink ${n0}/${n1} -mtime=`${fstest} stat ${n0} mtime` -test_check $time -lt $mtime -ctime=`${fstest} stat ${n0} ctime` -test_check $time -lt $ctime -expect 0 rmdir ${n0} - -expect 0 create ${n0} 0644 -expect 0 link ${n0} ${n1} -time=`${fstest} stat ${n0} ctime` -sleep 1 -expect 0 unlink ${n1} -ctime=`${fstest} stat ${n0} ctime` -test_check $time -lt $ctime -expect 0 unlink ${n0} - -cd ${cdir} -expect 0 rmdir ${n2} diff --git a/tests/kern/fstest/tests/unlink/01.t b/tests/kern/fstest/tests/unlink/01.t deleted file mode 100755 index 41ca70ed..00000000 --- a/tests/kern/fstest/tests/unlink/01.t +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/01.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns ENOTDIR if a component of the path prefix is not a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..5" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 -expect 0 create ${n0}/${n1} 0644 -expect ENOTDIR unlink ${n0}/${n1}/test -expect 0 unlink ${n0}/${n1} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/unlink/02.t b/tests/kern/fstest/tests/unlink/02.t deleted file mode 100755 index af9a3864..00000000 --- a/tests/kern/fstest/tests/unlink/02.t +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/02.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -expect 0 create ${name255} 0644 -expect 0 unlink ${name255} -expect ENOENT unlink ${name255} -expect ENAMETOOLONG unlink ${name256} diff --git a/tests/kern/fstest/tests/unlink/03.t b/tests/kern/fstest/tests/unlink/03.t deleted file mode 100755 index 646e26ba..00000000 --- a/tests/kern/fstest/tests/unlink/03.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/03.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns ENAMETOOLONG if an entire path name exceeded 1023 characters" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..12" - -expect 0 mkdir ${name255} 0755 -expect 0 mkdir ${name255}/${name255} 0755 -expect 0 mkdir ${name255}/${name255}/${name255} 0755 -expect 0 mkdir ${path1021} 0755 -expect 0 create ${path1023} 0644 -expect 0 unlink ${path1023} -expect ENOENT unlink ${path1023} -create_too_long -expect ENAMETOOLONG unlink ${too_long} -unlink_too_long -expect 0 rmdir ${path1021} -expect 0 rmdir ${name255}/${name255}/${name255} -expect 0 rmdir ${name255}/${name255} -expect 0 rmdir ${name255} diff --git a/tests/kern/fstest/tests/unlink/04.t b/tests/kern/fstest/tests/unlink/04.t deleted file mode 100755 index d6746d30..00000000 --- a/tests/kern/fstest/tests/unlink/04.t +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/04.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns ENOENT if the named file does not exist" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..4" - -n0=`namegen` -n1=`namegen` - -expect 0 create ${n0} 0644 -expect 0 unlink ${n0} -expect ENOENT unlink ${n0} -expect ENOENT unlink ${n1} diff --git a/tests/kern/fstest/tests/unlink/05.t b/tests/kern/fstest/tests/unlink/05.t deleted file mode 100755 index 7593e7f9..00000000 --- a/tests/kern/fstest/tests/unlink/05.t +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/05.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns EACCES when search permission is denied for a component of the path prefix" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..10" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 -expect 0 chmod ${n1} 0644 -expect EACCES -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/unlink/06.t b/tests/kern/fstest/tests/unlink/06.t deleted file mode 100755 index e063c6a5..00000000 --- a/tests/kern/fstest/tests/unlink/06.t +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/06.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns EACCES when write permission is denied on the directory containing the link to be removed" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..10" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n0} 0755 -cdir=`pwd` -cd ${n0} -expect 0 mkdir ${n1} 0755 -expect 0 chown ${n1} 65534 65534 -expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 -expect 0 chmod ${n1} 0555 -expect EACCES -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 chmod ${n1} 0755 -expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} -expect 0 rmdir ${n1} -cd ${cdir} -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/unlink/07.t b/tests/kern/fstest/tests/unlink/07.t deleted file mode 100755 index 48dfd4a9..00000000 --- a/tests/kern/fstest/tests/unlink/07.t +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/07.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns ELOOP if too many symbolic links were encountered in translating the pathname" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..6" - -n0=`namegen` -n1=`namegen` - -expect 0 symlink ${n0} ${n1} -expect 0 symlink ${n1} ${n0} -expect ELOOP unlink ${n0}/test -expect ELOOP unlink ${n1}/test -expect 0 unlink ${n0} -expect 0 unlink ${n1} diff --git a/tests/kern/fstest/tests/unlink/08.t b/tests/kern/fstest/tests/unlink/08.t deleted file mode 100755 index 54bcf1aa..00000000 --- a/tests/kern/fstest/tests/unlink/08.t +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/08.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns EPERM if the named file is a directory" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..3" - -n0=`namegen` - -expect 0 mkdir ${n0} 0755 -case "${os}:${fs}" in -SunOS:UFS) - expect 0 unlink ${n0} - expect ENOENT rmdir ${n0} - ;; -Linux:*) - # Non-POSIX value returned by Linux since 2.1.132 - expect EISDIR unlink ${n0} - expect 0 rmdir ${n0} - ;; -*) - expect EPERM unlink ${n0} - expect 0 rmdir ${n0} - ;; -esac diff --git a/tests/kern/fstest/tests/unlink/09.t b/tests/kern/fstest/tests/unlink/09.t deleted file mode 100755 index 245987d0..00000000 --- a/tests/kern/fstest/tests/unlink/09.t +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/09.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns EPERM if the named file has its immutable, undeletable or append-only flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..30" - -n0=`namegen` - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM unlink ${n0} -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM unlink ${n0} -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_NOUNLINK -expect EPERM unlink ${n0} -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_NOUNLINK -expect EPERM unlink ${n0} -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} SF_APPEND -expect EPERM unlink ${n0} -expect 0 chflags ${n0} none -expect 0 unlink ${n0} - -expect 0 create ${n0} 0644 -expect 0 chflags ${n0} UF_APPEND -expect EPERM unlink ${n0} -expect 0 chflags ${n0} none -expect 0 unlink ${n0} diff --git a/tests/kern/fstest/tests/unlink/10.t b/tests/kern/fstest/tests/unlink/10.t deleted file mode 100755 index ab1ee1f2..00000000 --- a/tests/kern/fstest/tests/unlink/10.t +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/10.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns EPERM if the parent directory of the named file has its immutable or append-only flag set" - -dir=`dirname $0` -. ${dir}/../misc.sh - -require chflags - -echo "1..30" - -n0=`namegen` -n1=`namegen` - -expect 0 mkdir ${n0} 0755 - -expect 0 create ${n0}/${n1} 0644 -expect 0 chflags ${n0} SF_IMMUTABLE -expect EPERM unlink ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 create ${n0}/${n1} 0644 -expect 0 chflags ${n0} UF_IMMUTABLE -expect EPERM unlink ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 create ${n0}/${n1} 0644 -expect 0 chflags ${n0} SF_APPEND -expect EPERM unlink ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 create ${n0}/${n1} 0644 -expect 0 chflags ${n0} UF_APPEND -expect EPERM unlink ${n0}/${n1} -expect 0 chflags ${n0} none -expect 0 unlink ${n0}/${n1} - -expect 0 create ${n0}/${n1} 0644 -expect 0 chflags ${n0} SF_NOUNLINK -expect 0 unlink ${n0}/${n1} -expect 0 chflags ${n0} none - -expect 0 create ${n0}/${n1} 0644 -expect 0 chflags ${n0} UF_NOUNLINK -expect 0 unlink ${n0}/${n1} -expect 0 chflags ${n0} none - -expect 0 rmdir ${n0} diff --git a/tests/kern/fstest/tests/unlink/11.t b/tests/kern/fstest/tests/unlink/11.t deleted file mode 100755 index bc7fa368..00000000 --- a/tests/kern/fstest/tests/unlink/11.t +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/11.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns EACCES or EPERM if the directory containing the file is marked sticky, and neither the containing directory nor the file to be removed are owned by the effective user ID" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..33" - -n0=`namegen` -n1=`namegen` -n2=`namegen` - -expect 0 mkdir ${n2} 0755 -cdir=`pwd` -cd ${n2} - -expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 65534 65534 -expect 0 chmod ${n0} 01777 - -# User owns both: the sticky directory and the file to be removed. -expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0644 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User owns the file to be removed, but doesn't own the sticky directory. -expect 0 -u 65533 -g 65533 create ${n0}/${n1} 0644 -expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} -# User owns the sticky directory, but doesn't own the file to be removed. -expect 0 -u 65533 -g 65533 create ${n0}/${n1} 0644 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User doesn't own the sticky directory nor the file to be removed. -expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0644 -expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -# User owns both: the sticky directory and the fifo to be removed. -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n1} 0644 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User owns the fifo to be removed, but doesn't own the sticky directory. -expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n1} 0644 -expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} -# User owns the sticky directory, but doesn't own the fifo to be removed. -expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n1} 0644 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User doesn't own the sticky directory nor the fifo to be removed. -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n1} 0644 -expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -# User owns both: the sticky directory and the symlink to be removed. -expect 0 -u 65534 -g 65534 symlink test ${n0}/${n1} -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User owns the symlink to be removed, but doesn't own the sticky directory. -expect 0 -u 65533 -g 65533 symlink test ${n0}/${n1} -expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} -# User owns the sticky directory, but doesn't own the symlink to be removed. -expect 0 -u 65533 -g 65533 symlink test ${n0}/${n1} -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User doesn't own the sticky directory nor the symlink to be removed. -expect 0 -u 65534 -g 65534 symlink test ${n0}/${n1} -expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -expect 0 rmdir ${n0} - -cd ${cdir} -expect 0 rmdir ${n2} diff --git a/tests/kern/fstest/tests/unlink/12.t b/tests/kern/fstest/tests/unlink/12.t deleted file mode 100755 index eebef25c..00000000 --- a/tests/kern/fstest/tests/unlink/12.t +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/12.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns EROFS if the named file resides on a read-only file system" - -dir=`dirname $0` -. ${dir}/../misc.sh - -case "${os}:${fs}" in -FreeBSD:UFS) - echo "1..5" - - n0=`namegen` - n1=`namegen` - - expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null - mount /dev/md${n} ${n0} - expect 0 create ${n0}/${n1} 0644 - mount -ur /dev/md${n} - expect EROFS unlink ${n0}/${n1} - mount -uw /dev/md${n} - expect 0 unlink ${n0}/${n1} - umount /dev/md${n} - mdconfig -d -u ${n} - expect 0 rmdir ${n0} - ;; -*) - quick_exit - ;; -esac diff --git a/tests/kern/fstest/tests/unlink/13.t b/tests/kern/fstest/tests/unlink/13.t deleted file mode 100755 index 98409411..00000000 --- a/tests/kern/fstest/tests/unlink/13.t +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# $FreeBSD: src/tools/regression/fstest/tests/unlink/13.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ - -desc="unlink returns EFAULT if the path argument points outside the process's allocated address space" - -dir=`dirname $0` -. ${dir}/../misc.sh - -echo "1..2" - -expect EFAULT unlink NULL -expect EFAULT unlink DEADCODE diff --git a/tests/kern/fsx/Makefile.am b/tests/kern/fsx/Makefile.am deleted file mode 100644 index f55208e8..00000000 --- a/tests/kern/fsx/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -AM_CFLAGS = \ - @WARNING_CFLAGS@ \ - -Wno-unused-result -Wno-error=unused-result \ - -Wno-stringop-truncation -Wno-error-stringop-truncation - -check_PROGRAMS = fsx - -fsx_SOURCES = fsx.c diff --git a/tests/kern/fsx/README b/tests/kern/fsx/README deleted file mode 100644 index 461c74a7..00000000 --- a/tests/kern/fsx/README +++ /dev/null @@ -1,2 +0,0 @@ -fsx.c origin: - http://codemonkey.org.uk/projects/fsx/ltp-fsx.c diff --git a/tests/kern/fsx/fsx.c b/tests/kern/fsx/fsx.c deleted file mode 100644 index c9697e5b..00000000 --- a/tests/kern/fsx/fsx.c +++ /dev/null @@ -1,1615 +0,0 @@ -/* - * Copyright (C) 1991, NeXT Computer, Inc. All Rights Reserverd. - * - * File: fsx.c - * Author: Avadis Tevanian, Jr. - * - * File system exerciser. - * - * Rewritten 8/98 by Conrad Minshall. - * - * Small changes to work under Linux -- davej. - * - * Checks for mmap last-page zero fill. - */ - -#include "config.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef HAVE_ERR_H -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#ifdef AIO -#include -#endif -#ifdef FALLOCATE -#include -#endif - -#ifndef MAP_FILE -# define MAP_FILE 0 -#endif - -#define NUMPRINTCOLUMNS 32 /* # columns of data to print on each line */ - -/* - * A log entry is an operation and a bunch of arguments. - */ - -struct log_entry { - int operation; - int args[3]; -}; - -#define LOGSIZE 1000 - -struct log_entry oplog[LOGSIZE]; /* the log */ -int logptr = 0; /* current position in log */ -int logcount = 0; /* total ops */ - -/* - * The operation matrix is complex due to conditional execution of different - * features. Hence when we come to deciding what operation to run, we need to - * be careful in how we select the different operations. The active operations - * are mapped to numbers as follows: - * - * lite !lite - * READ: 0 0 - * WRITE: 1 1 - * MAPREAD: 2 2 - * MAPWRITE: 3 3 - * TRUNCATE: - 4 - * FALLOCATE: - 5 - * PUNCH HOLE: - 6 - * - * When mapped read/writes are disabled, they are simply converted to normal - * reads and writes. When fallocate/fpunch calls are disabled, they are - * converted to OP_SKIPPED. Hence OP_SKIPPED needs to have a number higher than - * the operation selction matrix, as does the OP_CLOSEOPEN which is an - * operation modifier rather than an operation in itself. - * - * Because of the "lite" version, we also need to have different "maximum - * operation" defines to allow the ops to be selected correctly based on the - * mode being run. - */ - -/* common operations */ -#define OP_READ 0 -#define OP_WRITE 1 -#define OP_MAPREAD 2 -#define OP_MAPWRITE 3 -#define OP_MAX_LITE 4 - -/* !lite operations */ -#define OP_TRUNCATE 4 -#define OP_FALLOCATE 5 -#define OP_PUNCH_HOLE 6 -#define OP_MAX_FULL 7 - -/* operation modifiers */ -#define OP_CLOSEOPEN 100 -#define OP_SKIPPED 101 - -#undef PAGE_SIZE -#define PAGE_SIZE getpagesize() -#undef PAGE_MASK -#define PAGE_MASK (PAGE_SIZE - 1) - -char *original_buf; /* a pointer to the original data */ -char *good_buf; /* a pointer to the correct data */ -char *temp_buf; /* a pointer to the current data */ -char *fname; /* name of our test file */ -int fd; /* fd for our test file */ - -off_t file_size = 0; -off_t biggest = 0; -char state[256]; -unsigned long testcalls = 0; /* calls to function "test" */ - -unsigned long simulatedopcount = 0; /* -b flag */ -int closeprob = 0; /* -c flag */ -int debug = 0; /* -d flag */ -unsigned long debugstart = 0; /* -D flag */ -int flush = 0; /* -f flag */ -int do_fsync = 0; /* -y flag */ -unsigned long maxfilelen = 256 * 1024; /* -l flag */ -int sizechecks = 1; /* -n flag disables them */ -int maxoplen = 64 * 1024; /* -o flag */ -int quiet = 0; /* -q flag */ -unsigned long progressinterval = 0; /* -p flag */ -int readbdy = 1; /* -r flag */ -int style = 0; /* -s flag */ -int prealloc = 0; /* -x flag */ -int truncbdy = 1; /* -t flag */ -int writebdy = 1; /* -w flag */ -long monitorstart = -1; /* -m flag */ -long monitorend = -1; /* -m flag */ -int lite = 0; /* -L flag */ -long numops = -1; /* -N flag */ -int randomoplen = 1; /* -O flag disables it */ -int seed = 1; /* -S flag */ -int mapped_writes = 1; /* -W flag disables */ -int fallocate_calls = 1; /* -F flag disables */ -int punch_hole_calls = 1; /* -H flag disables */ -int mapped_reads = 1; /* -R flag disables it */ -int fsxgoodfd = 0; -int o_direct; /* -Z */ -int aio = 0; - -int page_size; -int page_mask; -int mmap_mask; -#ifdef AIO -int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset); -#define READ 0 -#define WRITE 1 -#define fsxread(a,b,c,d) aio_rw(READ, a,b,c,d) -#define fsxwrite(a,b,c,d) aio_rw(WRITE, a,b,c,d) -#else -#define fsxread(a,b,c,d) read(a,b,c) -#define fsxwrite(a,b,c,d) write(a,b,c) -#endif - -FILE * fsxlogf = NULL; -int badoff = -1; -int closeopen = 0; - -static void *round_up(void *ptr, unsigned long align, unsigned long offset) -{ - unsigned long ret = (unsigned long)ptr; - - ret = ((ret + align - 1) & ~(align - 1)); - ret += offset; - return (void *)ret; -} - -void -vwarnc(int code, const char *fmt, va_list ap) { - fprintf(stderr, "fsx: "); - if (fmt != NULL) { - vfprintf(stderr, fmt, ap); - fprintf(stderr, ": "); - } - fprintf(stderr, "%s\n", strerror(code)); -} - -void -warn(const char * fmt, ...) { - va_list ap; - va_start(ap, fmt); - vwarnc(errno, fmt, ap); - va_end(ap); -} - -#define BUF_SIZE 1024 - -void -prt(char *fmt, ...) -{ - va_list args; - char buffer[BUF_SIZE]; - - va_start(args, fmt); - vsnprintf(buffer, BUF_SIZE, fmt, args); - va_end(args); - fprintf(stdout, "%s", buffer); - if (fsxlogf) - fprintf(fsxlogf, "%s", buffer); -} - -void -prterr(char *prefix) -{ - prt("%s%s%s\n", prefix, prefix ? ": " : "", strerror(errno)); -} - - -void -log4(int operation, int arg0, int arg1, int arg2) -{ - struct log_entry *le; - - le = &oplog[logptr]; - le->operation = operation; - if (closeopen) - le->operation = ~ le->operation; - le->args[0] = arg0; - le->args[1] = arg1; - le->args[2] = arg2; - logptr++; - logcount++; - if (logptr >= LOGSIZE) - logptr = 0; -} - - -void -logdump(void) -{ - int i, count, down; - struct log_entry *lp; - char *falloc_type[3] = {"PAST_EOF", "EXTENDING", "INTERIOR"}; - - prt("LOG DUMP (%d total operations):\n", logcount); - if (logcount < LOGSIZE) { - i = 0; - count = logcount; - } else { - i = logptr; - count = LOGSIZE; - } - for ( ; count > 0; count--) { - int opnum; - - opnum = i+1 + (logcount/LOGSIZE)*LOGSIZE; - prt("%d(%3d mod 256): ", opnum, opnum%256); - lp = &oplog[i]; - if ((closeopen = lp->operation < 0)) - lp->operation = ~ lp->operation; - - switch (lp->operation) { - case OP_MAPREAD: - prt("MAPREAD 0x%x thru 0x%x\t(0x%x bytes)", - lp->args[0], lp->args[0] + lp->args[1] - 1, - lp->args[1]); - if (badoff >= lp->args[0] && badoff < - lp->args[0] + lp->args[1]) - prt("\t***RRRR***"); - break; - case OP_MAPWRITE: - prt("MAPWRITE 0x%x thru 0x%x\t(0x%x bytes)", - lp->args[0], lp->args[0] + lp->args[1] - 1, - lp->args[1]); - if (badoff >= lp->args[0] && badoff < - lp->args[0] + lp->args[1]) - prt("\t******WWWW"); - break; - case OP_READ: - prt("READ 0x%x thru 0x%x\t(0x%x bytes)", - lp->args[0], lp->args[0] + lp->args[1] - 1, - lp->args[1]); - if (badoff >= lp->args[0] && - badoff < lp->args[0] + lp->args[1]) - prt("\t***RRRR***"); - break; - case OP_WRITE: - prt("WRITE 0x%x thru 0x%x\t(0x%x bytes)", - lp->args[0], lp->args[0] + lp->args[1] - 1, - lp->args[1]); - if (lp->args[0] > lp->args[2]) - prt(" HOLE"); - else if (lp->args[0] + lp->args[1] > lp->args[2]) - prt(" EXTEND"); - if ((badoff >= lp->args[0] || badoff >=lp->args[2]) && - badoff < lp->args[0] + lp->args[1]) - prt("\t***WWWW"); - break; - case OP_TRUNCATE: - down = lp->args[0] < lp->args[1]; - prt("TRUNCATE %s\tfrom 0x%x to 0x%x", - down ? "DOWN" : "UP", lp->args[1], lp->args[0]); - if (badoff >= lp->args[!down] && - badoff < lp->args[!!down]) - prt("\t******WWWW"); - break; - case OP_FALLOCATE: - /* 0: offset 1: length 2: where alloced */ - prt("FALLOC 0x%x thru 0x%x\t(0x%x bytes) %s", - lp->args[0], lp->args[0] + lp->args[1], - lp->args[1], falloc_type[lp->args[2]]); - if (badoff >= lp->args[0] && - badoff < lp->args[0] + lp->args[1]) - prt("\t******FFFF"); - break; - case OP_PUNCH_HOLE: - prt("PUNCH 0x%x thru 0x%x\t(0x%x bytes)", - lp->args[0], lp->args[0] + lp->args[1] - 1, - lp->args[1]); - if (badoff >= lp->args[0] && badoff < - lp->args[0] + lp->args[1]) - prt("\t******PPPP"); - break; - case OP_SKIPPED: - prt("SKIPPED (no operation)"); - break; - default: - prt("BOGUS LOG ENTRY (operation code = %d)!", - lp->operation); - } - if (closeopen) - prt("\n\t\tCLOSE/OPEN"); - prt("\n"); - i++; - if (i == LOGSIZE) - i = 0; - } -} - - -void -save_buffer(char *buffer, off_t bufferlength, int fd) -{ - off_t ret; - ssize_t byteswritten; - - if (fd <= 0 || bufferlength == 0) - return; - - if (bufferlength > SSIZE_MAX) { - prt("fsx flaw: overflow in save_buffer\n"); - exit(67); - } - if (lite) { - off_t size_by_seek = lseek(fd, (off_t)0, SEEK_END); - if (size_by_seek == (off_t)-1) - prterr("save_buffer: lseek eof"); - else if (bufferlength > size_by_seek) { - warn("save_buffer: .fsxgood file too short... will save 0x%llx bytes instead of 0x%llx\n", (unsigned long long)size_by_seek, - (unsigned long long)bufferlength); - bufferlength = size_by_seek; - } - } - - ret = lseek(fd, (off_t)0, SEEK_SET); - if (ret == (off_t)-1) - prterr("save_buffer: lseek 0"); - - byteswritten = write(fd, buffer, (size_t)bufferlength); - if (byteswritten != bufferlength) { - if (byteswritten == -1) - prterr("save_buffer write"); - else - warn("save_buffer: short write, 0x%x bytes instead of 0x%llx\n", - (unsigned)byteswritten, - (unsigned long long)bufferlength); - } -} - - -void -report_failure(int status) -{ - logdump(); - - if (fsxgoodfd) { - if (good_buf) { - save_buffer(good_buf, file_size, fsxgoodfd); - prt("Correct content saved for comparison\n"); - prt("(maybe hexdump \"%s\" vs \"%s.fsxgood\")\n", - fname, fname); - } - close(fsxgoodfd); - } - exit(status); -} - - -#define short_at(cp) ((unsigned short)((*((unsigned char *)(cp)) << 8) | \ - *(((unsigned char *)(cp)) + 1))) - -void -check_buffers(unsigned offset, unsigned size) -{ - unsigned char c, t; - unsigned i = 0; - unsigned n = 0; - unsigned op = 0; - unsigned bad = 0; - - if (memcmp(good_buf + offset, temp_buf, size) != 0) { - prt("READ BAD DATA: offset = 0x%x, size = 0x%x, fname = %s\n", - offset, size, fname); - prt("OFFSET\tGOOD\tBAD\tRANGE\n"); - while (size > 0) { - c = good_buf[offset]; - t = temp_buf[i]; - if (c != t) { - if (n < 16) { - bad = short_at(&temp_buf[i]); - prt("0x%5x\t0x%04x\t0x%04x", offset, - short_at(&good_buf[offset]), bad); - op = temp_buf[offset & 1 ? i+1 : i]; - prt("\t0x%5x\n", n); - if (op) - prt("operation# (mod 256) for " - "the bad data may be %u\n", - ((unsigned)op & 0xff)); - else - prt("operation# (mod 256) for " - "the bad data unknown, check" - " HOLE and EXTEND ops\n"); - } - n++; - badoff = offset; - } - offset++; - i++; - size--; - } - report_failure(110); - } -} - - -void -check_size(void) -{ - struct stat statbuf; - off_t size_by_seek; - - if (fstat(fd, &statbuf)) { - prterr("check_size: fstat"); - statbuf.st_size = -1; - } - size_by_seek = lseek(fd, (off_t)0, SEEK_END); - if (file_size != statbuf.st_size || file_size != size_by_seek) { - prt("Size error: expected 0x%llx stat 0x%llx seek 0x%llx\n", - (unsigned long long)file_size, - (unsigned long long)statbuf.st_size, - (unsigned long long)size_by_seek); - report_failure(120); - } -} - - -void -check_trunc_hack(void) -{ - struct stat statbuf; - - ftruncate(fd, (off_t)0); - ftruncate(fd, (off_t)100000); - fstat(fd, &statbuf); - if (statbuf.st_size != (off_t)100000) { - prt("no extend on truncate! not posix!\n"); - exit(130); - } - ftruncate(fd, 0); -} - -void -doflush(unsigned offset, unsigned size) -{ - unsigned pg_offset; - unsigned map_size; - char *p; - - if (o_direct == O_DIRECT) - return; - - pg_offset = offset & mmap_mask; - map_size = pg_offset + size; - - if ((p = (char *)mmap(0, map_size, PROT_READ | PROT_WRITE, - MAP_FILE | MAP_SHARED, fd, - (off_t)(offset - pg_offset))) == (char *)-1) { - prterr("doflush: mmap"); - report_failure(202); - } - if (msync(p, map_size, MS_INVALIDATE) != 0) { - prterr("doflush: msync"); - report_failure(203); - } - if (munmap(p, map_size) != 0) { - prterr("doflush: munmap"); - report_failure(204); - } -} - -void -doread(unsigned offset, unsigned size) -{ - off_t ret; - unsigned iret; - - offset -= offset % readbdy; - if (o_direct) - size -= size % readbdy; - if (size == 0) { - if (!quiet && testcalls > simulatedopcount && !o_direct) - prt("skipping zero size read\n"); - log4(OP_SKIPPED, OP_READ, offset, size); - return; - } - if (size + offset > file_size) { - if (!quiet && testcalls > simulatedopcount) - prt("skipping seek/read past end of file\n"); - log4(OP_SKIPPED, OP_READ, offset, size); - return; - } - - log4(OP_READ, offset, size, 0); - - if (testcalls <= simulatedopcount) - return; - - if (!quiet && - ((progressinterval && testcalls % progressinterval == 0) || - (debug && - (monitorstart == -1 || - (offset + size > monitorstart && - (monitorend == -1 || offset <= monitorend)))))) - prt("%lu read\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls, - offset, offset + size - 1, size); - ret = lseek(fd, (off_t)offset, SEEK_SET); - if (ret == (off_t)-1) { - prterr("doread: lseek"); - report_failure(140); - } - iret = fsxread(fd, temp_buf, size, offset); - if (iret != size) { - if (iret == -1) - prterr("doread: read"); - else - prt("short read: 0x%x bytes instead of 0x%x\n", - iret, size); - report_failure(141); - } - check_buffers(offset, size); -} - - -void -check_eofpage(char *s, unsigned offset, char *p, int size) -{ - unsigned long last_page, should_be_zero; - - if (offset + size <= (file_size & ~page_mask)) - return; - /* - * we landed in the last page of the file - * test to make sure the VM system provided 0's - * beyond the true end of the file mapping - * (as required by mmap def in 1996 posix 1003.1) - */ - last_page = ((unsigned long)p + (offset & page_mask) + size) & ~page_mask; - - for (should_be_zero = last_page + (file_size & page_mask); - should_be_zero < last_page + page_size; - should_be_zero++) - if (*(char *)should_be_zero) { - prt("Mapped %s: non-zero data past EOF (0x%llx) page offset 0x%x is 0x%04x\n", - s, file_size - 1, should_be_zero & page_mask, - short_at(should_be_zero)); - report_failure(205); - } -} - - -void -domapread(unsigned offset, unsigned size) -{ - unsigned pg_offset; - unsigned map_size; - char *p; - - offset -= offset % readbdy; - if (size == 0) { - if (!quiet && testcalls > simulatedopcount) - prt("skipping zero size read\n"); - log4(OP_SKIPPED, OP_MAPREAD, offset, size); - return; - } - if (size + offset > file_size) { - if (!quiet && testcalls > simulatedopcount) - prt("skipping seek/read past end of file\n"); - log4(OP_SKIPPED, OP_MAPREAD, offset, size); - return; - } - - log4(OP_MAPREAD, offset, size, 0); - - if (testcalls <= simulatedopcount) - return; - - if (!quiet && - ((progressinterval && testcalls % progressinterval == 0) || - (debug && - (monitorstart == -1 || - (offset + size > monitorstart && - (monitorend == -1 || offset <= monitorend)))))) - prt("%lu mapread\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls, - offset, offset + size - 1, size); - - pg_offset = offset & PAGE_MASK; - map_size = pg_offset + size; - - if ((p = (char *)mmap(0, map_size, PROT_READ, MAP_SHARED, fd, - (off_t)(offset - pg_offset))) == (char *)-1) { - prterr("domapread: mmap"); - report_failure(190); - } - memcpy(temp_buf, p + pg_offset, size); - - check_eofpage("Read", offset, p, size); - - if (munmap(p, map_size) != 0) { - prterr("domapread: munmap"); - report_failure(191); - } - - check_buffers(offset, size); -} - - -void -gendata(char *original_buf, char *good_buf, unsigned offset, unsigned size) -{ - while (size--) { - good_buf[offset] = testcalls % 256; - if (offset % 2) - good_buf[offset] += original_buf[offset]; - offset++; - } -} - - -void -dowrite(unsigned offset, unsigned size) -{ - off_t ret; - unsigned iret; - - offset -= offset % writebdy; - if (o_direct) - size -= size % writebdy; - if (size == 0) { - if (!quiet && testcalls > simulatedopcount && !o_direct) - prt("skipping zero size write\n"); - log4(OP_SKIPPED, OP_WRITE, offset, size); - return; - } - - log4(OP_WRITE, offset, size, file_size); - - gendata(original_buf, good_buf, offset, size); - if (file_size < offset + size) { - if (file_size < offset) - memset(good_buf + file_size, '\0', offset - file_size); - file_size = offset + size; - if (lite) { - warn("Lite file size bug in fsx!"); - report_failure(149); - } - } - - if (testcalls <= simulatedopcount) - return; - - if (!quiet && - ((progressinterval && testcalls % progressinterval == 0) || - (debug && - (monitorstart == -1 || - (offset + size > monitorstart && - (monitorend == -1 || offset <= monitorend)))))) - prt("%lu write\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls, - offset, offset + size - 1, size); - ret = lseek(fd, (off_t)offset, SEEK_SET); - if (ret == (off_t)-1) { - prterr("dowrite: lseek"); - report_failure(150); - } - iret = fsxwrite(fd, good_buf + offset, size, offset); - if (iret != size) { - if (iret == -1) - prterr("dowrite: write"); - else - prt("short write: 0x%x bytes instead of 0x%x\n", - iret, size); - report_failure(151); - } - if (do_fsync) { - if (fsync(fd)) { - prt("fsync() failed: %s\n", strerror(errno)); - report_failure(152); - } - } - if (flush) { - doflush(offset, size); - } -} - - -void -domapwrite(unsigned offset, unsigned size) -{ - unsigned pg_offset; - unsigned map_size; - off_t cur_filesize; - char *p; - - offset -= offset % writebdy; - if (size == 0) { - if (!quiet && testcalls > simulatedopcount) - prt("skipping zero size write\n"); - log4(OP_SKIPPED, OP_MAPWRITE, offset, size); - return; - } - cur_filesize = file_size; - - log4(OP_MAPWRITE, offset, size, 0); - - gendata(original_buf, good_buf, offset, size); - if (file_size < offset + size) { - if (file_size < offset) - memset(good_buf + file_size, '\0', offset - file_size); - file_size = offset + size; - if (lite) { - warn("Lite file size bug in fsx!"); - report_failure(200); - } - } - - if (testcalls <= simulatedopcount) - return; - - if (!quiet && - ((progressinterval && testcalls % progressinterval == 0) || - (debug && - (monitorstart == -1 || - (offset + size > monitorstart && - (monitorend == -1 || offset <= monitorend)))))) - prt("%lu mapwrite\t0x%x thru\t0x%x\t(0x%x bytes)\n", testcalls, - offset, offset + size - 1, size); - - if (file_size > cur_filesize) { - if (ftruncate(fd, file_size) == -1) { - prterr("domapwrite: ftruncate"); - exit(201); - } - } - pg_offset = offset & PAGE_MASK; - map_size = pg_offset + size; - - if ((p = (char *)mmap(0, map_size, PROT_READ | PROT_WRITE, - MAP_FILE | MAP_SHARED, fd, - (off_t)(offset - pg_offset))) == (char *)-1) { - prterr("domapwrite: mmap"); - report_failure(202); - } - memcpy(p + pg_offset, good_buf + offset, size); - if (msync(p, map_size, 0) != 0) { - prterr("domapwrite: msync"); - report_failure(203); - } - - check_eofpage("Write", offset, p, size); - - if (munmap(p, map_size) != 0) { - prterr("domapwrite: munmap"); - report_failure(204); - } -} - - -void -dotruncate(unsigned size) -{ - int oldsize = file_size; - - size -= size % truncbdy; - if (size > biggest) { - biggest = size; - if (!quiet && testcalls > simulatedopcount) - prt("truncating to largest ever: 0x%x\n", size); - } - - log4(OP_TRUNCATE, size, (unsigned)file_size, 0); - - if (size > file_size) - memset(good_buf + file_size, '\0', size - file_size); - file_size = size; - - if (testcalls <= simulatedopcount) - return; - - if ((progressinterval && testcalls % progressinterval == 0) || - (debug && (monitorstart == -1 || monitorend == -1 || - size <= monitorend))) - prt("%lu trunc\tfrom 0x%x to 0x%x\n", testcalls, oldsize, size); - if (ftruncate(fd, (off_t)size) == -1) { - prt("ftruncate1: %x\n", size); - prterr("dotruncate: ftruncate"); - report_failure(160); - } -} - -#ifdef FALLOC_FL_PUNCH_HOLE -void -do_punch_hole(unsigned offset, unsigned length) -{ - unsigned end_offset; - int max_offset = 0; - int max_len = 0; - int mode = FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE; - - if (length == 0) { - if (!quiet && testcalls > simulatedopcount) { - prt("skipping zero length punch hole\n"); - log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, length); - } - return; - } - - if (file_size <= (loff_t)offset) { - if (!quiet && testcalls > simulatedopcount) { - prt("skipping hole punch off the end of the file\n"); - log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, length); - } - return; - } - - end_offset = offset + length; - - log4(OP_PUNCH_HOLE, offset, length, 0); - - if (testcalls <= simulatedopcount) - return; - - if ((progressinterval && testcalls % progressinterval == 0) || - (debug && (monitorstart == -1 || monitorend == -1 || - end_offset <= monitorend))) { - prt("%lu punch\tfrom 0x%x to 0x%x, (0x%x bytes)\n", testcalls, - offset, offset+length, length); - } - if (fallocate(fd, mode, (loff_t)offset, (loff_t)length) == -1) { - prt("%punch hole: %x to %x\n", offset, length); - prterr("do_punch_hole: fallocate"); - report_failure(161); - } - - - max_offset = offset < file_size ? offset : file_size; - max_len = max_offset + length <= file_size ? length : - file_size - max_offset; - memset(good_buf + max_offset, '\0', max_len); -} - -#else -void -do_punch_hole(unsigned offset, unsigned length) -{ - return; -} -#endif - -#ifdef FALLOCATE -/* fallocate is basically a no-op unless extending, then a lot like a truncate */ -void -do_preallocate(unsigned offset, unsigned length) -{ - unsigned end_offset; - int keep_size; - - if (length == 0) { - if (!quiet && testcalls > simulatedopcount) - prt("skipping zero length fallocate\n"); - log4(OP_SKIPPED, OP_FALLOCATE, offset, length); - return; - } - - keep_size = random() % 2; - - end_offset = keep_size ? 0 : offset + length; - - if (end_offset > biggest) { - biggest = end_offset; - if (!quiet && testcalls > simulatedopcount) - prt("fallocating to largest ever: 0x%x\n", end_offset); - } - - /* - * last arg matches fallocate string array index in logdump: - * 0: allocate past EOF - * 1: extending prealloc - * 2: interior prealloc - */ - log4(OP_FALLOCATE, offset, length, (end_offset > file_size) ? (keep_size ? 0 : 1) : 2); - - if (end_offset > file_size) { - memset(good_buf + file_size, '\0', end_offset - file_size); - file_size = end_offset; - } - - if (testcalls <= simulatedopcount) - return; - - if ((progressinterval && testcalls % progressinterval == 0) || - (debug && (monitorstart == -1 || monitorend == -1 || - end_offset <= monitorend))) - prt("%lu falloc\tfrom 0x%x to 0x%x (0x%x bytes)\n", testcalls, - offset, offset + length, length); - if (fallocate(fd, keep_size ? FALLOC_FL_KEEP_SIZE : 0, (loff_t)offset, (loff_t)length) == -1) { - prt("fallocate: %x to %x\n", offset, length); - prterr("do_preallocate: fallocate"); - report_failure(161); - } -} -#else -void -do_preallocate(unsigned offset, unsigned length) -{ - return; -} -#endif - -void -writefileimage() -{ - ssize_t iret; - - if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) { - prterr("writefileimage: lseek"); - report_failure(171); - } - iret = write(fd, good_buf, file_size); - if ((off_t)iret != file_size) { - if (iret == -1) - prterr("writefileimage: write"); - else - prt("short write: 0x%x bytes instead of 0x%llx\n", - iret, (unsigned long long)file_size); - report_failure(172); - } - if (lite ? 0 : ftruncate(fd, file_size) == -1) { - prt("ftruncate2: %llx\n", (unsigned long long)file_size); - prterr("writefileimage: ftruncate"); - report_failure(173); - } -} - - -void -docloseopen(void) -{ - if (testcalls <= simulatedopcount) - return; - - if (debug) - prt("%lu close/open\n", testcalls); - if (close(fd)) { - prterr("docloseopen: close"); - report_failure(180); - } - fd = open(fname, O_RDWR|o_direct, 0); - if (fd < 0) { - prterr("docloseopen: open"); - report_failure(181); - } -} - -#define TRIM_OFF_LEN(off, len, size, allow_zero_file_size) \ -do { \ - if (allow_zero_file_size || file_size) \ - offset %= size; \ - else \ - offset = 0; \ - if (offset + len > size) \ - len = size - offset; \ -} while (0) - -void -test(void) -{ - unsigned long offset; - unsigned long size = maxoplen; - unsigned long rv = random(); - unsigned long op; - - if (simulatedopcount > 0 && testcalls == simulatedopcount) - writefileimage(); - - testcalls++; - - if (closeprob) - closeopen = (rv >> 3) < (1 << 28) / closeprob; - - if (debugstart > 0 && testcalls >= debugstart) - debug = 1; - - if (!quiet && testcalls < simulatedopcount && testcalls % 100000 == 0) - prt("%lu...\n", testcalls); - - offset = random(); - if (randomoplen) - size = random() % (maxoplen + 1); - - /* calculate appropriate op to run */ - if (lite) - op = rv % OP_MAX_LITE; - else - op = rv % OP_MAX_FULL; - - switch (op) { - case OP_MAPREAD: - if (!mapped_reads) - op = OP_READ; - break; - case OP_MAPWRITE: - if (!mapped_writes) - op = OP_WRITE; - break; - case OP_FALLOCATE: - if (!fallocate_calls) { - log4(OP_SKIPPED, OP_FALLOCATE, offset, size); - goto out; - } - break; - case OP_PUNCH_HOLE: - if (!punch_hole_calls) { - log4(OP_SKIPPED, OP_PUNCH_HOLE, offset, size); - goto out; - } - break; - } - - switch (op) { - case OP_READ: - TRIM_OFF_LEN(offset, size, file_size, 0); - doread(offset, size); - break; - - case OP_WRITE: - TRIM_OFF_LEN(offset, size, maxfilelen, 1); - dowrite(offset, size); - break; - - case OP_MAPREAD: - TRIM_OFF_LEN(offset, size, file_size, 0); - domapread(offset, size); - break; - - case OP_MAPWRITE: - TRIM_OFF_LEN(offset, size, maxfilelen, 1); - domapwrite(offset, size); - break; - - case OP_TRUNCATE: - if (!style) - size = random() % maxfilelen; - dotruncate(size); - break; - - case OP_FALLOCATE: - TRIM_OFF_LEN(offset, size, maxfilelen, 1); - do_preallocate(offset, size); - break; - - case OP_PUNCH_HOLE: - TRIM_OFF_LEN(offset, size, maxfilelen, 1); - do_punch_hole(offset, size); - break; - default: - prterr("test: unknown operation"); - report_failure(42); - break; - } - -out: - if (sizechecks && testcalls > simulatedopcount) - check_size(); - if (closeopen) - docloseopen(); -} - - -void -cleanup(sig) - int sig; -{ - if (sig) - prt("signal %d\n", sig); - prt("testcalls = %lu\n", testcalls); - exit(sig); -} - - -void -usage(void) -{ - fprintf(stdout, "usage: %s", - "fsx [-dnqxAFLOWZ] [-b opnum] [-c Prob] [-l flen] [-m start:end] [-o oplen] [-p progressinterval] [-r readbdy] [-s style] [-t truncbdy] [-w writebdy] [-D startingop] [-N numops] [-P dirpath] [-S seed] fname\n\ - -b opnum: beginning operation number (default 1)\n\ - -c P: 1 in P chance of file close+open at each op (default infinity)\n\ - -d: debug output for all operations\n\ - -f flush and invalidate cache after I/O\n\ - -l flen: the upper bound on file size (default 262144)\n\ - -m startop:endop: monitor (print debug output) specified byte range (default 0:infinity)\n\ - -n: no verifications of file size\n\ - -o oplen: the upper bound on operation size (default 65536)\n\ - -p progressinterval: debug output at specified operation interval\n\ - -q: quieter operation\n\ - -r readbdy: 4096 would make reads page aligned (default 1)\n\ - -s style: 1 gives smaller truncates (default 0)\n\ - -t truncbdy: 4096 would make truncates page aligned (default 1)\n\ - -w writebdy: 4096 would make writes page aligned (default 1)\n\ - -x: preallocate file space before starting, XFS only (default 0)\n\ - -y synchronize changes to a file\n" - -#ifdef AIO -" -A: Use the AIO system calls\n" -#endif -" -D startingop: debug output starting at specified operation\n" -#ifdef FALLOCATE -" -F: Do not use fallocate (preallocation) calls\n" -#endif -#ifdef FALLOC_FL_PUNCH_HOLE -" -H: Do not use punch hole calls\n" -#endif -" -L: fsxLite - no file creations & no file size changes\n\ - -N numops: total # operations to do (default infinity)\n\ - -O: use oplen (see -o flag) for every op (default random)\n\ - -P: save .fsxlog and .fsxgood files in dirpath (default ./)\n\ - -S seed: for random # generator (default 1) 0 gets timestamp\n\ - -W: mapped write operations DISabled\n\ - -R: read() system calls only (mapped reads disabled)\n\ - -Z: O_DIRECT (use -R, -W, -r and -w too)\n\ - fname: this filename is REQUIRED (no default)\n"); - exit(90); -} - - -int -getnum(char *s, char **e) -{ - int ret; - - *e = (char *) 0; - ret = strtol(s, e, 0); - if (*e) - switch (**e) { - case 'b': - case 'B': - ret *= 512; - *e = *e + 1; - break; - case 'k': - case 'K': - ret *= 1024; - *e = *e + 1; - break; - case 'm': - case 'M': - ret *= 1024*1024; - *e = *e + 1; - break; - case 'w': - case 'W': - ret *= 4; - *e = *e + 1; - break; - } - return (ret); -} - -#ifdef AIO - -#define QSZ 1024 -io_context_t io_ctx; -struct iocb iocb; - -int aio_setup() -{ - int ret; - ret = io_queue_init(QSZ, &io_ctx); - if (ret != 0) { - fprintf(stderr, "aio_setup: io_queue_init failed: %s\n", - strerror(ret)); - return(-1); - } - return(0); -} - -int -__aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset) -{ - struct io_event event; - static struct timespec ts; - struct iocb *iocbs[] = { &iocb }; - int ret; - long res; - - if (rw == READ) { - io_prep_pread(&iocb, fd, buf, len, offset); - } else { - io_prep_pwrite(&iocb, fd, buf, len, offset); - } - - ts.tv_sec = 30; - ts.tv_nsec = 0; - ret = io_submit(io_ctx, 1, iocbs); - if (ret != 1) { - fprintf(stderr, "errcode=%d\n", ret); - fprintf(stderr, "aio_rw: io_submit failed: %s\n", - strerror(ret)); - goto out_error; - } - - ret = io_getevents(io_ctx, 1, 1, &event, &ts); - if (ret != 1) { - if (ret == 0) - fprintf(stderr, "aio_rw: no events available\n"); - else { - fprintf(stderr, "errcode=%d\n", -ret); - fprintf(stderr, "aio_rw: io_getevents failed: %s\n", - strerror(-ret)); - } - goto out_error; - } - if (len != event.res) { - /* - * The b0rked libaio defines event.res as unsigned. - * However the kernel strucuture has it signed, - * and it's used to pass negated error value. - * Till the library is fixed use the temp var. - */ - res = (long)event.res; - if (res >= 0) - fprintf(stderr, "bad io length: %lu instead of %u\n", - res, len); - else { - fprintf(stderr, "errcode=%ld\n", -res); - fprintf(stderr, "aio_rw: async io failed: %s\n", - strerror(-res)); - ret = res; - goto out_error; - } - - } - return event.res; - -out_error: - /* - * The caller expects error return in traditional libc - * convention, i.e. -1 and the errno set to error. - */ - errno = -ret; - return -1; -} - -int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset) -{ - int ret; - - if (aio) { - ret = __aio_rw(rw, fd, buf, len, offset); - } else { - if (rw == READ) - ret = read(fd, buf, len); - else - ret = write(fd, buf, len); - } - return ret; -} - -#endif - -void -test_fallocate() -{ -#ifdef FALLOCATE - if (!lite && fallocate_calls) { - if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) { - if(!quiet) - warn("main: filesystem does not support fallocate, disabling\n"); - fallocate_calls = 0; - } else { - ftruncate(fd, 0); - } - } -#else /* ! FALLOCATE */ - fallocate_calls = 0; -#endif - -} - -void -test_punch_hole() -{ -#ifdef FALLOC_FL_PUNCH_HOLE - if (!lite && punch_hole_calls) { - if (fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, - 0, 1) && errno == EOPNOTSUPP) { - if(!quiet) - warn("main: filesystem does not support fallocate punch hole, disabling"); - punch_hole_calls = 0; - } else - ftruncate(fd, 0); - } -#else /* ! PUNCH HOLE */ - punch_hole_calls = 0; -#endif -} - -int -main(int argc, char **argv) -{ - int i, style, ch; - char *endp; - char goodfile[1024]; - char logfile[1024]; - - goodfile[0] = 0; - logfile[0] = 0; - - page_size = getpagesize(); - page_mask = page_size - 1; - mmap_mask = page_mask; - - - setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ - - while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHLN:OP:RS:WZ")) - != EOF) - switch (ch) { - case 'b': - simulatedopcount = getnum(optarg, &endp); - if (!quiet) - fprintf(stdout, "Will begin at operation %ld\n", - simulatedopcount); - if (simulatedopcount == 0) - usage(); - simulatedopcount -= 1; - break; - case 'c': - closeprob = getnum(optarg, &endp); - if (!quiet) - fprintf(stdout, - "Chance of close/open is 1 in %d\n", - closeprob); - if (closeprob <= 0) - usage(); - break; - case 'd': - debug = 1; - break; - case 'f': - flush = 1; - break; - case 'l': - maxfilelen = getnum(optarg, &endp); - if (maxfilelen <= 0) - usage(); - break; - case 'm': - monitorstart = getnum(optarg, &endp); - if (monitorstart < 0) - usage(); - if (!endp || *endp++ != ':') - usage(); - monitorend = getnum(endp, &endp); - if (monitorend < 0) - usage(); - if (monitorend == 0) - monitorend = -1; /* aka infinity */ - debug = 1; - case 'n': - sizechecks = 0; - break; - case 'o': - maxoplen = getnum(optarg, &endp); - if (maxoplen <= 0) - usage(); - break; - case 'p': - progressinterval = getnum(optarg, &endp); - if (progressinterval == 0) - usage(); - break; - case 'q': - quiet = 1; - break; - case 'r': - readbdy = getnum(optarg, &endp); - if (readbdy <= 0) - usage(); - break; - case 's': - style = getnum(optarg, &endp); - if (style < 0 || style > 1) - usage(); - break; - case 't': - truncbdy = getnum(optarg, &endp); - if (truncbdy <= 0) - usage(); - break; - case 'w': - writebdy = getnum(optarg, &endp); - if (writebdy <= 0) - usage(); - break; - case 'x': - prealloc = 1; - break; - case 'y': - do_fsync = 1; - break; - case 'A': - aio = 1; - break; - case 'D': - debugstart = getnum(optarg, &endp); - if (debugstart < 1) - usage(); - break; - case 'F': - fallocate_calls = 0; - break; - case 'H': - punch_hole_calls = 0; - break; - case 'L': - lite = 1; - break; - case 'N': - numops = getnum(optarg, &endp); - if (numops < 0) - usage(); - break; - case 'O': - randomoplen = 0; - break; - case 'P': - strncpy(goodfile, optarg, sizeof(goodfile)); - strcat(goodfile, "/"); - strncpy(logfile, optarg, sizeof(logfile)); - strcat(logfile, "/"); - break; - case 'R': - mapped_reads = 0; - break; - case 'S': - seed = getnum(optarg, &endp); - if (seed == 0) - seed = time(0) % 10000; - if (!quiet) - fprintf(stdout, "Seed set to %d\n", seed); - if (seed < 0) - usage(); - break; - case 'W': - mapped_writes = 0; - if (!quiet) - fprintf(stdout, "mapped writes DISABLED\n"); - break; - case 'Z': - o_direct = O_DIRECT; - break; - default: - usage(); - /* NOTREACHED */ - } - argc -= optind; - argv += optind; - if (argc != 1) - usage(); - fname = argv[0]; - - signal(SIGHUP, cleanup); - signal(SIGINT, cleanup); - signal(SIGPIPE, cleanup); - signal(SIGALRM, cleanup); - signal(SIGTERM, cleanup); - signal(SIGXCPU, cleanup); - signal(SIGXFSZ, cleanup); - signal(SIGVTALRM, cleanup); - signal(SIGUSR1, cleanup); - signal(SIGUSR2, cleanup); - - initstate(seed, state, 256); - setstate(state); - fd = open(fname, - O_RDWR|(lite ? 0 : O_CREAT|O_TRUNC)|o_direct, 0666); - if (fd < 0) { - prterr(fname); - exit(91); - } -#ifdef XFS - if (prealloc) { - xfs_flock64_t resv = { 0 }; -#ifdef HAVE_XFS_PLATFORM_DEFS_H - if (!platform_test_xfs_fd(fd)) { - prterr(fname); - fprintf(stderr, "main: cannot prealloc, non XFS\n"); - exit(96); - } -#endif - resv.l_len = maxfilelen; - if ((xfsctl(fname, fd, XFS_IOC_RESVSP, &resv)) < 0) { - prterr(fname); - exit(97); - } - } -#endif - strncat(goodfile, fname, 256); - strcat (goodfile, ".fsxgood"); - fsxgoodfd = open(goodfile, O_RDWR|O_CREAT|O_TRUNC, 0666); - if (fsxgoodfd < 0) { - prterr(goodfile); - exit(92); - } - strncat(logfile, fname, 256); - strcat (logfile, ".fsxlog"); - fsxlogf = fopen(logfile, "w"); - if (fsxlogf == NULL) { - prterr(logfile); - exit(93); - } - -#ifdef AIO - if (aio) - aio_setup(); -#endif - - if (lite) { - off_t ret; - file_size = maxfilelen = lseek(fd, (off_t)0, SEEK_END); - if (file_size == (off_t)-1) { - prterr(fname); - warn("main: lseek eof"); - exit(94); - } - ret = lseek(fd, (off_t)0, SEEK_SET); - if (ret == (off_t)-1) { - prterr(fname); - warn("main: lseek 0"); - exit(95); - } - } - original_buf = (char *) malloc(maxfilelen); - for (i = 0; i < maxfilelen; i++) - original_buf[i] = random() % 256; - good_buf = (char *) malloc(maxfilelen + writebdy); - good_buf = round_up(good_buf, writebdy, 0); - memset(good_buf, '\0', maxfilelen); - temp_buf = (char *) malloc(maxoplen + readbdy); - temp_buf = round_up(temp_buf, readbdy, 0); - memset(temp_buf, '\0', maxoplen); - if (lite) { /* zero entire existing file */ - ssize_t written; - - written = write(fd, good_buf, (size_t)maxfilelen); - if (written != maxfilelen) { - if (written == -1) { - prterr(fname); - warn("main: error on write"); - } else - warn("main: short write, 0x%x bytes instead " - "of 0x%lx\n", - (unsigned)written, - maxfilelen); - exit(98); - } - } else - check_trunc_hack(); - - test_fallocate(); - test_punch_hole(); - - while (numops == -1 || numops--) - test(); - - if (close(fd)) { - prterr("close"); - report_failure(99); - } - prt("All operations completed A-OK!\n"); - - exit(0); - return 0; -} diff --git a/tests/kern/kconjoin.c b/tests/kern/kconjoin.c deleted file mode 100644 index ae1274fd..00000000 --- a/tests/kern/kconjoin.c +++ /dev/null @@ -1,159 +0,0 @@ -/************************************************************\ - * Copyright 2010 Lawrence Livermore National Security, LLC - * (c.f. AUTHORS, NOTICE.LLNS, COPYING) - * - * This file is part of the diod 9P server project. - * For details, see https://github.com/chaos/diod. - * - * SPDX-License-Identifier: GPL-2.0-or-later -\************************************************************/ - -/* kconjoin.c - mount server using socketpair connection and run test */ - -#if HAVE_CONFIG_H -#include "config.h" -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "src/libdiod/diod_log.h" - -#ifndef PATH_MAX -#define PATH_MAX 1024 -#endif - -#define RFDNO 80 -#define WFDNO 81 - -static void -usage (void) -{ - fprintf (stderr, "Usage: conjoin srv-cmd mnt-cmd tst-cmd\n"); - exit (1); -} - -static char * -_cmd (char *cmdline) -{ - static char fqcmd[PATH_MAX]; - char *p; - - snprintf (fqcmd, sizeof (fqcmd), "%s", cmdline); - if ((p = strchr (fqcmd, ' '))) - *p = '\0'; - return basename (fqcmd); -} - -static int -_interpret_status (int s, char *cmd) -{ - int rc = 1; - - if (WIFEXITED (s)) { - rc = WEXITSTATUS (s); - msg ("%s exited with rc=%d", cmd, rc); - } else if (WIFSIGNALED (s)) - msg ("%s killed with signal %d%s", cmd, WTERMSIG (s), - WCOREDUMP (s) ? " (core dumped)" : ""); - else if (WIFSTOPPED (s)) - msg ("%s stopped with signal %d", cmd, WSTOPSIG (s)); - else if (WIFCONTINUED (s)) - msg ("%s restarted with SIGCONT", cmd); - - return rc; -} - -static void -_movefd (int fd1, int fd2) -{ - if (dup2 (fd1, fd2) < 0) - err_exit ("dup2"); - (void)close (fd1); -} - -int -main (int argc, char *argv[]) -{ - int cs = -1, tosrv[2], fromsrv[2]; - char *srvcmd, *mntcmd, *tstcmd; - pid_t pid; - - if (argc != 4) - usage (); - srvcmd = argv[1]; - mntcmd = argv[2]; - tstcmd = argv[3]; - - diod_log_init (argv[0]); - - /* We were using a socketpair like ../user/conjoin.c. - * However it is maybe useful to test on a pair of pipes too (issue 68) - * so we do that here. - */ - if (pipe (tosrv) < 0) - err_exit ("pipe"); - if (pipe (fromsrv) < 0) - err_exit ("pipe"); - - switch ((pid = fork ())) { - case -1: - err_exit ("fork"); - /*NOTREACHED*/ - case 0: /* child (mnt-cmd, tst-cmd) */ - close (tosrv[0]); - close (fromsrv[1]); - _movefd (tosrv[1], WFDNO); - _movefd (fromsrv[0], RFDNO); - if (unshare (CLONE_NEWNS) < 0) - err_exit ("unshare"); - /* set mount propagation recursively to private */ - if (mount ("none", "/", NULL, MS_REC | MS_PRIVATE, NULL) < 0) - err_exit ("cannot change root filesystem propagation"); - if ((cs = system (mntcmd)) == -1) - err_exit ("failed to run %s", _cmd (mntcmd)); - if (_interpret_status (cs, _cmd (mntcmd))) - exit (1); - close (RFDNO); - close (WFDNO); - if ((cs = system (tstcmd)) == -1) - err_exit ("fork for %s leg", _cmd (tstcmd)); - _interpret_status (cs, _cmd (tstcmd)); - exit (0); - /*NOTREACHED*/ - default: /* parent (srv-cmd) */ - close (tosrv[1]); - close (fromsrv[0]); - _movefd (tosrv[0], RFDNO); - _movefd (fromsrv[1], WFDNO); - if ((cs = system (srvcmd)) == -1) { - err ("fork for %s leg", _cmd (srvcmd)); - break; - } - close (RFDNO); - close (WFDNO); - break; - } - - /* reap child */ - if (waitpid (pid, NULL, 0) < 0) - err_exit ("waitpid"); - - /* report status of parent now that child has reported */ - if (cs != -1) - _interpret_status (cs, _cmd (srvcmd)); - - exit (0); -} - -/* - * vi:tabstop=4 shiftwidth=4 expandtab - */ diff --git a/tests/kern/runtest b/tests/kern/runtest deleted file mode 100755 index af3e0d69..00000000 --- a/tests/kern/runtest +++ /dev/null @@ -1,149 +0,0 @@ -#!/bin/bash - -mntopts="-owfdno=81,rfdno=80" - -PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH -if [ $# -ne 1 ]; then - echo "Usage runtest test" 2>&1 - exit 1 -fi -TEST=$(basename $1) -rm -f $TEST.out $TEST.diod - -if [ -z "$PATH_MOUNT_DIOD" ]; then - echo "PATH_MOUNT_DIOD is not set" 2>&1 - exit 1 -fi -if [ -z "$PATH_DIOD" ]; then - echo "PATH_DIOD is not set" 2>&1 - exit 1 -fi - -if test -n "$FAKEROOTKEY"; then - echo "using fakeroot - skipping" >$TEST.out - exit 77 -fi - -if test $(id -u) != 0; then - echo "not root - skipping" >$TEST.out - exit 77 -fi -if ! modprobe 9p 2>/dev/null; then - echo "9p not loaded - skipping" >$TEST.out - exit 77 -fi -rm -f $TEST.diod $TEST.out -# t28 requires rsync -if [ "$TEST" = "t28" ] && ! which rsync >/dev/null 2>&1; then - echo "rsync is not installed" >$TEST.out - exit 77 -fi -# t29 requires tclsh -if [ "$TEST" = "t29" ] && ! which tclsh >/dev/null 2>&1; then - echo "tclsh is not installed" >$TEST.out - exit 77 -fi -# t30 needs tests the diod -S,--allsquash option -if [ "$TEST" = "t30" ]; then - opt="-S" -fi -# t31 (fstest) needs diod -N,--no-userdb and 'prove' (perl-Test-Harness) -if [ "$TEST" = "t31" ]; then - if ! which prove >/dev/null 2>&1; then - echo "prove is not installed" >$TEST.out - exit 77 - fi - opt="-N" -fi -# t32 requires dbench, which is installed externally -if [ "$TEST" = "t32" ] && ! which dbench >/dev/null 2>&1; then - echo "dbench is unavailable" >$TEST.out - exit 77 -fi -# t40 requires scrub -if [ "$TEST" = "t40" ] && ! which scrub >/dev/null 2>&1; then - echo "scrub is not installed" >$TEST.out - exit 77 -fi -# t42,t46,t47 require setfattr/getfattr -if [ "$TEST" = "t42" ] || [ "$TEST" = "t46" ] || [ "$TEST" = "t47" ]; then - if ! which setfattr >/dev/null 2>&1; then - echo "setfattr is not installed" >$TEST.out - exit 77 - fi -fi -# t43 requires getfacl/setfacl -if [ "$TEST" = "t43" ] && ! which setfacl >/dev/null 2>&1; then - echo "setfacl is not installed" >$TEST.out - exit 77 -fi -# t42,t43 require xattr support in 9p file system, and in /tmp -if [ "$TEST" = "t42" ] || [ "$TEST" = "t43" ]; then - if ! grep -q v9fs_xattr_set /proc/kallsyms; then - echo "9p not built with xattr support" >$TEST.out - exit 77 - fi - if ! ${TOP_BUILDDIR}/tests/user/txattr ${TMPDIR:-/tmp}; then - echo "${TMPDIR:-/tmp} requires xattr support" >$TEST.out - exit 77 - fi -fi -# t43 requires posixacl mount option -if [ "$TEST" = "t43" ]; then - mntopts="$mntopts,posixacl,access=client,uname=root" -fi - -ulimit -c unlimited - -umask 022 -PATH_MNTDIR=$(mktemp -d) || exit 1 -PATH_EXPDIR=$(mktemp -d) || exit 1 -chmod 755 $PATH_MNTDIR $PATH_EXPDIR -export PATH_EXPDIR -export PATH_MNTDIR - -# t35 and t40 requires a certain amount of disk space -# It's not possible to check until $PATH_MNTDIR is created -case "$TEST" in - t35|t40) - avail=$(df -B1024K --output=avail "$PATH_MNTDIR" | tail -n1) - case "$TEST" in - t35) required=500;; - t40) required=100;; - esac - if [ "$avail" -lt "$required" ]; then - echo "Requires ${required}MB free space on $PATH_MNTDIR, only ${avail}MB available" >"$TEST.out" - exit 77 - fi;; -esac - -export MALLOC_CHECK_=3 - -# t00 is a special interactive test, not normally run -if [ "`basename $TEST`" = "t00" ]; then -./kconjoin \ - "$PATH_DIOD -r80 -w81 -c /dev/null -n -d 1 -e $PATH_EXPDIR" \ - "$PATH_MOUNT_DIOD -n $mntopts nohost:$PATH_EXPDIR $PATH_MNTDIR" \ - "${KERN_SRCDIR}/$TEST" - [ -d "$PATH_EXPDIR" ] && rm -rf $PATH_EXPDIR - [ -d "$PATH_MNTDIR" ] && rm -rf $PATH_MNTDIR - exit 0 -fi - -./kconjoin \ - "$PATH_DIOD $opt -r80 -w81 -c /dev/null -n -d 1 -L $TEST.diod -e $PATH_EXPDIR" \ - "$PATH_MOUNT_DIOD -n $mntopts nohost:$PATH_EXPDIR $PATH_MNTDIR" \ - "${KERN_SRCDIR}/$TEST" \ - >$TEST.out 2>&1 -rc=$? - -[ -d "$PATH_EXPDIR" ] && rm -rf "$PATH_EXPDIR" -[ -d "$PATH_MNTDIR" ] && rm -rf "$PATH_MNTDIR" - -if [ $rc != 0 ]; then - echo "test exited with $rc" >>$TEST.out - exit $rc -fi - -diff ${KERN_SRCDIR}/$TEST.exp $TEST.out >$TEST.diff -exit $? diff --git a/tests/kern/t28.exp b/tests/kern/t28.exp deleted file mode 100644 index 252593b9..00000000 --- a/tests/kern/t28.exp +++ /dev/null @@ -1,10 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -rsync /etc to mntdir -rsync /etc to mntdir again - should be silent -sending incremental file list - -rsync /etc to expdir - should be silent -sending incremental file list - -kconjoin: t28 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/t31 b/tests/kern/t31 deleted file mode 100755 index ee5f42ad..00000000 --- a/tests/kern/t31 +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -e - -PATH_FSTEST=$(pwd)/fstest -cd $PATH_MNTDIR -prove --nocolor -r $PATH_FSTEST \ - | sed -e 's!'$PATH_FSTEST/'!!g' | grep -v 'Files=' diff --git a/tests/kern/t31.exp b/tests/kern/t31.exp deleted file mode 100644 index 6be5b48b..00000000 --- a/tests/kern/t31.exp +++ /dev/null @@ -1,189 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -tests/chflags/00.t ... ok -tests/chflags/01.t ... ok -tests/chflags/02.t ... ok -tests/chflags/03.t ... ok -tests/chflags/04.t ... ok -tests/chflags/05.t ... ok -tests/chflags/06.t ... ok -tests/chflags/07.t ... ok -tests/chflags/08.t ... ok -tests/chflags/09.t ... ok -tests/chflags/10.t ... ok -tests/chflags/11.t ... ok -tests/chflags/12.t ... ok -tests/chflags/13.t ... ok -tests/chmod/00.t ..... ok -tests/chmod/01.t ..... ok -tests/chmod/02.t ..... ok -tests/chmod/03.t ..... ok -tests/chmod/04.t ..... ok -tests/chmod/05.t ..... ok -tests/chmod/06.t ..... ok -tests/chmod/07.t ..... ok -tests/chmod/08.t ..... ok -tests/chmod/09.t ..... ok -tests/chmod/10.t ..... ok -tests/chmod/11.t ..... ok -tests/chown/00.t ..... ok -tests/chown/01.t ..... ok -tests/chown/02.t ..... ok -tests/chown/03.t ..... ok -tests/chown/04.t ..... ok -tests/chown/05.t ..... ok -tests/chown/06.t ..... ok -tests/chown/07.t ..... ok -tests/chown/08.t ..... ok -tests/chown/09.t ..... ok -tests/chown/10.t ..... ok -tests/link/00.t ...... ok -tests/link/01.t ...... ok -tests/link/02.t ...... ok -tests/link/03.t ...... ok -tests/link/04.t ...... ok -tests/link/05.t ...... ok -tests/link/06.t ...... ok -tests/link/07.t ...... ok -tests/link/08.t ...... ok -tests/link/09.t ...... ok -tests/link/10.t ...... ok -tests/link/11.t ...... ok -tests/link/12.t ...... ok -tests/link/13.t ...... ok -tests/link/14.t ...... ok -tests/link/15.t ...... ok -tests/link/16.t ...... ok -tests/link/17.t ...... ok -tests/mkdir/00.t ..... ok -tests/mkdir/01.t ..... ok -tests/mkdir/02.t ..... ok -tests/mkdir/03.t ..... ok -tests/mkdir/04.t ..... ok -tests/mkdir/05.t ..... ok -tests/mkdir/06.t ..... ok -tests/mkdir/07.t ..... ok -tests/mkdir/08.t ..... ok -tests/mkdir/09.t ..... ok -tests/mkdir/10.t ..... ok -tests/mkdir/11.t ..... ok -tests/mkdir/12.t ..... ok -tests/mkfifo/00.t .... ok -tests/mkfifo/01.t .... ok -tests/mkfifo/02.t .... ok -tests/mkfifo/03.t .... ok -tests/mkfifo/04.t .... ok -tests/mkfifo/05.t .... ok -tests/mkfifo/06.t .... ok -tests/mkfifo/07.t .... ok -tests/mkfifo/08.t .... ok -tests/mkfifo/09.t .... ok -tests/mkfifo/10.t .... ok -tests/mkfifo/11.t .... ok -tests/mkfifo/12.t .... ok -tests/open/00.t ...... ok -tests/open/01.t ...... ok -tests/open/02.t ...... ok -tests/open/03.t ...... ok -tests/open/04.t ...... ok -tests/open/05.t ...... ok -tests/open/06.t ...... ok -tests/open/07.t ...... ok -tests/open/08.t ...... ok -tests/open/09.t ...... ok -tests/open/10.t ...... ok -tests/open/11.t ...... ok -tests/open/12.t ...... ok -tests/open/13.t ...... ok -tests/open/14.t ...... ok -tests/open/15.t ...... ok -tests/open/16.t ...... ok -tests/open/17.t ...... ok -tests/open/18.t ...... ok -tests/open/19.t ...... ok -tests/open/20.t ...... ok -tests/open/21.t ...... ok -tests/open/22.t ...... ok -tests/open/23.t ...... ok -tests/rename/00.t .... ok -tests/rename/01.t .... ok -tests/rename/02.t .... ok -tests/rename/03.t .... ok -tests/rename/04.t .... ok -tests/rename/05.t .... ok -tests/rename/06.t .... ok -tests/rename/07.t .... ok -tests/rename/08.t .... ok -tests/rename/09.t .... ok -tests/rename/10.t .... ok -tests/rename/11.t .... ok -tests/rename/12.t .... ok -tests/rename/13.t .... ok -tests/rename/14.t .... ok -tests/rename/15.t .... ok -tests/rename/16.t .... ok -tests/rename/17.t .... ok -tests/rename/18.t .... ok -tests/rename/19.t .... ok -tests/rename/20.t .... ok -tests/rmdir/00.t ..... ok -tests/rmdir/01.t ..... ok -tests/rmdir/02.t ..... ok -tests/rmdir/03.t ..... ok -tests/rmdir/04.t ..... ok -tests/rmdir/05.t ..... ok -tests/rmdir/06.t ..... ok -tests/rmdir/07.t ..... ok -tests/rmdir/08.t ..... ok -tests/rmdir/09.t ..... ok -tests/rmdir/10.t ..... ok -tests/rmdir/11.t ..... ok -tests/rmdir/12.t ..... ok -tests/rmdir/13.t ..... ok -tests/rmdir/14.t ..... ok -tests/rmdir/15.t ..... ok -tests/symlink/00.t ... ok -tests/symlink/01.t ... ok -tests/symlink/02.t ... ok -tests/symlink/03.t ... ok -tests/symlink/04.t ... ok -tests/symlink/05.t ... ok -tests/symlink/06.t ... ok -tests/symlink/07.t ... ok -tests/symlink/08.t ... ok -tests/symlink/09.t ... ok -tests/symlink/10.t ... ok -tests/symlink/11.t ... ok -tests/symlink/12.t ... ok -tests/truncate/00.t .. ok -tests/truncate/01.t .. ok -tests/truncate/02.t .. ok -tests/truncate/03.t .. ok -tests/truncate/04.t .. ok -tests/truncate/05.t .. ok -tests/truncate/06.t .. ok -tests/truncate/07.t .. ok -tests/truncate/08.t .. ok -tests/truncate/09.t .. ok -tests/truncate/10.t .. ok -tests/truncate/11.t .. ok -tests/truncate/12.t .. ok -tests/truncate/13.t .. ok -tests/truncate/14.t .. ok -tests/unlink/00.t .... ok -tests/unlink/01.t .... ok -tests/unlink/02.t .... ok -tests/unlink/03.t .... ok -tests/unlink/04.t .... ok -tests/unlink/05.t .... ok -tests/unlink/06.t .... ok -tests/unlink/07.t .... ok -tests/unlink/08.t .... ok -tests/unlink/09.t .... ok -tests/unlink/10.t .... ok -tests/unlink/11.t .... ok -tests/unlink/12.t .... ok -tests/unlink/13.t .... ok -All tests successful. -Result: PASS -kconjoin: t31 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/t37 b/tests/kern/t37 deleted file mode 100755 index d8ba809a..00000000 --- a/tests/kern/t37 +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -e - -# fails -#fsx/fsx -N 1000 -W $PATH_MNTDIR/testfile -#fsx/fsx -N 1000 -R $PATH_MNTDIR/testfile - -# passes with mmap disabled -fsx/fsx -H -N 1000 -R -W $PATH_MNTDIR/testfile diff --git a/tests/kern/t37.exp b/tests/kern/t37.exp deleted file mode 100644 index dd0c50f4..00000000 --- a/tests/kern/t37.exp +++ /dev/null @@ -1,8 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -mapped writes DISABLED -truncating to largest ever: 0x3645e -truncating to largest ever: 0x3f958 -truncating to largest ever: 0x3f9e9 -All operations completed A-OK! -kconjoin: t37 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/t38 b/tests/kern/t38 deleted file mode 100755 index 34c0de3b..00000000 --- a/tests/kern/t38 +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -e - -fsstress/fsstress -d $PATH_MNTDIR -n 10 -p 10 -l 10 diff --git a/tests/kern/t38.exp b/tests/kern/t38.exp deleted file mode 100644 index 7056f239..00000000 --- a/tests/kern/t38.exp +++ /dev/null @@ -1,3 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -kconjoin: t38 exited with rc=0 -kconjoin: diod exited with rc=0 diff --git a/tests/kern/t39 b/tests/kern/t39 deleted file mode 100755 index 95ed9a42..00000000 --- a/tests/kern/t39 +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -e - -cp fsstress/fsstress $PATH_EXPDIR -$PATH_MNTDIR/fsstress -d $PATH_EXPDIR -n 1 -p 1 -l 1 diff --git a/tests/kern/t39.exp b/tests/kern/t39.exp deleted file mode 100644 index 5f1824c4..00000000 --- a/tests/kern/t39.exp +++ /dev/null @@ -1,3 +0,0 @@ -kconjoin: mount.diod exited with rc=0 -kconjoin: t39 exited with rc=0 -kconjoin: diod exited with rc=0 From 840ae1c6787db2e21a321e68c03a9e9061839801 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 20:41:30 -0700 Subject: [PATCH 14/17] .gitignore: remove ancient paths Problem: the .gitignore names a bunch of files and directories that no longer exist. Remove them. --- .gitignore | 62 ------------------------------------------------------ 1 file changed, 62 deletions(-) diff --git a/.gitignore b/.gitignore index bc767717..18396aa9 100644 --- a/.gitignore +++ b/.gitignore @@ -57,65 +57,3 @@ Makefile *.diff core.* *.tar.gz - -# project specific -diod/diod -scripts/auto.diod -scripts/diod.init -utils/diodcat -utils/dioddate -utils/diodload -utils/diodls -utils/diodmount -utils/diodshowmount -utils/dtop - -tests/*/*.diod -tests/misc/tcap -tests/misc/tconf -tests/misc/tfcntl -tests/misc/tfidpool -tests/misc/tlist -tests/misc/tlua -tests/misc/tnpsrv -tests/misc/tnpsrv2 -tests/misc/tnpsrv3 -tests/misc/topt -tests/misc/tserialize -tests/misc/tsetfsuid -tests/misc/tsetfsuidsupp -tests/misc/tsetuid -tests/misc/tsuppgrp -tests/user/conjoin -tests/user/tattach -tests/user/tattachmt -tests/user/tflush -tests/user/tgetxattr -tests/user/tmkdir -tests/user/tread -tests/user/tremovexattr -tests/user/tsetxattr -tests/user/tstat -tests/user/twrite -tests/user/txattr -tests/kern/dbench/proto.h -tests/kern/dbench/dbench -tests/kern/fsstress/fsstress -tests/kern/fstest/fstest -tests/kern/fsx/fsx -tests/kern/kconjoin -tests/kern/pathwalk -tests/kern/postmark/postmark -tests/kern/tatomic -tests/kern/tcreate -tests/kern/tfcntl2 -tests/kern/tfcntl3 -tests/kern/tflock -tests/kern/tflock2 -tests/kern/tfsgid -tests/kern/trename -tests/kern/tstat -tests/kern/tstatfs -tests/kern/tsuppgrp -tests/kern/t32.dbench -tests/kern/t33.postmark From 9597b2dc4089549ec12e7921d587125a77e086f1 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Thu, 30 Oct 2025 20:42:34 -0700 Subject: [PATCH 15/17] git: drop check in tests/kern Problem: tests/kern has been removed but the github workflow still tries to run it. Don't do that. --- .github/workflows/main.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 582ea9e8..b7269776 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -45,8 +45,6 @@ jobs: run: scripts/check-valgrind.sh - name: sudo some unit tests run: scripts/check-root.sh - - name: check with linux/9p - run: sudo make check -C tests/kern - name: make distcheck run: make distcheck - name: get test results on failure From a7032c1c2cd6677a84a004ad01e510dea81a8724 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Fri, 31 Oct 2025 06:23:09 -0700 Subject: [PATCH 16/17] diodcli: fix compliation issue on aarch64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: compilation fails on debian 12/aarch64: diodcli.c: In function ‘print_stat’: diodcli.c:838:66: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 7 has type ‘__blksize_t’ {aka ‘int’} [-Werror=format=] diodcli.c:838:13: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 8 has type ‘__nlink_t’ {aka ‘unsigned int’} [-Werror=format=] Add a cast. --- src/cmd/diodcli.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cmd/diodcli.c b/src/cmd/diodcli.c index 042e1824..67eaf20b 100644 --- a/src/cmd/diodcli.c +++ b/src/cmd/diodcli.c @@ -835,15 +835,15 @@ int cmd_ls (Npcfid *root, int argc, char **argv) */ void print_stat (struct stat *sb) { - printf ("mode=%x owner=%d:%d size=%ju blocks=%ju blocksize=%lu" - " links=%lu device=%x:%x mtime=%ju ctime=%ju atime=%ju\n", + printf ("mode=%x owner=%d:%d size=%ju blocks=%ju blocksize=%ju" + " links=%ju device=%x:%x mtime=%ju ctime=%ju atime=%ju\n", sb->st_mode, sb->st_uid, sb->st_gid, (uintmax_t)sb->st_size, (uintmax_t)sb->st_blocks, - sb->st_blksize, - sb->st_nlink, + (uintmax_t)sb->st_blksize, + (uintmax_t)sb->st_nlink, major (sb->st_rdev), minor (sb->st_rdev), (uintmax_t)sb->st_mtime, From b2e5c85361bb5dd42aacc7429419ac3a47363cf4 Mon Sep 17 00:00:00 2001 From: Jim Garlick Date: Fri, 31 Oct 2025 07:05:12 -0700 Subject: [PATCH 17/17] testsuite: temporarily disable security XATTR test Problem: apparently raspbian doesn't configure v9fs with 9P_FS_SECURITY, so the xattr tests on the "security." prefix fail with "Operation not supported". Add a SECURITY test prereq so these tests are skipped by default. Later we can look into how to automatically enable them when the feature is available. --- t/t0012-v9fs-multiuser.t | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/t/t0012-v9fs-multiuser.t b/t/t0012-v9fs-multiuser.t index 6503af73..b2cdb0ce 100755 --- a/t/t0012-v9fs-multiuser.t +++ b/t/t0012-v9fs-multiuser.t @@ -100,7 +100,7 @@ test_expect_success XATTR 'clear trusted extended attributes' ' $SUDO $PATH_GETFATTR -m- -d mnt/file.xattr >trustedx.out && test_must_fail test $(wc -l security.out && test_cmp security.exp security.out ' -test_expect_success XATTR 'clear security extended attributes' ' +test_expect_success XATTR,SECURITY 'clear security extended attributes' ' $SUDO $PATH_SETFATTR -x security.foo mnt/file2.xattr && $SUDO $PATH_SETFATTR -x security.bar mnt/file2.xattr && $SUDO $PATH_SETFATTR -x security.baz mnt/file2.xattr &&