| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
| |
"good work" deraadt@, ok visa@
|
| |
|
|
|
|
|
|
|
| |
have any direct symbols used. Tested for indirect use by compiling
amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
|
|
|
|
|
|
| |
- rename uiomove() to uiomovei() and update all its users.
- introduce uiomove(), which is similar to uiomovei() but with a size_t.
- rewrite uiomovei() as an uiomove() wrapper.
ok kettenis@
|
| |
|
| |
|
|
|
|
|
| |
don't need to be married.
ok guenther miod beck jsing kettenis
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
test period; i think 3 years ago the last bugs fell out.
ok otto beck others
|
|
|
|
|
|
|
| |
rlimit, then a write that would take it over the limit should be
clamped, making it a partial write.
ok beck@
|
|
|
|
|
|
|
| |
Bogus chunks pointed out by matthew@ and miod@. No cookies for
marco@ and jasper@.
ok deraadt@ miod@ matthew@ jasper@ macro@
|
|
|
|
|
|
|
| |
the nfs_bufq is full - instead tsleep waiting for one of our nfsiod's
to free up space for us in the queue so we can enqueue on the end.
ok blambert@, tedu@, oga@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
switch(type) {
case VREG:
/*something */
break;
case VLNK:
/* something */
break;
default:
panic("wtf?");
}
do_something_that_doesn't_change_type();
switch(type) {
case VREG:
/* nowt */
break;
case VLNK:
n = 0;
break;
default:
panic("wtf?");
}
be a bit less silly and replace the second switch with:
if (type == VLNK)
n = 0;
ok beck@, blambert@
|
|
|
|
|
|
|
|
|
| |
deciding to do nothing, printing about it and continuing along our merry
way without even erroring the sodding buffer, just panic. by this point
we are liked very fucked up anyway.
found in either edmonton or stockholm then forgotten. ok beck@,
blambert@
|
|
|
|
|
|
| |
no binary change apart from nfsm_reqhead() which is clearly correct.
ok thib@
|
|
|
|
|
|
| |
problem noticed by deraadt@
ok beck@
|
|
|
|
|
| |
Tiny spacing nit.
Fix a typo, pointed out by miod@.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and worked members. nad_worked becomes NFSAIOD_WAKEUP, which is set after if
an aiod was removed from the idle list and woken up by nfs_asyncio().
don't rely on tsleep wchans being unique, that is keep going back to sleep if
woken up unless the NFSAIOD_WAKEUP flag is set.
fix a divide by zero crash if nfs.vfs.iothreads is set to 0, as that can happen
when we recalculate the maximum buf's to queue up for each aiod.
in nfs_asyncio() set the nad_mnt to NULL before returning the aiod back to the
idle list in the case where we have already queued up to many bufs, otherwise
we trip an assertion.
minimize the time we are holding the nfs_aiodl_mtx to only when we are inserting
or removing from the lists, with the exception of nfs_set_naiod() as it would
make the loops more complicated and its uncommon in any case.
tested by myself and deraadt@
"fine with me" deraadt@
|
|
|
|
|
|
| |
before inserting it back into the list.
crashes debugged with help from deraadt@ who also tested this fix.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
each mount, and when work is "found", peg an aiod to that mount todo the
I/O. Make nfs_asyncio() a bit smarter when deciding when to do asyncio
and when to force it sync, this is done by keeping the aiod's one two lists,
an "idle" and an "all" list, so asyncio is only done when there are aiods
hanging around todo it for us or are already pegged to the mount.
Idea liked by at least beck@ (and I think art@).
Extensive testing done by myself and jasper and a few others on various
arch's.
Ideas/Code from Net/Free.
OK blambert@.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Even if we know that someone safely holds B_BUSY and will not modify
the buf (as was the case in here), we still need to be sure that
the B_BUSY will not be released while we fiddle with the buf.
In this case, it was not safe, since copyout can sleep and whoever was
writing out the buf could finish the write and release the buf which
could then get recycled or unmapped while we slept. Always acquire
B_BUSY ourselves, even when it might give a minor performance penalty.
thib@ ok
|
|
|
|
| |
ok blambert@
|
|
|
|
| |
OK blambert@
|
|
|
|
| |
ok thib@
|
|
|
|
|
|
|
|
|
|
|
|
| |
increment the num{read,write} and pending{read,write} statistics in that
case, since biodone won't change them on completion.
On another note, I'm not sure that we use physical buffers for swapping
over nfs anymore, so this chunk may be superfluous.
beck@ came up with the same diff "So anyway rather than me commiting it
from my copy, I'm giving you the OK and the commit. since it officially
makes you a buffer cache and NFS hacker };-)"
|
|
|
|
|
|
|
|
| |
mtime, gives us better granularity, helps with cache consistency.
Idea lifted from NetBSD.
OK blambert@
|
|
|
|
|
|
|
| |
cache instead of setting n_attrstamp to 0 directly.
Lift the macro name from NetBSD.
prompted by and OK blambert@
|
|
|
|
|
|
|
|
|
|
| |
checks if the mount is actually interrutable, and if not sets it 0.
remove this argument from nfs_vinvalbuf and just do the checking inside
the function.
o give nfs_vinvalbuf() a makeover so it looks nice. (spacing, casts, &c);
o Actually pass PCATCH too tsleep() if the mount it interrutable.
ok art@, blambert@
|
|
|
|
|
|
|
| |
nfs_iodwant array became unused. Garbage collect and free up
a few bytes.
ok thib@
|
|
|
|
| |
ok thib@
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
them going negative - this consists of identifying a number of cases of
IO not going through the buffer cache and marking those buffers with
B_RAW - as well as fixing nfs_bio to show pending writes and reads through
the buffer cache via NFS
still has a problem with mishandling the counters I believe in the
async/sync fallback case where counters stay positive which will be
addressed seperately.
ok tedu@ deraadt@
|
|
|
|
|
|
|
|
|
|
|
|
| |
the accidental situation that used to happen when it leaked buffers and allowed
the syncer to do it, however this puts a limit on how much of the buffer cache
it is allowed to consume to a sensible amount - improves nfs write performance
since we don't have to do tons of them synch now.
Modifies the existing code to use wakeup_one instead of cruft, and now
all nfsiod's tsleep the same way.
ok thib@ art@
|
|
|
|
|
|
| |
you need to upgrade nfsstat and the relevant header files
ok beck@
|
|
|
|
|
|
|
|
|
|
| |
return (EIO);
return (EIO);
is kinda silly. Don't.
Prettify a bit in the process.
'makes perfect sense' blambert@, ok thib@
|
|
|
|
|
|
|
| |
the buf due too all of the nfs iod's being busy; this downgrades
the write to a sync one and allows to handle this.
ok art@, beck@
|
|
|
|
|
|
|
|
|
| |
Also, it is historical practice to #include <sys/queue.h>
when using queue.h macros.
ok thib@ krw@
special thanks to krw@ for reminders vice violence
|
|
|
|
|
| |
"ap = v" comments in under 8 seconds, so it must be ok. and it compiles
too.
|
|
|
|
|
|
|
| |
Basically the usage of daddr_t was to math out arguments to
nfs_getcacheblk, wich calls getblk();
ok deraadt@
|
|
|
|
|
|
|
|
|
|
| |
should never be referenced outside the context of the process to which
this stack belongs unless we do the PHOLD/PRELE dance. Loads of code
doesn't follow the rules here. Instead of trying to track down all
offenders and fix this hairy situation, it makes much more sense
to not swap kernel stacks.
From art@, tested by many some time ago.
|
|
|
|
|
|
|
| |
nfs_subs.c so it gets pulled in for NFSSERVER only
kernels.
ok deraadt@,krw@
|
| |
|
|
|
|
| |
when earlier merges were done. Fixes PR 4250. ok millert@ deraadt@
|
|
|
|
|
|
|
|
| |
these into larger ranges wherever possible.
this should speed up NFS writes quite a bit.
ok art@ millert@ pedro@ tedu@
|
|
|
|
| |
ok art@ pedro@, "get it in" deraadt@
|
|
|
|
| |
rescinded 22 July 1999. Proofed by myself and Theo.
|
| |
|
|
|
|
|
|
| |
by biodone assume splbio (probably just on other filesystems) and some
callbacks from b_iodone assume it too. It's just much safer.
costa@ ok.
|
| |
|