Age | Commit message (Collapse) | Author |
|
--
Sync timestamp changes for inodes of special files to disk as late
as possible (when the inode is reclaimed). Temporarily only do
this if option UFS_LAZYMOD configured and softupdates aren't enabled.
UFS_LAZYMOD is intentionally left out of /sys/conf/options.
This is mainly to avoid almost useless disk i/o on battery powered
machines. It's silly to write to disk (on the next sync or when the
inode becomes inactive) just because someone hit a key or something
wrote to the screen or /dev/null.
--
Made lazy syncing of timestamps for special files non-optional.
--
Also, include support in 'pstat -v' to display the IN_LAZYMOD flag.
ok tedu@ millert@
|
|
|
|
|
|
atime/mtime/ctime need to be updated weren't already set. When
they are, the code will end up treating the VNOVAL value from the
VFS layer as a time_t. Port the fix from FreeBSD: the critical bit
is to process the existing flag values before possibly setting them
again in ufs_setattr(). This diff pulls in a larger change from
FreeBSD to replace the macro ITIMES() with a function ufs_itimes()
and to remove the atime and mtime arguments from ffs_update(): only
ufs_setattr() used them so it makes more sense to just do the those
bits directly there.
tweaks and ok tedu@ matthew@
|
|
|
|
|
|
use TAILQ_*_SAFE more than might be needed.
Bulk ports build by sthen@ showed nobody sticking their fingers
so deep into the kernel.
Feedback and suggestions from millert@. ok jsing@
|
|
the read buffer before trying to process it, so that invalidated
or bogus offsets can't trigger access past the end of the read buffer.
Also, zero out the dirent buffer to avoid leaking stack garbage to userspace.
Problem pointed out by Pedro Martelletto (pedro (at) ambientworks.net)
ok deraadt@
|
|
(a.k.a. 512-bytes) as far as ffs is concerned.
|
|
for defines fragnum, fsbtodb, cgsblock, and cgdmin.
|
|
(u_int64_t) instead of (daddr_t) when casting a variable in an
expression passed to DL_SETDSIZE().
Change a variable counting open files from daddr_t to int64_t.
ok deraadt@ with the tweak to fix that pesky expression.
|
|
variables. Some random whitespace/knf repairs encountered on the way.
ok miod@ on inspection, feedback & more suggestions from millert@
|
|
ufs_readdir() to match
|
|
by using size_t/ssize_t instead of int/u_int to handle I/O lengths in
uiomove(), vn_fsizechk(), and ktrgenio(). Eliminate the always-zero
'error' argument to ktrgenio() at the same time.
|
|
members to 64bit types. Assign new syscall numbers for (almost
all) the syscalls that involve the affected types, including anything
with time_t, timeval, itimerval, timespec, rusage, dirent, stat,
or kevent arguments. Add a d_off member to struct dirent and replace
getdirentries() with getdents(), thus immensely simplifying and
accelerating telldir/seekdir. Build perl with -DBIG_TIME.
Bump the major on every single base library: the compat bits included
here are only good enough to make the transition; the T32 compat
option will be burned as soon as we've reached the new world are
are happy with the snapshots for all architectures.
DANGER: ABI incompatibility. Updating to this kernel requires extra
work or you won't be able to login: install a snapshot instead.
Much assistance in fixing userland issues from deraadt@ and tedu@
and build assistance from todd@ and otto@
|
|
ok miod@.
|
|
the layout calls for some conversion assistance and can be deferred until
the other big time_t issues are resolved
ok deraadt@
|
|
|
|
test period; i think 3 years ago the last bugs fell out.
ok otto beck others
|
|
|
|
|
|
only using ino_t in the VFS layer APIs: vget, readdir, getattr.
otto wrote the original diff for libsa to keep bootblock from overflowing
ok deraadt@ kettenis@
|
|
|
|
each cylinder group, which should speed up disk access a little and fsck
substantially. adapted from freebsd.
for more info: www.mckusick.com/publications/faster_fsck.pdf
ok deraadt
|
|
from freebsd. ok deraadt guenther otto
|
|
the special provided when the mount was requested. This may be the same as
the special that was actually used for the mount (e.g. in the case of a
device node) or it may be different (e.g. in the case of a DUID).
Whilst here, change f_ctime to a 64 bit type and remove the pointless
f_spare members.
Compatibility goo courtesy of guenther@
ok krw@ millert@
|
|
over the entire pagedep and inodedep hash tables due to an off-by-one
mistake in loops. Spotted by and diff from Pedro Martelletto. Sent
upstream to Kirk and also fixed in FreeBSD.
ok otto@ millert@
|
|
msdos, NFS, fifos and devices, plus support for querying it in
getconf(2) and the requisite pathconf(2) manpage blurb
ok tedu@
|
|
_PC_PRIO_IO, and _PC_SYNC_IO names in VOP_PATHCONF(), as they're
fs-independent for us. Since we don't support latter three on any
fs, we can also define the related _POSIX_{ASYNC,PRIO,SYNC}_IO
symbols in <unistd.h> (via sys/unistd.h) with value -1.
Also, zap pointless tty-only values from procfs(!).
ok beck@, deraadt@
|
|
in MI code; gcc 2.95 does not accept such annotation for function pointer
declarations, only function prototypes.
To be uncommented once gcc 2.95 bites the dust.
|
|
function pointer arguments which are {used as,} wrappers around the kernel
printf function.
No functional change.
|
|
the problem of the cleaner not being able to get softdep out of trouble
due to the removal of a reserve back in vienna. Been run by me for a long
time and beat up, along with a bunch of others. Hopefully this nasty piece
of workaround can stay out for good now.
ok guenther@
|
|
free and uses FIFO queueing (rather than the current LIFO queueing).
Tested by sthen@
ok beck@ krw@
|
|
behind.
ok jsing@
|
|
Softdep uses it's own "getdirtybuf" which has (always) potentially
slept - this wasn't noticable when buffers were static and never freed,
however now that the bufs it was trying to busy is might have been
written out and freed by someone else we can see use-after free if we
fast-recycle buffers. We fix this by either re-trying operations
or ensuring we don't use the buf pointer after waiting.
ok guenther@ (in coimbra)
|
|
ok guenther millert kettenis
|
|
|
|
- Avoid using copyinstr() without checking the return value.
- sys_mount() has already copied the path in, so pass this to the
filesystem mount code so that it does not have to copy it in again.
- Avoid copyinstr()/bzero() dance when we can simply bzero() and strlcpy().
ok krw@
|
|
less greedy pools are nicer pools.
|
|
rlimit, then a write that would take it over the limit should be
clamped, making it a partial write.
ok beck@
|
|
to diff against FreeBSD's.
From Brad; no object file change on amd64.
|
|
From FreeBSD via Brad; ok millert
|
|
when b_error has not already been set to something more informative,
e.g. EROFS.
DO check the result of ffs_sbupdate() and error out of a mount()
call when ffs_sbupdate() reports EROFS while attempting a rw mount.
Letting RW mounts proceed regardless of EROFS led to crashes and
usb problems for Oliver Seufer while using the RW/RO switches on
some usb devices. Fix developed using devices kindly supplied by
Oliver & Co.
ok miod@
|
|
of per-rthread. Handling of per-thread tick and runtime counters
inspired by how FreeBSD does it.
ok kettenis@
|
|
ok miod
|
|
ok deraadt@
|
|
softdeps almost totally unusable;
|
|
limit is reached.
Added twist, clamp the max_softdeps to 64 as it is still
possible to exhaust bufkva.
|
|
The basic analysys is correct, however, the problem in this case is that by forcing
softdept to synchornously flush everything across *all* softdep filesystems we cause a
huge performance problem when we take a 3 second pause and slam everything synchronously.
the right way to fix this is to fix the speedup_softdep code, not make the filesystem
go synchronous when we hit a limit - if we are doing that we may as well not run softdep
it will be faster.
ok deraadt@
|
|
|