Home | History | Annotate | only in /src/tests/fs/vfs
History log of /src/tests/fs/vfs
RevisionDateAuthorComments
 1.3 13-Jul-2010  jmmv Get rid of static Atffiles and let bsd.test.mk generate them on the fly.
 1.2 13-Jul-2010  pooka Add basic tests for vfsops.

tfilehandle is a test for PR kern/43605
 1.1 05-Jul-2010  njoly Add test program that use sample code from kern/41937, and fs rump
helpers to check currently supported filesystems.

t_rmdirrace (1/1): 5 test cases
ext2fs_race: Passed.
ffs_race: Passed.
msdosfs_race: Passed.
sysvbfs_race: Passed.
tmpfs_race: Passed.
 1.30 06-Jun-2022  nia branches: 1.30.4;
build system: Revert all the recent additions of MK[...] knobs that
allow conditionally disabling the building of certain user space
programs in the 'base' set.

There is not enough consensus that this is the right way and a few
people had strong objections, see source-changes-d@.
 1.29 27-May-2022  nia mk: Add a MKLFS flag for excluding the log-structured filesystem userspace
tools from the build.
 1.28 28-Mar-2022  christos Add a test for hardlink sysctl limiting.
 1.27 02-Mar-2020  christos zfs needs rumpkern_sysproxy
 1.26 01-Mar-2020  christos Centralize the base rump libraries into a variable used by all the other
Makefiles so that we can make changes to it centrally as needed and have
less mess. Fixes the sun2 build that needs rumpvfs after librump after
the latest changes.
 1.25 19-Nov-2017  martin branches: 1.25.4;
ATF test program for PR kern/52738: check for mtime updates after rewriting
a file.
 1.24 02-Feb-2017  martin PR kern/51762: add a test program
 1.23 27-Jan-2017  hannken Add test for read/write to readonly update mount.
 1.22 27-Aug-2016  christos branches: 1.22.2;
Fix static linking.
 1.21 13-Aug-2016  christos order network libraries properly.
 1.20 07-Jan-2015  pooka branches: 1.20.2;
Move sysproxy support into a separate component, rumpkern_sysproxy,
instead of it being always provided by the rump kernel base. This
move accomplishes two things:

1) it is no longer necessary to provide sysproxy hypercall stubs for
platforms which do not want to use sysproxy
2) it is easier to reason about the security aspects, since configurations
not linking the sysproxy component simply do not support remote
system calls

discussed on rumpkernel-users
 1.19 28-Jun-2013  reinoud Add the rumpfs_udf to the LDADD variable
 1.18 31-Aug-2012  pooka branches: 1.18.2;
Hook ZFS tests to MKZFS instead of a homegrown variable.
 1.17 20-Aug-2012  pooka Add a vfstest zfs attachment. This is a compile-time option,
default off, due the large numbers of failing tests (some of them
look like quite trivial failures).
 1.16 11-Aug-2011  uch branches: 1.16.2;
add ATF tests for v7fs. patch by njoly@. thank you.
 1.15 12-Jan-2011  pooka Move basic unionfs test from fs/union to fs/vfs and make it test
all whiteout-supporting file systems with the file system in question
as the upper layer. Also, add an unlink to the test to see if
whiteouts are really working.

ffslog_basic is the test case for PR kern/44377
 1.14 06-Jan-2011  njoly Start unprivileged filesystem tests. For now, only chown/chmod owner
checks.
 1.13 31-Dec-2010  pooka Add some elementary tests for r/o file systems. More in 2011!
 1.12 23-Sep-2010  he Reorder the library specifications, so that we don't depend on the
library dependencies recorded in shared libraries, allowing these
to be linked statically as well.
 1.11 19-Aug-2010  pooka Start adding some I/O tests. This one does a sparse write to the
second page on a file, then writes the first, and finally checks
it can read something expected. Adapted the from program supplied
by yamt in PR kern/36429.
 1.10 17-Aug-2010  pooka Add test which fills up the file system and expects ENOSPC.
 1.9 26-Jul-2010  pooka need to link in nfs client bits
 1.8 19-Jul-2010  pooka Need to use the ${PRINTOBJDIR} trick for LIBISPRIVATE ...
 1.7 19-Jul-2010  pooka Convert the file system test common routines into a library to
facilitate more complex user-side stuff (like the lfs cleaner and
nfs rpc code), which are non-trivial to do by #include.
 1.6 14-Jul-2010  pooka Convert "The Original" rename race test from to vfs and retire the
ffs/tmpfs versions. The only difference is that the origamical
one mounted ffs with MNT_LOG (and therein actually lay the bug).
 1.5 13-Jul-2010  pooka Add a few simple basic-level tests for vnodeops. They don't cover
corner-cases, but make sure things at least superficially work
(which they always don't). More to come...
 1.4 13-Jul-2010  pooka Link in puffs components for puffs tests.
 1.3 13-Jul-2010  pooka Add basic tests for vfsops.

tfilehandle is a test for PR kern/43605
 1.2 08-Jul-2010  pooka Add LFS to vfs test list. TODO: start cleanerd too.

It fails in a number of different ways. Some of them seem to appear
as a function of the file system size (i'm not sure if it's because
the lack of the cleaner or not. i'm guessing ``no'', though).

ok njoly
 1.1 05-Jul-2010  njoly Add test program that use sample code from kern/41937, and fs rump
helpers to check currently supported filesystems.

t_rmdirrace (1/1): 5 test cases
ext2fs_race: Passed.
ffs_race: Passed.
msdosfs_race: Passed.
sysvbfs_race: Passed.
tmpfs_race: Passed.
 1.16.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.16.2.1 30-Oct-2012  yamt sync with head
 1.18.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.20.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.22.2.1 21-Apr-2017  bouyer Sync with HEAD
 1.25.4.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.30.4.2 12-Aug-2024  perseant Add exFAT conditions to vfs tests
 1.30.4.1 02-Aug-2024  perseant Add t_newfs to test compatibility of newfs, fsck and dumpfs utilities.
 1.11 16-Jul-2019  martin PR misc/54382: whenever open(2) is called with O_CREAT, make sure to
pass an open mode argument.
 1.10 30-Nov-2018  hannken Skip zfs, it does not GOP_ALLOC.

PR kern/47656 test zfs_fillfs.
 1.9 13-Jan-2017  christos branches: 1.9.12; 1.9.14;
Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.8 16-Mar-2013  jmmv branches: 1.8.12;
Mark a bunch of routinely-broken ZFS tests as expected failures. Point
them at PR kern/47656.
 1.7 17-Mar-2011  jmmv branches: 1.7.4; 1.7.10;
Remove hack introduced in revision 1.6 to workaround a bug in atf-run that
would cause it to lock up while waiting for the p2k_ffs_fillfs test case
to complete (in some cases only).

This has been fixed by the upstream revision
3dd2481ec97b2fde76521939b6451d03ce989745 which I have just pulled into
our copy of atf.
 1.6 06-Mar-2011  pooka Add a kludge to prevent a test run from completely hanging.
Some analysis:

1) p2k_ffs test program opens a socketpair and forks off rump_ffs
2) after mounting the file system, test program decides it
wants to skip the test and exits
3) somehow, the puffs event thread of rump_ffs stays in kqueue
waiting for activity. fstat+gdb suggests it's waiting for the
now-orphaned socketpair (but I didn't fully verify. is there
an easy way to dump the state of a kqueue descriptor?).
4) test program is a zombie
5) atf-run waits forever

Note: this doesn't trigger always.

So, it seems there are at least two bugs: 1) test case doesn't
timeout 2) the kevent call in rump_ffs never returns even though
the sockerpair is orphaned

So, explicitly unmount the file system before skipping the test.
Obviously the above bugs needs to be properly fixed, since other
skipping test cases can unbeknowingly trigger the issue.
 1.5 07-Jan-2011  pooka P2K_FFS uses puffs and therefore does not GOP_ALLOC either
 1.4 11-Nov-2010  pooka skip tests which use features which rumpfs does not support
(namely: vop_rename and a file system size limit)
 1.3 28-Aug-2010  wiz Use explanation for GOP_ALLOC in message from version 1.1.
Ok pooka@.
 1.2 27-Aug-2010  pooka Skip the full test for puffs now that we can (yes, atf issue #53)
 1.1 17-Aug-2010  pooka Add test which fills up the file system and expects ENOSPC.
 1.7.10.1 23-Jun-2013  tls resync from head
 1.7.4.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.8.12.1 20-Mar-2017  pgoyette Sync with HEAD
 1.9.14.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.9.14.1 10-Jun-2019  christos Sync with HEAD
 1.9.12.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.19 16-Jul-2019  christos fix misplaced paren
 1.18 16-Jul-2019  martin PR misc/54382: whenever open(2) is called with O_CREAT, make sure to
pass an open mode argument.
 1.17 13-Jan-2017  christos branches: 1.17.14;
Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.16 04-Apr-2015  riastradh branches: 1.16.2;
Fix remaining read(fd, NULL, 1) cases.
 1.15 28-Mar-2015  riastradh Let I/O errors override inode update errors in UFS.

Fixes tests/fs/vfs/t_io:read_fault for UFS.
 1.14 28-Mar-2015  riastradh This doesn't affect p2k_ffs after all, no idea why yet.
 1.13 28-Mar-2015  riastradh Test that read fails with EFAULT even if O_SYNC|O_RSYNC are set.
 1.12 04-Aug-2013  pooka tests for i/o-after-unlink
 1.11 12-Jun-2013  pooka Fix the test for rumpfs on amd64 by adding a creation mode to open().
thanks to gson for the prod.
 1.10 20-Mar-2012  njoly branches: 1.10.2;
Remove unneeded atf_tc_expect_pass calls.
 1.9 20-Mar-2012  jruoho Remove xfail.
 1.8 27-Feb-2011  njoly branches: 1.8.4;
Add a small testcase that shrink a file using 2 consecutive ftruncate
calls.
 1.7 02-Feb-2011  pooka add a few overwrite-related tests
 1.6 03-Jan-2011  pooka branches: 1.6.2;
Give this a chance of working on non-4kB pagesize.
from martin's sparc64 test run
 1.5 01-Jan-2011  pooka Guess-fix a signed vs. unsigned compiler warning report by pgoyette
(it doesn't trigger in my src working copy for whatever reason).
 1.4 01-Jan-2011  pooka fill in number of PR kern/44307
 1.3 01-Jan-2011  pooka Check that extending a file grows its size (with and without O_APPEND).
 1.2 11-Nov-2010  pooka use atf interfaces for error reportage
 1.1 19-Aug-2010  pooka Start adding some I/O tests. This one does a sparse write to the
second page on a file, then writes the first, and finally checks
it can read something expected. Adapted the from program supplied
by yamt in PR kern/36429.
 1.6.2.2 05-Mar-2011  bouyer Sync with HEAD
 1.6.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.8.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.8.4.1 17-Apr-2012  yamt sync with head
 1.10.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.10.2.1 23-Jun-2013  tls resync from head
 1.16.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.17.14.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.5 30-Mar-2022  christos branches: 1.5.4;
remove zfs from the exception list; it now works like the other fs's.
 1.4 30-Mar-2022  christos update copyright.
 1.3 30-Mar-2022  christos skip userlevel filesystems that have their own rules (they depend on the
system setting of the sysctl on NetBSD) and zfs because it implements its
own rules for hardlinks to files (does its own permission checks).
 1.2 29-Mar-2022  christos ignore EOPNOTSUPP errors for fs's that don't support hard links.
 1.1 28-Mar-2022  christos Add a test for hardlink sysctl limiting.
 1.5.4.1 12-Aug-2024  perseant Add exFAT conditions to vfs tests
 1.1 02-Feb-2017  martin branches: 1.1.2; 1.1.4;
PR kern/51762: add a test program
 1.1.4.2 21-Apr-2017  bouyer Sync with HEAD
 1.1.4.1 02-Feb-2017  bouyer file t_mtime_otrunc.c was added on branch bouyer-socketcan on 2017-04-21 16:54:10 +0000
 1.1.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.1.2.1 02-Feb-2017  pgoyette file t_mtime_otrunc.c was added on branch pgoyette-localcount on 2017-03-20 06:57:57 +0000
 1.1 19-Nov-2017  martin ATF test program for PR kern/52738: check for mtime updates after rewriting
a file.
 1.44 31-Jan-2022  ryo Extend the time to wait for the thread to quit.

It seems that alarm(1) is not enough time for the thread to actually exit after quittingtime = 1.
It randomly failed with "Test program received signal 14" on a slow environment.
 1.43 27-Nov-2021  gson Force failure of the nfs_renamerace_cycle, p2k_ffs_renamerace_cycle,
and puffs_renamerace_cycle test cases as they fail only randomly or
only on some systems.
 1.42 23-Oct-2021  hannken After converting msdosfs_rename() to use genfs_sane_rename() the
MSDOS tests should pass.

Tested on QEMU/nvmm archs i386 and amd64.

Should resolve PR kern/43626 (directory renaming more than a little racy)
 1.41 16-Jun-2021  riastradh tests/fs/vfs: Mark udf_renamerace_cycle flaky, PR kern/56253.
 1.40 05-Sep-2020  riastradh Revert "ufs: Prevent mkdir from choking on deleted directories."

This change made no sense and should not have been committed.
 1.39 05-Sep-2020  riastradh ufs: Prevent mkdir from choking on deleted directories.

Fix some missing uvm_vnp_setsize in screw cases while here.
 1.38 05-Sep-2020  riastradh genfs_rename: Fix deadlocks in cross-directory cyclic rename.

Reproducer:

A: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600);
rmdir("c/d/e"); rmdir("c/d"); }
B: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600);
rename("c", "c/d/e"); }
C: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600);
rename("c/d/e", "c"); }

Deadlock:

- A holds c and wants to lock d; and either
- B holds . and d and wants to lock c, or
- C holds . and d and wants to lock c.

The problem with these is that genfs_rename_enter_separate in B or C
tried lock order .->d->c->e (in A/B, fdvp->tdvp->fvp->tvp; in A/C,
tdvp->fdvp->tvp->fvp) which violates the ancestor->descendant order
.->c->d->e.

The resolution is to change B to do fdvp->fvp->tdvp->tvp and C to do
tdvp->tvp->fdvp->fvp. But there's an edge case: tvp and fvp might be
the same (hard links), and we can't detect that until after we've
looked them both up -- and in some file systems (I'm looking at you,
ufs), there is no mere lookup operation, only lookup-and-lock, so we
can't even hold the lock on one of tvp or fvp when we look up the
other one if there's a chance they might be the same.

Fortunately the cases
(a) tvp = fvp
(b) tvp or fvp is a directory
are mutually exclusive as long as directories cannot be hard-linked.
In case (a) we can just defer locking {tvp, fvp} until the end, because
it can't possibly have {fdvp or fvp, tdvp or tvp} as descendants. In
case (b) we can just lock them in the order fdvp->fvp->tdvp->tvp or
tdvp->tvp->fdvp->fvp if the first one of {fvp, tvp} is a directory,
because it can't possibly coincide with the second one of {fvp, tvp}.

With this change, we can now prove that the locking order is consistent
with the ancestor->descendant partial ordering. Where two nodes are
incommensurate under that partial ordering, they are only ever locked
by rename and there is only ever one rename at a time.

Proof:

- For same-directory renames, genfs_rename_enter_common locks the
directory first and then the children. The order
directory->child[i] is consistent with ancestor->descendant and
child[0]/child[1] are incommensurate.

- For cross-directory renames:

. While a rename is in progress and the fs-wide rename lock is held,
directories can be created or removed but not changed, so the
outcome of gro_genealogy -- which, given fdvp and tdvp, returns
the node N relating fdvp/N/.../tdvp or null if there is none --
can only transition from finding N to not finding N, if one of
the directories is removed while any of the vnodes are unlocked.
Merely creating directories cannot change the ancestry of tdvp,
and concurrent renames are not possible.

Thus, if a gro_genealogy determined the operation to have the
form fdvp/N/.../tdvp, then it might cease to have that form, but
only because tdvp was removed which will harmlessly cause the
rename to fail later on. Similarly, if gro_genealogy determined
the operation _not_ to have the form fdvp/N/.../tdvp then it
can't begin to have that form until after the rename has
completed.

The lock order is,

=> for fdvp/.../tdvp:
1. lock fdvp
2. lookup(/lock/unlock) fvp (consistent with fdvp->fvp)
3. lock fvp if a directory (consistent with fdvp->fvp)
4. lock tdvp (consistent with fdvp->tdvp and possibly fvp->tdvp)
5. lookup(/lock/unlock) tvp (consistent with tdvp->tvp)
6. lock fvp if a nondirectory (fvp->t* or fvp->fdvp is impossible)
7. lock tvp if not fvp (tvp->f* is impossible unless tvp=fvp)

=> for incommensurate fdvp & tdvp, or for tdvp/.../fdvp:
1. lock tdvp
2. lookup(/lock/unlock) tvp (consistent with tdvp->tvp)
3. lock tvp if a directory (consistent with tdvp->tvp)
4. lock fdvp (either incommensurate with tdvp and/or tvp, or
consistent with tdvp(->tvp)->fdvp)
5. lookup(/lock/unlock) fvp (consistent with fdvp->fvp)
6. lock tvp if a nondirectory (tvp->f* or tvp->tdvp is impossible)
7. lock fvp if not tvp (fvp->t* is impossible unless fvp=tvp)

Deadlocks found by hannken@; resolution worked out with dholland@.

XXX I think we could improve concurrency somewhat -- with a likely
big win for applications like tar and rsync that create many files
with temporary names and then rename them to the permanent one in the
same directory -- by making vfs_renamelock a reader/writer lock: any
number of same-directory renames, or exactly one cross-directory
rename, at any one time.
 1.37 05-Sep-2020  riastradh tests/fs/vfs/t_renamerace: Test a screw case hannken@ found.
 1.36 17-Aug-2019  gson The udf_renamerace test case no longer fails due to PR kern/49046, but
it does fail due to PR kern/53865 on real hardware.
 1.35 13-Jan-2019  gson branches: 1.35.2;
Mark the fs/vfs/t_renamerace:udf_renamerace_dirs test case as an
expected failure referencing PR kern/53865, and force failure to avoid
reports of unexpected success as it does not realiably fail under
qemu. This makes the treatment of udf_renamerace_dirs the same as
that of udf_renamerace, only with a different PR. Also, make
whitespace consistent between the two.
 1.34 13-Jan-2017  christos branches: 1.34.12; 1.34.14;
Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.33 04-May-2016  dholland branches: 1.33.2;
Cite a relevant PR for msdos_renamerace instead of one that was fixed
several years ago.
 1.32 29-Jul-2014  gson Mark the udf_renamerace test case (but not udf_renamerace_dirs) as an
expected failure again, now with a reference to PR kern/49046.
Since the test only fails part of the time, force failure to
avoid failure reports reports due to unexpected success.
 1.31 25-Jul-2014  pgoyette Remove atf_tc_expect_fail() calls for udf file-system. These tests are
currently passing. As discussed on current-users. Any new failures
should be reported via send-pr.
 1.30 09-Jan-2014  hannken branches: 1.30.2;
Operation sysvbfs_remove() destructs inodes attached to active vnodes.
Defer the destruction to sysvbfs_reclaim().

Disable test t_renamerace:sysvbfs_renamerace as it will exhaust the
inode table (sysvbfs has space for 8 inodes only).

Ok: Izumi Tsutsui <tsutsui@netbsd.org>
 1.29 10-Jul-2013  reinoud Update test cases for UDF now udf_rename() uses the genfs_rename framework
 1.28 08-Jul-2013  reinoud Cover the last failing UDF test cases with a reference to PR kern/47986, i.e.
all rename's fail until UDF switches over to the new rename framework solving
the locking mechanism.
 1.27 17-Mar-2013  jmmv Fix the t_renamerace:lfs_renamerace_dirs test on fast machines.

This test was failing on my machine when run natively but not causing any
problems when run within qemu, and the failure was "mkdir: No space left
on device".

My understanding of the issue is that this test overflowed the temporary
disk image due to its high rate of file churn and the lfs_cleanerd not
being able to keep up. Note that this test is capped by time, not number
of operations, so this is why the problem does not show up in a slow
emulated system.

To fix this, just bump the test file system image limit a little bit.
(I tried increasing the frequency at which lfs_cleanerd does its thing,
but it wasn't enough.)
 1.26 09-May-2012  riastradh branches: 1.26.2;
Adjust t_renamerace now that ext2fs and ffs have good rename.
 1.25 16-Feb-2012  perseant Pass t_renamerace and t_rmdirrace tests.

Adapt dholland@'s fix to ufs_rename to fix PR kern/43582. Address several
other MP locking issues discovered during the course of investigating the
same problem.

Removed extraneous vn_lock() calls on the Ifile, since the Ifile writes
are controlled by the segment lock.

Fix PR kern/45982 by deemphasizing the estimate of how much metadata
will fill the empty space on disk when the disk is nearly empty
(t_renamerace crates a lot of inode blocks on a tiny empty disk).
 1.24 08-Oct-2011  njoly branches: 1.24.2; 1.24.4;
Slightly adjust skipped messages, makes output more consistent.
 1.23 18-Jul-2011  dholland ffs and ffslog are no longer xfail.
 1.22 14-Mar-2011  pooka Apparently this way of triggering the msdosfs rename vnode leak
does not bite every time (most commonly observed on the amd64/qemu
runs), so add a race condition catcher.
 1.21 06-Mar-2011  pooka Add a race catcher for p2k_ffs renamerace -- it seems like the
problem doesn't trigger always especially in a qemu env (but triggers
100% of the time on my desktop).
 1.20 03-Mar-2011  pooka The re-enabled renamerace test also triggers the recent msdosfs
vnode leak. xfail this under the blanket of PR kern/44661.
 1.19 03-Mar-2011  pooka Apparently my last commit to msdosfs_vnops.c fixed the (harmless?)
buffer overrun in rename (>15 years old bug), so re-enable other
msdosfs rename tests too.
 1.18 11-Jan-2011  pooka branches: 1.18.2;
need unrace-catcher for ffslog
 1.17 07-Jan-2011  pooka xfail PR kern/44336
 1.16 07-Jan-2011  pooka ffs -o log dies in renamerace_dirs just like the rest.
 1.15 02-Jan-2011  pooka + rump_lwproc_newproc -> rump_lwproc_rfork()
+ add a tess for rump_lwproc_rfork()
 1.14 11-Nov-2010  pooka skip tests which use features which rumpfs does not support
(namely: vop_rename and a file system size limit)
 1.13 01-Nov-2010  pooka Create the process we use later in the test. Otherwise cwd doesn't
go right and the test fails because of attempting to create files
in the wrong directory.
 1.12 01-Sep-2010  pooka update to new rump lwp/proc interfaces
 1.11 26-Aug-2010  pooka chdir() once per process is enough, no need to do it for every
thread (and doing so would cause occasional failures when some
thread would cd out of the test mountpoint while another thread
was still running in there).
 1.10 26-Aug-2010  pooka Put the workaround for PR kern/43799 into the common nfs unmount routine.
 1.9 25-Aug-2010  pooka Start many more threads for the renamerace since it seems to catch
more errors.

Add a sleepkludge to deal with NFS's sillyrename brokenness.
 1.8 16-Jul-2010  pooka Some of the msdosfs tests are killed by SSP due to stack limit
being exceeded. I cannot figure out what is going on by code
reading, nor repeat this either on my desktop or in qemu, so skip
those tests for msdosfs until I can get to the bottom of it.
 1.7 16-Jul-2010  pooka skip directory test on sysvbfs
 1.6 16-Jul-2010  pooka Fix typo in comment. comment tested by wizd.
 1.5 16-Jul-2010  pooka Fill in PR kern/43626 now that it exists.
 1.4 16-Jul-2010  pooka Do the famous renamerace test using directories. Uh oh, bad idea.
PR coming soon.
 1.3 16-Jul-2010  pooka This test does not always fail for LFS, so apply same kludge as
elsewhere while waiting for atf to grow support for these cases.
 1.2 14-Jul-2010  pooka xfail test on lfs. It goes badaboom faster than you can find your
multipass. Borrow PR kern/43582 used earlier for rmdirrace, as it
looks pretty much like the same problem.
 1.1 14-Jul-2010  pooka Convert "The Original" rename race test from to vfs and retire the
ffs/tmpfs versions. The only difference is that the origamical
one mounted ffs with MNT_LOG (and therein actually lay the bug).
 1.18.2.1 05-Mar-2011  bouyer Sync with HEAD
 1.24.4.1 17-Mar-2012  bouyer Pull up following revision(s) (requested by perseant in ticket #116):
sys/ufs/lfs/lfs_alloc.c: revision 1.112
tests/fs/vfs/t_rmdirrace.c: revision 1.9
tests/fs/vfs/t_renamerace.c: revision 1.25
sys/ufs/lfs/lfs_vnops.c: revision 1.240
sys/ufs/lfs/lfs_segment.c: revision 1.224
sys/ufs/lfs/lfs_bio.c: revision 1.122
sys/ufs/lfs/lfs_vfsops.c: revision 1.294
sbin/newfs_lfs/make_lfs.c: revision 1.19
sys/ufs/lfs/lfs.h: revision 1.136
Pass t_renamerace and t_rmdirrace tests.
Adapt dholland@'s fix to ufs_rename to fix PR kern/43582. Address several
other MP locking issues discovered during the course of investigating the
same problem.
Removed extraneous vn_lock() calls on the Ifile, since the Ifile writes
are controlled by the segment lock.
Fix PR kern/45982 by deemphasizing the estimate of how much metadata
will fill the empty space on disk when the disk is nearly empty
(t_renamerace crates a lot of inode blocks on a tiny empty disk).
 1.24.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.24.2.2 23-May-2012  yamt sync with head.
 1.24.2.1 17-Apr-2012  yamt sync with head
 1.26.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.26.2.1 23-Jun-2013  tls resync from head
 1.30.2.1 10-Aug-2014  tls Rebase.
 1.33.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.34.14.2 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.34.14.1 10-Jun-2019  christos Sync with HEAD
 1.34.12.1 18-Jan-2019  pgoyette Synch with HEAD
 1.35.2.1 13-Sep-2020  martin Pull up following revision(s) (requested by riastradh in ticket #1083):

sys/miscfs/genfs/genfs_rename.c: revision 1.5
tests/fs/vfs/t_renamerace.c: revision 1.37
tests/fs/vfs/t_renamerace.c: revision 1.38

tests/fs/vfs/t_renamerace: Test a screw case hannken@ found.

genfs_rename: Fix deadlocks in cross-directory cyclic rename.

Reproducer:
A: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600);
rmdir("c/d/e"); rmdir("c/d"); }
B: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600);
rename("c", "c/d/e"); }
C: for (;;) { mkdir("c", 0600); mkdir("c/d", 0600); mkdir("c/d/e", 0600);
rename("c/d/e", "c"); }

Deadlock:
- A holds c and wants to lock d; and either
- B holds . and d and wants to lock c, or
- C holds . and d and wants to lock c.

The problem with these is that genfs_rename_enter_separate in B or C
tried lock order .->d->c->e (in A/B, fdvp->tdvp->fvp->tvp; in A/C,
tdvp->fdvp->tvp->fvp) which violates the ancestor->descendant order
.->c->d->e.

The resolution is to change B to do fdvp->fvp->tdvp->tvp and C to do
tdvp->tvp->fdvp->fvp. But there's an edge case: tvp and fvp might be
the same (hard links), and we can't detect that until after we've
looked them both up -- and in some file systems (I'm looking at you,
ufs), there is no mere lookup operation, only lookup-and-lock, so we
can't even hold the lock on one of tvp or fvp when we look up the
other one if there's a chance they might be the same.

Fortunately the cases
(a) tvp = fvp
(b) tvp or fvp is a directory
are mutually exclusive as long as directories cannot be hard-linked.

In case (a) we can just defer locking {tvp, fvp} until the end, because
it can't possibly have {fdvp or fvp, tdvp or tvp} as descendants. In
case (b) we can just lock them in the order fdvp->fvp->tdvp->tvp or
tdvp->tvp->fdvp->fvp if the first one of {fvp, tvp} is a directory,
because it can't possibly coincide with the second one of {fvp, tvp}.

With this change, we can now prove that the locking order is consistent
with the ancestor->descendant partial ordering. Where two nodes are
incommensurate under that partial ordering, they are only ever locked
by rename and there is only ever one rename at a time.

Proof:
- For same-directory renames, genfs_rename_enter_common locks the
directory first and then the children. The order
directory->child[i] is consistent with ancestor->descendant and
child[0]/child[1] are incommensurate.
- For cross-directory renames:
. While a rename is in progress and the fs-wide rename lock is held,
directories can be created or removed but not changed, so the
outcome of gro_genealogy -- which, given fdvp and tdvp, returns
the node N relating fdvp/N/.../tdvp or null if there is none --
can only transition from finding N to not finding N, if one of
the directories is removed while any of the vnodes are unlocked.
Merely creating directories cannot change the ancestry of tdvp,
and concurrent renames are not possible.
Thus, if a gro_genealogy determined the operation to have the
form fdvp/N/.../tdvp, then it might cease to have that form, but
only because tdvp was removed which will harmlessly cause the
rename to fail later on. Similarly, if gro_genealogy determined
the operation _not_ to have the form fdvp/N/.../tdvp then it
can't begin to have that form until after the rename has
completed.
The lock order is,
=> for fdvp/.../tdvp:
1. lock fdvp
2. lookup(/lock/unlock) fvp (consistent with fdvp->fvp)
3. lock fvp if a directory (consistent with fdvp->fvp)
4. lock tdvp (consistent with fdvp->tdvp and possibly fvp->tdvp)
5. lookup(/lock/unlock) tvp (consistent with tdvp->tvp)
6. lock fvp if a nondirectory (fvp->t* or fvp->fdvp is impossible)
7. lock tvp if not fvp (tvp->f* is impossible unless tvp=fvp)
=> for incommensurate fdvp & tdvp, or for tdvp/.../fdvp:
1. lock tdvp
2. lookup(/lock/unlock) tvp (consistent with tdvp->tvp)
3. lock tvp if a directory (consistent with tdvp->tvp)
4. lock fdvp (either incommensurate with tdvp and/or tvp, or
consistent with tdvp(->tvp)->fdvp)
5. lookup(/lock/unlock) fvp (consistent with fdvp->fvp)
6. lock tvp if a nondirectory (tvp->f* or tvp->tdvp is impossible)
7. lock fvp if not tvp (fvp->t* is impossible unless fvp=tvp)

Deadlocks found by hannken@; resolution worked out with dholland@.

XXX I think we could improve concurrency somewhat -- with a likely
big win for applications like tar and rsync that create many files
with temporary names and then rename them to the permanent one in the
same directory -- by making vfs_renamelock a reader/writer lock: any
number of same-directory renames, or exactly one cross-directory
rename, at any one time.
 1.9 16-Feb-2012  perseant Pass t_renamerace and t_rmdirrace tests.

Adapt dholland@'s fix to ufs_rename to fix PR kern/43582. Address several
other MP locking issues discovered during the course of investigating the
same problem.

Removed extraneous vn_lock() calls on the Ifile, since the Ifile writes
are controlled by the segment lock.

Fix PR kern/45982 by deemphasizing the estimate of how much metadata
will fill the empty space on disk when the disk is nearly empty
(t_renamerace crates a lot of inode blocks on a tiny empty disk).
 1.8 08-Oct-2011  njoly branches: 1.8.2; 1.8.4;
Slightly adjust skipped messages, makes output more consistent.
 1.7 19-Jul-2010  pooka add missing headers
 1.6 13-Jul-2010  pooka Make the FSTYPE macros take tc instead of derivative type "type".

ok njoly
 1.5 12-Jul-2010  njoly Pass down the test case data to the test function, to be able to use
meta-data informations such as srcdir. Requested by pooka.

While here remove fstype argument, and define it as a custom meta-data
(X-fs.type) instead.
 1.4 09-Jul-2010  njoly Get rid of home made filesystem type strings and use MOUNT_xxx ones
instead. While here provide some macros which do test for a specific
type.
 1.3 09-Jul-2010  njoly Pass down the filesystem type to the test funtion to allow fs-specific
callpoints.

Adjust t_rmdirrace by moving LFS test specific code from common/lfs.c,
and do skip sysvbfs which does not support rmdir(2).

from pooka.
 1.2 05-Jul-2010  njoly Fix copyright, noted by Jukka Ruohonen.
 1.1 05-Jul-2010  njoly Add test program that use sample code from kern/41937, and fs rump
helpers to check currently supported filesystems.

t_rmdirrace (1/1): 5 test cases
ext2fs_race: Passed.
ffs_race: Passed.
msdosfs_race: Passed.
sysvbfs_race: Passed.
tmpfs_race: Passed.
 1.8.4.1 17-Mar-2012  bouyer Pull up following revision(s) (requested by perseant in ticket #116):
sys/ufs/lfs/lfs_alloc.c: revision 1.112
tests/fs/vfs/t_rmdirrace.c: revision 1.9
tests/fs/vfs/t_renamerace.c: revision 1.25
sys/ufs/lfs/lfs_vnops.c: revision 1.240
sys/ufs/lfs/lfs_segment.c: revision 1.224
sys/ufs/lfs/lfs_bio.c: revision 1.122
sys/ufs/lfs/lfs_vfsops.c: revision 1.294
sbin/newfs_lfs/make_lfs.c: revision 1.19
sys/ufs/lfs/lfs.h: revision 1.136
Pass t_renamerace and t_rmdirrace tests.
Adapt dholland@'s fix to ufs_rename to fix PR kern/43582. Address several
other MP locking issues discovered during the course of investigating the
same problem.
Removed extraneous vn_lock() calls on the Ifile, since the Ifile writes
are controlled by the segment lock.
Fix PR kern/45982 by deemphasizing the estimate of how much metadata
will fill the empty space on disk when the disk is nearly empty
(t_renamerace crates a lot of inode blocks on a tiny empty disk).
 1.8.2.1 17-Apr-2012  yamt sync with head
 1.8 21-Sep-2019  kre branches: 1.8.10;

Initialise the sometvs array of struct timeval that is to be used to
validate that utimes() cannot update the times of a file on a read only
filesystem. The values are never actually used, but since
src/sys/kern/vfs_syscalls.c 1.535
they are validated for sanity, and the syscall returns EINVAL if the
values passed are invalid (tv_usec <0 or >= 1000000). If that happens
we don't get as far as the test which produces the EROFS that is expected
from this test (these tests - one for each filesystem type).

So, init the timeval structs (just to 0, the values will still not be
used) so that the EINVAL doesn't bite us before we're eaten by the EROFS
which is the way we're supposed to die.

If the syscall API args were labelled as "const" the compiler probably
would have caught the use of uninit'd vars and complained much sooner.
 1.7 16-Jul-2019  martin PR misc/54382: whenever open(2) is called with O_CREAT, make sure to
pass an open mode argument.
 1.6 13-Jan-2017  christos branches: 1.6.14;
Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.5 22-Feb-2011  yamt branches: 1.5.26;
add some tests
 1.4 31-Jan-2011  njoly Now that PR/44302 is fixed, fs/vfs/t_ro:sysvbfs_rmfile should not fail
anymore.
 1.3 07-Jan-2011  pooka branches: 1.3.2;
expect correct errno in nfsro case. from yamt
 1.2 31-Dec-2010  pooka fill in PR kern/44302
 1.1 31-Dec-2010  pooka Add some elementary tests for r/o file systems. More in 2011!
 1.3.2.2 05-Mar-2011  bouyer Sync with HEAD
 1.3.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.5.26.1 20-Mar-2017  pgoyette Sync with HEAD
 1.6.14.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.8.10.1 12-Aug-2024  perseant Add exFAT conditions to vfs tests
 1.2 14-May-2020  msaitoh Remove extra semicolon.
 1.1 27-Jan-2017  hannken branches: 1.1.2; 1.1.4;
Add test for read/write to readonly update mount.
 1.1.4.2 21-Apr-2017  bouyer Sync with HEAD
 1.1.4.1 27-Jan-2017  bouyer file t_rwtoro.c was added on branch bouyer-socketcan on 2017-04-21 16:54:10 +0000
 1.1.2.2 20-Mar-2017  pgoyette Sync with HEAD
 1.1.2.1 27-Jan-2017  pgoyette file t_rwtoro.c was added on branch pgoyette-localcount on 2017-03-20 06:57:57 +0000
 1.9 13-Jan-2017  christos Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.8 07-Aug-2011  hannken branches: 1.8.24;
Change union rmdir semantics to fail directory removal for
non-empty directories like all other file systems do.

Change test accordingly.
 1.7 05-Aug-2011  hannken When union_lookup() creates a shadow directory and nameiop is not LOOKUP
it has to restart the lookup to get the componentname right.

Fixes PR #44383 (an endless stream of whiteout and opaque dir problems ...)
 1.6 03-Aug-2011  hannken Make whiteouts work on journaling ffs file system by adding the missing
UFS_WAPBL_BEGIN() / UFS_WAPBL_END() around CREATE and DELETE ops.

Fixes PR #44377 (union whiteouts don't work on ffs -o log)
 1.5 13-Jan-2011  pooka xfail PR kern/44383: whiteouts are generally speaking kaput
 1.4 13-Jan-2011  pooka Add a test case for a r/o lower layer which attempts to create some
whiteouts and opaque dirs in the upper layer. The sad news is this
simple test fails across the board. It's pretty hard to figure
out how unionfs should work in $fs given that even the simplest
things don't work with ffs.
 1.3 12-Jan-2011  pooka xfail for PR kern/44377
 1.2 12-Jan-2011  pooka Instead of hardcoding fs list just try to mount union and skip all
file systems which return EOPNOTSUPP.
 1.1 12-Jan-2011  pooka Move basic unionfs test from fs/union to fs/vfs and make it test
all whiteout-supporting file systems with the file system in question
as the upper layer. Also, add an unlink to the test to see if
whiteouts are really working.

ffslog_basic is the test case for PR kern/44377
 1.8.24.1 20-Mar-2017  pgoyette Sync with HEAD
 1.16 28-Nov-2018  hannken branches: 1.16.12;
Redo the access check for setting va_flags in zfs_netbsd_setattr().

Use user flag UF_NODUMP instead of UF_IMMUTABLE for the test as it
is the only user flag supported by all tested file systems.

PR kern/47656 test zfs_flags.
 1.15 28-Nov-2018  hannken Add missing access check for REMOVE into zfs_netbsd_lookup().

PR kern/47656 test zfs_dirperms.
 1.14 28-Nov-2018  hannken Add missing access check for setting va_Xtime into zfs_netbsd_setattr().

PR kern/47656 test zfs_times.
 1.13 13-Jan-2017  christos branches: 1.13.12; 1.13.14;
Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.12 09-Apr-2015  riastradh branches: 1.12.2;
Apparently I fixed t_unpriv:zfs_owner and didn't notice.
 1.11 29-Aug-2014  gson Don't pass an uninitialized variable as the times[] argument of
rump_sys_utimes(). Instead, pass combinations of values representing
edge cases: the farthest possible past, the epoch, and the farthest
possible future. Now the excessive runtime reported in PR bin/49144
occurs reliably, on multiple architectures, and not only with udf, but
also with msdosfs.
 1.10 16-Mar-2013  jmmv Mark a bunch of routinely-broken ZFS tests as expected failures. Point
them at PR kern/47656.
 1.9 04-Apr-2012  njoly branches: 1.9.2;
New testcase that check file flags with unprivileged credentials.
 1.8 26-Mar-2012  njoly Now that permissions for msdos have been fixed, kill times() special
case which was wrong.
 1.7 23-Mar-2012  njoly Extend times testcase to check for non null time values too.
 1.6 15-Mar-2012  njoly Add another testcase that check setting file times with unprivileged
credentials.
 1.5 09-Feb-2012  njoly Add a testcase which checks that directory permissions are honored for
file creation/deletion with unprivileged credentials.

releng ok.
 1.4 31-Jan-2012  njoly owner testcase now succeed with rumpfs.
 1.3 27-Jan-2012  njoly unpriv owner test now pass for sysvbfs.
 1.2 08-Oct-2011  njoly branches: 1.2.2;
USE_OWNER -> USES_OWNER for consistency with other macros.
 1.1 06-Jan-2011  njoly Start unprivileged filesystem tests. For now, only chown/chmod owner
checks.
 1.2.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.2.1 17-Apr-2012  yamt sync with head
 1.9.2.1 23-Jun-2013  tls resync from head
 1.12.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.13.14.1 10-Jun-2019  christos Sync with HEAD
 1.13.12.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.16.12.2 02-Aug-2025  perseant Sync with HEAD
 1.16.12.1 12-Aug-2024  perseant Add exFAT conditions to vfs tests
 1.12 13-Jan-2017  christos Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.11 04-Apr-2011  hannken branches: 1.11.26;
Msdosfs on-disk meta data is not sufficient to create or validate file handles.

Maintain a tree of file handles, create nodes from msdosfs_vptofh() and keep
them until either the file gets unlinked or the file system gets unmounted.

Fixes the msdosfs part of PR #43745 (fhopen of an unlinked file causes problems
on multiple file systems)
 1.10 02-Apr-2011  hannken Fix file handle operations for tmpfs by removing a now bogus test and
fixing the return value of tmpfs_fhtovp() in the not-found case.

When vmlocking2 was merged to head (Jan 2008 !!) the inode numbering was
changed. Before inodes were numbered 2..tm_nodes_max-1 and after the
merge the numbers are derived from the nodes memory address.

Fixes PR #43605 (tmpfs file handles are broken)
 1.9 07-Jan-2011  pooka use X-fs.mntname for f_fstypename. ignore p2k_ffs there.
 1.8 19-Nov-2010  pooka Convert skipped tests into proper xfails (a lazy bum is me).

prompted by pgoyette
 1.7 16-Aug-2010  pooka Add a test case which tries to fhopen() a file handle filled with
random garbage.
 1.6 12-Aug-2010  pooka Fill in PR kern/43745 now that it exists.

lfs_tfhremove: Expected failure: fhopen() for removed file succeeds (PR kern/43745): t_vfsops.c:161: Expected true value in rump_sys_fhopen(fhp, fhsize, O_RDONLY) == -1
msdosfs_tfhremove: Expected failure: fhopen() for removed file succeeds (PR kern/43745): t_vfsops.c:161: Expected true value in rump_sys_fhopen(fhp, fhsize, O_RDONLY) == -1
 1.5 12-Aug-2010  pooka Add test case for fhopenining a removed file. This fails on msdosfs
and lfs and causes a kernel panic on nfs. I'll fix nfs soon and
file a PR for the other two.

Also panicked ffs a few hours ago, but was fixed by hannken.
Needless to say, this test was inspired by his fix.
 1.4 19-Jul-2010  pooka add missing headers
 1.3 16-Jul-2010  njoly Add some sanity checks for statvfs values.
 1.2 13-Jul-2010  pooka make compile on HEAD
 1.1 13-Jul-2010  pooka Add basic tests for vfsops.

tfilehandle is a test for PR kern/43605
 1.11.26.1 20-Mar-2017  pgoyette Sync with HEAD
 1.63 08-May-2023  andvar branches: 1.63.2;
fix the grammar in comments reported by Jim Spath in misc/57397.
 1.62 01-Feb-2022  martin Test mkdir(2) with one or more trailing slashes - this currently fails
for v7fs.
 1.61 16-Sep-2021  andvar fix typos in word "successfully", mainly s/succesfully/successfully/.
 1.60 19-Aug-2021  andvar s/memry/memory+s/softare/software/+s/grapics/graphics+s/ouput/output
 1.59 13-Jan-2017  christos Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.58 29-Aug-2016  kre PR kern/49033

POSIX allows for the atime (or technically, any of the times) to be
updated as a side effect of searching a directory (allows, not requires).
The NetBSD UDF implementation apparently works that way, treating a
directory search as a read of the directory, and hence updating the
access time. Compensate for that in the test (rather than just
expecting failure) by verifying that the atime after the directory
search is within a small margin of the atime before the search
(currently, "small" is 1 second). We could fetch the time before
the mkdir and both stat() calls, do all of that, fetch the time after,
subtract, and require the after stat() atime to be bounded by the atime
set by the original mkdir and returned in the first stat() and that time
+ the difference in elapsed time - that would be more accurate, but is
a lot more work for little real benefit.

Should anyone be interested in doing that extra work, remember to use
monotonic time (clock_gettime(CLOCK_MOMNOTONIC, ...)) not the time of day
clock for measuring the elapsed time.

Along with this, remove the "if (udf) failure expected" and the
if (udf && we haven't failed yet) fail("random failure failed to happen")
stuff... (the "random" would have been that sometimes the mkdir and
two lookups (stat() calls) would all occur within the same clock tick,
meaning that the atimes would all be the same. Other times the clock
would tick somewhere between the mkdir() and the 2nd stat().)
 1.57 21-Aug-2016  christos fix wrong variable.
 1.56 20-Aug-2016  christos - use snprintf
- print the argument that caused the error
 1.55 28-Jan-2016  martin branches: 1.55.2;
The test for PR 50608 works now, remove the expected failure.
 1.54 14-Jan-2016  gson Don't use a filename with an embedded newline in the create_many test
case. Instead, add a separate test case "create_nonalphanum" for
filenames containing non-alphanumeric characters. The bug of
PR kern/50608 now causes a failure in create_nonalphanum rather than
create_many.
 1.53 13-Jan-2016  pooka create_many: remove PR kern/50607 xfail

Seems to have been fixed by ext2fs_lookup.c 1.79
(thanks, riastradh)
 1.52 02-Jan-2016  pooka create_many:
* add xfails for ext2 and udf
* don't try to create a subdirectory for sysvbfs
 1.51 01-Jan-2016  pooka use a shorter filename template in previous (for v7fs)
 1.50 01-Jan-2016  pooka Add a test which creates many directory entries.
 1.49 09-Apr-2015  riastradh Advisory locking for zfs.
 1.48 09-Apr-2015  riastradh Fix vattr_init_mask: mode is mode_t, not u_short.

Fixes fs/vfs/t_vnops:zfs_attrs test.
 1.47 09-Apr-2015  riastradh Tests claim rename(..., "x/.") yields EISDIR, so do that. Fixes zfs.
 1.46 09-Apr-2015  riastradh Fix return code of rmdir(nonempty) in zfs: ENOTEMPTY, not EEXIST.
 1.45 24-Mar-2015  riastradh Make this run in NetBSD 6 by using st_mtimespec instead of st_mtim.

st_mtimespec is our traditional nonstandard name for what POSIX
called st_mtim in 2008, but these aren't going to run in non-NetBSD
anyway so using the nonstandard name shouldn't be an issue.
 1.44 29-Dec-2014  hannken Test v7fs_lstat_symlink is no longer expected to fail.
 1.43 09-Sep-2014  gson Mark v7fs_lstat_symlink as an expected failure, referencing PR kern/48864.
 1.42 07-Sep-2014  gson Add a test of symlinks with long targets.
 1.41 12-Aug-2014  gson Mark udf_lookup_complex as an expected failure, referencing PR kern/49033.
Since it does not fail reliably, force it to fail to avoid spurious failure
reports due to unexpected success.
 1.40 25-Jul-2014  martin branches: 1.40.2;
PR kern/49033: try to provide better diagnostics if the udf_lookup_complex
test randomly fails.
 1.39 03-Jun-2014  njoly Add testcase that check lstat(2) values for symbolic links (PR
kern/48864).
 1.38 19-Oct-2013  christos branches: 1.38.2;
fix unused variable warnings
 1.37 28-Jul-2013  njoly Check that rename(2) with NULL arguments fail with EFAULT.
 1.36 10-Jul-2013  reinoud Update test cases for UDF now udf_rename() uses the genfs_rename framework
 1.35 08-Jul-2013  reinoud Cover the last failing UDF test cases with a reference to PR kern/47986, i.e.
all rename's fail until UDF switches over to the new rename framework solving
the locking mechanism.
 1.34 16-Mar-2013  jmmv Mark a bunch of routinely-broken ZFS tests as expected failures. Point
them at PR kern/47656.
 1.33 20-Mar-2012  njoly branches: 1.33.2;
Remove unneeded atf_tc_expect_pass calls.
 1.32 19-Mar-2012  pgoyette Finish removing the block of commented-out code from rev 1.31

Hello, christos!
 1.31 18-Mar-2012  christos annotate fixed failures as comments.
 1.30 12-Dec-2011  njoly Start making fs read(2) fail with EISDIR if the implementation does
not allow read on directories (kernfs, rumpfs, ptyfs and sysvbfs).
Adjust man page accordingly, and add a small corresponding vfs
testcase.
 1.29 08-Oct-2011  njoly branches: 1.29.2;
Slightly adjust skipped messages, makes output more consistent.
 1.28 19-Aug-2011  riastradh Add test for `ln -s / foo && cd foo'.
 1.27 11-Aug-2011  uch add ATF tests for v7fs. patch by njoly@. thank you.
 1.26 23-Jul-2011  alnsn Don't assume that "first lock that blocks" is a lock with the lowest
start offset and change the test to work when F_GETLK returns any
lock that blocks.
 1.25 20-Jul-2011  hannken Even though msdosfs never truncates file names it advertises _PC_NO_TRUNC
as zero. Make it advertise one (no_trunc == true).

Names longer than NAME_MAX (255) will never pass namei() btw.

Fixes PR #43670 (msdosfs claims support for filenames longer than {NAME_MAX},
but fails)
 1.24 30-May-2011  martin Remove "expected failure" for tmpfs PRs that are now fixed.
 1.23 01-Apr-2011  hannken Make zero length symlinks work on tmpfs.

Fixes PR #43843 (tmpfs dies with kassert panic for 0 length symlink target)
 1.22 19-Mar-2011  hannken Remove a vnode reference leak from msdosfs_rename. Release tdvp if either
doscheckpath() or relookup() fails.

Adjust test fs/vfs/t_vnops.c and remove the link count test for msdos.

Fixes PR #44661
 1.21 03-Mar-2011  pooka Apparently my last commit to msdosfs_vnops.c fixed the (harmless?)
buffer overrun in rename (>15 years old bug), so re-enable other
msdosfs rename tests too.
 1.20 01-Mar-2011  pooka msdosfs xfail for PR kern/44661
 1.19 01-Mar-2011  pooka xfail dir_rmdirdotdot for tmpfs (PR kern/44657)
 1.18 01-Mar-2011  pooka Rmdir the dir you're in and its parent and try to cd ..
Fails on tmpfs (crash), puffs (cd .. succeeds) and rumpfs (cd .. succeeds).

another testcase derived from the bugfinding genious of Taylor R Campbell
 1.17 01-Mar-2011  pooka Comment out msdosfs skip -- i'm not sure if it will still fail with
the "stack size" problem, but at least it fails due to yet another
refcounting snafu in the msdosfs rename method.
 1.16 01-Mar-2011  pooka augment rename test case with the failure from PR kern/44288
 1.15 28-Feb-2011  pooka Add simple test case for access(2), including panicky scenario from
PR kern/44648.
 1.14 22-Feb-2011  yamt add some tests
 1.13 31-Jan-2011  pooka Add test case for F_GETLK pid-oddness from PR kern/44494.

I found the test case a little difficult to understand (because of
many indices), so I added a few more comments after I think I
figured out what was going on.
 1.12 11-Jan-2011  kefren branches: 1.12.2;
add test for kern/43321, blessed by pooka@
 1.11 04-Jan-2011  pooka Check that file attributes can be changed (where applicable).
 1.10 11-Nov-2010  pooka skip tests which use features which rumpfs does not support
(namely: vop_rename and a file system size limit)
 1.9 09-Sep-2010  njoly s/dirs/symlinks/ in USES_SYMLINKS message.
 1.8 06-Sep-2010  pooka fill in PR number: kern/43843
 1.7 06-Sep-2010  pooka symlink to a zero-len target (and watch tmpfs go kabloom)
 1.6 01-Aug-2010  mlelstv The erroneous error codes described in kern/43616 have been fixed.
 1.5 26-Jul-2010  njoly Add create and rename testcases to exercize filenames longer than
{NAME_MAX}.
 1.4 19-Jul-2010  pooka convert to newstyle automagic rump compat syscalls
 1.3 16-Jul-2010  pooka Some of the msdosfs tests are killed by SSP due to stack limit
being exceeded. I cannot figure out what is going on by code
reading, nor repeat this either on my desktop or in qemu, so skip
those tests for msdosfs until I can get to the bottom of it.
 1.2 14-Jul-2010  pooka Add an assortment of rename tests. Not complete, but at least tests
something.

This contains the tests for PR kern/43616 and PR kern/43617.
 1.1 13-Jul-2010  pooka Add a few simple basic-level tests for vnodeops. They don't cover
corner-cases, but make sure things at least superficially work
(which they always don't). More to come...
 1.12.2.2 05-Mar-2011  bouyer Sync with HEAD
 1.12.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.29.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.29.2.1 17-Apr-2012  yamt sync with head
 1.33.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.33.2.1 23-Jun-2013  tls resync from head
 1.38.2.1 10-Aug-2014  tls Rebase.
 1.40.2.1 17-Jan-2015  martin Pull up following revision(s) (requested by gson in ticket #424):
tests/fs/vfs/t_vnops.c: revision 1.41
Mark udf_lookup_complex as an expected failure, referencing PR kern/49033.
Since it does not fail reliably, force it to fail to avoid spurious failure
reports due to unexpected success.
 1.55.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.63.2.2 14-Aug-2024  perseant Note exFAT also does not permit hard links
 1.63.2.1 12-Aug-2024  perseant Add exFAT conditions to vfs tests

RSS XML Feed