partial-segment by partial-segment. Each checkpoint should pass fsck_lfs -n
without errors; the results of fsck_lfs -p on non-checkpoints should also
pass fsck_lfs -n without errors.
currently implemented tests:
- check agreement of sleep time with real time (from system)
to be within 30ms
- check for EINTR return code on processing SIGALRM signals
- check for valid residual time if available from the interface
Tested interfaces:
- nanotime(2)
- select(2)
- poll(2)
- sleep(3)
While touching all vptofh/fhtovp functions, get rid of VFS_MAXFIDSIZ,
version the getfh(2) syscall and explicitly pass the size available in
the filehandle from userland.
Discussed on tech-kern, with lots of help from yamt (thanks!).
particular, the caller can now choose whether to wait for the condition
to be met, and if the caller of LFCNWRAPSTOP dies or otherwise closes
the descriptor, the filesystem is started again. Updated the ckckp
regression test to use the new semantics.
dump_lfs(8) now uses the fcntls to implement LFS-style snapshotting through
the -X flag, addressing PR#33457 albeit not using fss(4). Fixed a couple
other problems with dump_lfs that manifested themselves during testing.
Move the stop for LFCNWRAPSTOP to the point at which writing at segment 0
is really about to commence, since this is what the test expects (and
incidentally what a snapshotting utility wants as well).
More correctly reconstruct the on-disk state at every checkpoint, rather
than relying on the entire state at the point of wrapping to be accurate
(that is only true the first time we wrap). Add a "make abort" target to
make rerunning the test more convenient when it has failed and we're done
analyzing the failure.
where segment 0 is being considered for writing. This allows for automated
checkpoint vailidity scanning, and could be used (in conjunction with the
existing LFCNREWIND) for e.g. snapshot dumps as well.
Include a regression test that does such scanning.
When writing the Ifile, loop through the dirty block list three times to
make sure that the checkpoint is always consistent (the first and second
times the Ifile blocks can cross a segment boundary; not so the third time
unless the segments are very small). Discovered by using the aforementioned
regression test.
in a 64-bit signed integer (thus ensuring that mount_tmpfs handles these
correctly).
Also check that the previous (big) value fails.
This makes this test behave correctly on all platforms (not only 64-bit
ones) after the fix commited to mount_tmpfs.
Those should abort the bpf program.
The test currently fails (out of bound reads silently return zeros), but
succeeds if lo0 is replaced by an Ethernet interface and 127.0.0.1 by an
address reachable through it.
A fix is being worked on.
Approved by martin.
tmpfs' "API" and was already rotting.
Instead, merge all the relevant comments into the code. This includes
acknowledgements to Google's Summer of Code 2005 program (they were in the
AUTHORS section of tmpfs(9) before), so all the files need to be changed
to include this sentence alongside the title. (Note that this was not a
requirement of the program.)
was developed as part of Google's Summer of Code 2005 program. This
change adds the kernel code, the mount_tmpfs utility, a regression test
suite and does all other related changes to integrate these.
The file-system is still *experimental*. Therefore, it is disabled by
default in all kernels. However, as typically done, a commented-out
entry is added in them to ease its setup.
Note that I haven't commited the required mountd(8) changes to be able
to export tmpfs file-systems because NFS support is still very unstable
and because, before enabling it, I'd like to do some other changes.
OK'ed by my project mentor, William Studenmund (wrstuden@).
* Extend the lfs library from fsck_lfs(8) so that it can be used with a
not-yet-existent LFS. Make newfs_lfs(8) use this library, so it can
create LFSs whose Ifile is larger than one segment.
* Make newfs_lfs(8) use strsuftoi64() for its arguments, a la newfs(8).
* Make fsck_lfs(8) respect the "file system is clean" flag.
* Don't let fsck_lfs(8) think it has dirty blocks when invoked with the
-n flag.
the stack is non-executable if not explicitely enabled.
The latter one is not enabled in the Makefile yet because it cannot
succeed on platforms where the non-exec stack is not implemented.
Both checks rely on the fact that gcc puts trampoline onto the stack
for nested functions. On platforms where no such trampolines are used,
no meaningful results can be expected.
While not perfect, this is much easier than hand-coding trampolines for
each CPU type.
what makes up a good filesystem; and that (2) the kernel and fsck_lfs
also agree. This test, like the 9994 test and like the FFS endianness
test, is not included in the main "make regress".
- list NOxxx and LDSTATIC= assignments before everything else
(especially <bsd.own.mk>)
- ensure <bsd.own.mk> is included before NETBSDSRCDIR is used
- add missing RCSids
IWAMOTO Toshihiro's test program submitted with PR #9994, modified to
perform the same operations on a control file, presumably held in a
known-working filesystem. Test and control files are compared with "diff"
after the run (assuming that the kernel does not panic, which is really
the main point of the test).
Not included in the parent Makefile's list, as it requires the existence of
an LFS of some size.