Commit Graph

83 Commits

Author SHA1 Message Date
yamt f3f1661306 set READres EOF flag correctly. 2003-10-20 13:53:47 +00:00
hannken a3a898ff0f Add the gating of system calls that cause modifications to the underlying
file system.
The function vfs_write_suspend stops all new write operations to a file
system, allows any file system modifying system calls already in progress
to complete, then sync's the file system to disk and returns. The
function vfs_write_resume allows the suspended write operations to
complete.

From FreeBSD with slight modifications.

Approved by: Frank van der Linden <fvdl@netbsd.org>
2003-10-15 11:28:59 +00:00
agc aad01611e7 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
2003-08-07 16:26:28 +00:00
bouyer a678ebca13 nfsrv_commit(): return success and don't do anything for requests which starts
past the end of the file. This can happen when two clients are writting to
the same file.
Close PR 21696 by myself, discussed on tech-net in 2003/05 and 2003/06.
Issue raised by Chuck Silvers (commit and truncate ops needs to be serialised)
still unadressed.
2003-07-09 21:16:12 +00:00
fvdl d5aece61d6 Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
2003-06-29 22:28:00 +00:00
thorpej a06b275edc Undo part of the ktrace/lwp changes. In particular:
* Remove the "lwp *" argument that was added to vget().  Turns out
  that nothing actually used it!
* Remove the "lwp *" arguments that were added to VFS_ROOT(), VFS_VGET(),
  and VFS_FHTOVP(); all they did was pass it to vget() (which, as noted
  above, didn't use it).
* Remove all of the "lwp *" arguments to internal functions that were added
  just to appease the above.
2003-06-29 18:43:21 +00:00
darrenr 960df3c8d1 Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records.  The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
2003-06-28 14:20:43 +00:00
yamt 9c329a66d1 rework zero padding of rpc reply.
- for READ procedure, don't send back more bytes than requested.
- don't have doubtful assumptions on mbuf chain structure.
- rename a function (nfsm_adj -> nfs_zeropad) to avoid confusion as
  the semantics of the function was changed.
2003-06-09 13:10:31 +00:00
yamt 85d0052723 workaround for UBC limit.
while our nfsd announces MAXBSIZE as wtmax for tcp,
VOP_GETPAGES of filesystems that uses genfs_getpages can't
handle >= MAX_READ_AHEAD(16) pages at once.
therefore, depending on PAGE_SIZE of the machine and file offset of
a read request, we can't VOP_GETPAGES the range at once.
2003-05-29 15:18:14 +00:00
yamt c573c77372 - indent.
- fix a comment typo (mus -> must)
- remove an unneeded caddr_t cast.
2003-05-07 13:10:44 +00:00
yamt 777190167d fix handling of the case that readsize == 0. 2003-05-04 11:40:22 +00:00
yamt ca9e55bd66 use uvm page loanout mechanism for nfsd READ procedure processing.
reviewed by Frank van der Linden and Chuck Silvers.
tested by Wojciech Puchar.
2003-05-03 18:36:26 +00:00
yamt d16c4c058f return rtmax bytes if we get READ requests larger than rtmax. 2003-04-03 15:19:12 +00:00
yamt a14f444335 use queue manipulation macros. 2003-04-02 15:14:19 +00:00
yamt 9fe1125599 reply FSINFO rtmax and wtmax for DGRAM properly. 2003-03-28 15:24:58 +00:00
yamt 2d45e41adb reply ENAMETOOLONG properly instead of discarding request as BADRPC.
my own PR20791.
2003-03-28 13:05:47 +00:00
matt 65e5548a17 Add MBUFTRACE kernel option.
Do a little mbuf rework while here.  Change all uses of MGET*(*, M_WAIT, *)
to m_get*(M_WAIT, *).  These are not performance critical and making them
call m_get saves considerable space.  Add m_clget analogue of MCLGET and
make corresponding change for M_WAIT uses.
Modify netinet, gem, fxp, tulip, nfs to support MBUFTRACE.
Begin to change netstat to use sysctl.
2003-02-26 06:31:08 +00:00
matt 9bd0cc2bb9 Make sure these all agree on the same definitons of various variables. 2002-12-01 23:02:10 +00:00
bouyer c7b51b5566 In nfs_commit(), sanity-check what we get from network: if we try to fluch
past end of file, or if off + cnt overflows a quad_t, flush to end of file.
2002-09-27 19:30:46 +00:00
bouyer 992abe6e5b In nfsrv_create(), kill an extra PNBUF_PUT() in the NFSv2 mknod case. The
pnbuf has already been freed by VOP_MKNOD. This should have been removed in
rev 1.60.
Should fix PR 18013, OK'd by fvdl.
2002-09-26 20:41:25 +00:00
bouyer 7005ca7253 nfsrv_commit(): Properly handle the case cnt == 0, which means "flush to
end of file". Calling VOP_FSYNC with start == end triggers a DIAGNOSTIC
check. Noticed with NFSv3 Linux clients. OK'd by fvdl.
2002-09-26 20:38:04 +00:00
lukem 0ffad69384 add RCSIDs 2001-11-10 10:59:08 +00:00
chs 65752b4854 remove SAVESTART from the symlink, mknod and create operations.
it was unnecessary, and removing it also fixes a v_usecount leak
that was introduced in the previous revision.
2001-09-23 01:37:03 +00:00
assar bec71dc090 change vop_symlink and vop_mknod to return vpp (the created node)
refed, so that the caller can actually use it.  update callers and
file systems that implement these vnode operations
2001-07-24 15:39:30 +00:00
chs aeda8d3b77 Initial integration of the Unified Buffer Cache project. 2000-11-27 08:39:39 +00:00
fvdl 8fd422dede Adapt for VOP_FSYNC parameter change. 2000-09-19 22:05:29 +00:00
thorpej 7cc27a88c0 Convert namei pathname buffer allocation to use the pool allocator. 2000-08-03 20:41:05 +00:00
thorpej d07efbc8b8 MALLOC()/FREE() are not to be used for variable size allocations. 2000-08-03 06:15:02 +00:00
mrg 6eeafef261 remove include of <vm/vm.h> 2000-06-27 17:52:28 +00:00
augustss 8529438fe6 Remove register declarations. 2000-03-30 12:51:13 +00:00
simonb 13e9e9754e Delete redundant decl of nfs_pub - it's in <sys/mount.h>. 2000-03-30 02:42:17 +00:00
fvdl 44ab379124 The length check for readdirplus entries wasn't right, causing troubles
with 32k readdir sizes. From FreeBSD.
1999-12-05 01:43:06 +00:00
sommerfe 623d43160b Fix vnode lock leak in nfsrv_mknod() if to-be-created vnode already existed. 1999-05-04 16:01:37 +00:00
mycroft afa07de60d Fix two problems with NFSV3CREATE_GUARDED:
* We shouldn't truncate the file.
* We were leaving the vnode locked (unless the truncate happened to fail).
Solaris clients may cause this under some conditions.
Problem reported by chopps, analysis and fix by me.
1999-03-30 12:01:18 +00:00
mrg d2397ac5f7 completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
1999-03-24 05:50:49 +00:00
fair d143754986 Snatch a patch from OpenBSD to fix PRs 6529 and 7074.
Adjust fxdr_hyper() and txdr_hyper() macros.
1999-03-06 05:34:40 +00:00
mycroft 4de576b025 Clean up some sign extension bogosity in statfs, so negative numbers are
actually negative on a LP64 client.
1999-03-05 07:27:58 +00:00
mrg 1c93cc902d non-root users can mkfifo over NFS. 1999-01-31 09:24:10 +00:00
thorpej f19e987daa Add some braces to make egcs happy (ambiguous else warning). 1998-08-18 06:45:04 +00:00
perry 4522c799a1 bzero->memset, bcopy->memcpy, bcmp->memcmp 1998-08-09 20:51:08 +00:00
kleink 382743ada3 Convert fsync vnode operator implementations and usage from the old `waitfor'
argument and MNT_WAIT/MNT_NOWAIT to `flags' and FSYNC_WAIT.
1998-06-05 19:53:00 +00:00
fvdl e5bc90f40c Merge with Lite2 + local changes 1998-03-01 02:20:01 +00:00
mrg d90485202c - add defopt's for UVM, UVMHIST and PMAP_NEW.
- remove unnecessary UVMHIST_DECL's.
1998-02-10 14:08:44 +00:00
mrg 1a8c7604f4 initial import of the new virtual memory system, UVM, into -current.
UVM was written by chuck cranor <chuck@maria.wustl.edu>, with some
minor portions derived from the old Mach code.  i provided some help
getting swap and paging working, and other bug fixes/ideas.  chuck
silvers <chuq@chuq.com> also provided some other fixes.

this is the rest of the MI portion changes.

this will be KNF'd shortly.  :-)
1998-02-05 07:59:28 +00:00
fvdl 787c8aa329 Check vnode for VDIR type before doing anything with it in the
NFS readdir service.
1997-12-22 00:09:02 +00:00
fvdl 7f7d814e67 * New directory entry caching system. Provides full caching of any
directory cookie that may be thrown back at us from userspace, up
  to a size limit. Fixes double entry problem.
* Split flags for internal and external use in the NFS mount structure.
* Fix some buffer structure fields that weren're being used correctly.
* Fix missing directory cache inval call in nfs_open.
* Limit on NFS_DIRBLKSIZ no longer needed, bumped to the more reasonable
  value of 8k.
* Various other things that I forget, all related to the dir caching
  somehow, though.
1997-10-10 01:53:17 +00:00
fvdl 43e1b9384f * Deal with servers that don't give complete FSINFO (like NT)
From Olaf Seibert <rhialto@polder.ubc.kun.nl> (PR 3687)
* Make an attempt to check the maximum filesize before attempting
  a write to the server, as write RPCs will typically happen
  asynchronously, and the process will not see the error.
  Fixes problems with unexpectly truncated files at 4G
* Pass up errors in nfs_writerpc correctly
1997-07-17 23:54:27 +00:00
fvdl c437b55ca7 A filesystem may not support VFS_VGET (like msdosfs). If it doesn't,
the server code would always skip all dir entries for a readdirplus
operation. To avoid endlessly retrying clients, try VFS_VGET first,
and it it fails, return NFSERR_NOTSUPP so that client will fall
back to normal readdir operations.
1997-07-15 01:07:47 +00:00
fvdl 6611bf92a5 Provide the extra arg to nfsrv_fhtovp, signalling if we're dealing with
a request on the public filehandle. Extend the lookup operation to
support WebNFS, including index file support (URL style). Yucky, it's
optional in the spec, but Solaris 2.6 will support it, so..
1997-06-24 23:32:45 +00:00
fvdl 7b65591cb9 In nfsrvw_coalesce, make sure the coalesce list from the nfsd is moved
as well. This fixes client hangs. (from Naofumi Honda
<honda@Kururu.math.sci.hokudai.ac.jp> / NetBSD-pc98)
1997-05-12 23:37:12 +00:00