Commit Graph

374 Commits

Author SHA1 Message Date
matt bd055c0318 Adapt to new sosend/soreceive and upcall (now down in sowakeup) 1998-04-25 17:41:01 +00:00
drochner bb2aeabe8a -catch zero and broadcast IP addresses sent by a DHCP server
-warn about them (and other invalid replies)
-print address of BOOTP/DHCP server for better problem tracking
-KNF
1998-04-24 18:38:30 +00:00
mrg 02c05e3fd8 add forward decl for union nethostaddr. 1998-03-29 05:13:00 +00:00
fvdl 092f0654fe Re-instate call to "safe" disconnect function that got lost during the
Lite2 merge.
1998-03-24 13:49:21 +00:00
thorpej 40b5fe66e7 Historical practice assumes that NFS root mounts are initially read/write. 1998-03-03 19:07:20 +00:00
fvdl 05acb550be Only free cookies on error when they were actually allocated by the readdir vop. 1998-03-03 13:38:32 +00:00
fvdl 4f0f4cecdb Don't try to apply the cookie endian heuristic on a mounted file (e.g.
a swapfile). From Matthias Drochner.
1998-03-03 13:32:28 +00:00
fvdl 9329c1df98 Fix cookie handling I messed up totally when doing the Lite2 thing.
(Hello McFly? Anybody home?)
1998-03-03 00:17:04 +00:00
veego 190f3ca410 Add two includes for the 'struct nfs_args' so it compiles again. 1998-03-01 17:37:32 +00:00
ross 331fee623e Sweep up some miscellaneous leftover lite2 integration shrapnel. 1998-03-01 07:15:39 +00:00
fvdl e5bc90f40c Merge with Lite2 + local changes 1998-03-01 02:20:01 +00:00
cgd 4ae42be026 be a bit more clear about what protocols will be tried in the
BOOTP/DHCP case.
1998-02-28 01:45:01 +00:00
thorpej 2146a2ed29 Include the NFS option header. 1998-02-19 00:54:13 +00:00
thorpej b5bf2ed6d0 Place a pointer to an array of our vnodeopv_desc *'s in our vfsops
structure, for use by vfs_attach().
1998-02-18 07:05:47 +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
chs f64abc7b4c add flags arg to hashinit(), to pass to malloc(). 1998-02-07 02:44:44 +00:00
mikel a5ffacd6cf ELAST incremented, update nfsrv_v2errmap[] initialization 1998-02-06 08:22:54 +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 0c8ab9044c Only take the receive lock before disconnecting when doing it from
nfs_decode_args. Otherwise we might just end up locking against ourselves.

XXX workaround, will do ok for now. Proper fix forthcoming.
1998-01-30 22:44:13 +00:00
fvdl dba168ad94 Refuse to create entries in the dir cache for offset 0. This is a special
case anyway, and amd(8) erroneously returns some entries with cookie 0.
Fixes PR 4844
1998-01-22 00:53:59 +00:00
scottr ecc55fb707 Consolidate NFS_BOOT_* options into opt_nfs_boot.h 1998-01-12 21:27:09 +00:00
scottr afc2a8933a Make NFS_BOOT_DHCP work as expected. 1998-01-11 05:55:40 +00:00
drochner b5bcdb1107 Conditionalize call to RARP, check interface type.
(This file can now be included even if no ARP capable interfaces are
defined.)
1998-01-09 15:16:55 +00:00
drochner 2179b6488a Use interface type to select "hardware type" in bootp header. 1998-01-09 15:13:44 +00:00
drochner 9e7604474f Use new options "NFS_BOOT_BOOTP" and "NFS_BOOT_BOOTPARAM" for parts
conditional on a particular configuration method.
The global flags "nfs_boot_rfc951" and "nfs_boot_bootparam" control
independantly if the functions are actually called. (Previous meaning
of "nfs_boot_rfc951" was "either-or".)
1998-01-09 15:10:37 +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
gwr 21ce121705 Temporarily disable the bootparam "gateway" support. 1997-12-12 21:09:49 +00:00
gwr 0aa79a60f4 Change the format of the bootparam "gateway" parameter string to
gateway=server:255.255.255.0 because that is the perferred format,
and the sys/libsa code already knows how to parse that format.
(Copied ip_convert here from the libsa code.)
1997-12-10 20:22:37 +00:00
fvdl 26a975b107 Move the EOF check after getting a block out of the if() that determines
whether we get it off the wire. An nfsiod might have been busy with
it, and finished while we were waiting for it in nfs_getcacheblk, so
we need to check for EOF again no matter what.
1997-11-23 13:52:24 +00:00
fvdl e46f160a4a Make sure the receive lock is taken when disconnecting a socket. Also
change a check for a 'connected' socket to use the socket rather than
the mount flags.

From Matthias Drochner.
1997-11-16 23:23:20 +00:00
fvdl aac8e91164 Oops. Fix goof in previous change. 1997-10-23 14:12:14 +00:00
fvdl 6b89492d21 Just return immediately in nfs_bioread if we got an empty buffer because
of EOF on a directory.
1997-10-22 01:45:16 +00:00
thorpej 98bb00f98f Fix alignment problems. From Frank van der Linden <fvdl@NetBSD.ORG>. 1997-10-20 22:08:44 +00:00
fvdl 6cdaaab885 Only do readaheads when reading sequential blocks; check v_lastr to
achieve this. Improves performance for demand paging. From Chris Demetriou.
1997-10-19 20:27:32 +00:00
fvdl 1cf3a3db94 * Implement optional 32 <-> 64 bit directory cookie translation. This uses
the directory cache as translation table. See nfs_subs.c for comments.
  Makes the code a bit more complex to look at than I would have liked,
  but doesn't affect the speed of the default behavior.
* Optimize caching behavior a bit when buffers are invalidated.
* Save some RPCs in readdir operations by not bothering if there is
  a small amount left to do to fill the buffer. It'll be done in the
  next RPC with a larger chunk anyway. Wastes a bit of buffer space
  but is faster.
* Make n_vattr an allocated vattr struct. This avoids nfsnode bloat,
  and is friendlier to the malloc routines.
1997-10-19 01:46:15 +00:00
fvdl 6caf9310c8 NFS_SMALLFH should be a multiple of 4; since the nfsnode struct may grow
one more member, just make it the minimum (32) now.
1997-10-17 08:10:21 +00:00
christos d4d4c2efbc nfstov_mode converts 32 bits now.
change NFS_SMALLFH from 44 to 38 to accommodate the mode_t and nlink_t changes.
1997-10-17 00:02:16 +00:00
christos 8b88b63c52 u_short -> mode_t 1997-10-17 00:00:41 +00:00
christos 280d4b5839 Fix the location of the NFS_SMALLFH 1997-10-16 23:59:34 +00:00
fvdl 8cc94a2371 Get rid of some MARKCACHED calls I thought better of. Make sure d_reclen
is aligned for off_t access, or things will break on the Alpha.
1997-10-13 08:35:53 +00:00
fvdl c3ce5f02ea Do negative lookup caching. Use a timestamp of the oldest negative cache
entry, so it can be checked against directory modification time for
validity.
1997-10-12 23:13:35 +00:00
fvdl 01e7c03e2e Move cookie heuristic function inside ifdef NFS, to make a kernel with server
code but without client code link again. From Erik Bertelsen, PR 4259
1997-10-11 02:09:48 +00:00
fvdl 8aa50b9159 Fix unitialized var warning (did not appear on i386, but did on sparc). 1997-10-10 13:21:51 +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
drochner 9a7e1c1d7e Make this file deserve its name: add DHCP support, conditionalized
with NFS_BOOT_DHCP.
Don't increment xid between retries anymore, it is not required and
it increases the response time in case of a slow server.
Use common code with bootparam boot.
1997-09-30 20:51:03 +00:00
drochner 34f6ce854a Use functions (shared with DHCP boot) in nfs_boot.c. 1997-09-30 20:46:17 +00:00
drochner 7de7853c54 Factor out some functions used by bootparam and DHCP boot. 1997-09-30 20:44:31 +00:00
thorpej 6b2d5c18a7 Correct a comment regarding the sense of the nfs_boot_rfc951 global. 1997-09-13 06:16:04 +00:00
gwr 5367793904 Move the call to nfs_boot_getfh() from nfs_vfsops.c to nfs_boot.c
(just for better isolation - it can now be static)
1997-09-09 21:39:17 +00:00
gwr d0a27c5bdd Circumvent the lack of a reliable gateway/netmask value in the
Sun RPC bootparam/whoami return by requesting a "pseudo file"
named "gateway" and using its contents as the gateway:netmask
Example /etc/bootparams line: client gateway=router:0xfffffff0
1997-09-09 21:36:35 +00:00
gwr 258bcc09af Change test from NETHER to NARP (revarpwhoami is in if_arp.c) 1997-09-02 21:33:17 +00:00
gwr 2f81e6c9c1 Supporting changes for the new BOOTP support in nfs_mountroot. 1997-08-29 16:12:49 +00:00
gwr 79c1e7ca6b Add support for nfs_mountroot using BOOTP based on the contributions
of Tor Egge (closes PR kern/2351).
1997-08-29 16:10:31 +00:00
gwr 78e695f5b3 Support for RARP,RPC/bootparam moved from nfs_boot.c to here. 1997-08-29 16:07:46 +00:00
gwr e25a1c17c1 The nfs_boot_xxx functions are declared in nfsdiskless.h
so remove the duplicate declarations here.
1997-08-29 16:06:41 +00:00
drochner 40db8a98f5 1. Allow to set a netmask (option NFS_BOOT_NETMASK) for the booting
interface. Without this, NFS_BOOT_NETMASK could be useless in
   subnetting envirinment.
2. Comment out unneeded NFS swap related stuff.
   Closes PR kern/3918.
1997-08-14 15:50:05 +00:00
christos 7af5edbdc3 Fix reversed test for version 3 that broke nfs version 2 mounts. 1997-07-18 17:31:46 +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 2c5bca83ed Don't assume that pointers into mbuf data remain valid across nfsm_dissect.
In readdirplus, don't keep such pointers but store the file attributes
in a variable instead until they are needed. Change nfsm_loadattr*
a bit so it can accept a direct pointer to an nfs_fattr structure.
1997-07-14 20:46:20 +00:00
fvdl acdbbd5215 Do locking around nfsnode hashing (perhaps even right this time!) 1997-07-07 23:34:55 +00:00
fvdl d9e3ab6bcb Revert until I have time to fix it today (lock applied wrongly). 1997-07-07 11:50:49 +00:00
fvdl 1680996881 Put lock around nfs node hashing to avoid race conditions, as MALLOC
or getnewvnode may block.
1997-07-06 12:42:06 +00:00
drochner 8c0a9bab00 Don't cast 64bit (off_t) file sizes to vm_offset_t (32bit on many
architectures), truncate them intelligently instead.
The truncation is done centralized in vnode_pager.c.
This prevents from wrap-over effects when parts of large (>2^32 byte) files
are mmapped.
Don't allow to mmap above the numerical range of vm_offset_t.
This is considered a temporary solution until the vm system handles the
object sizes/offsets more cleanly.
1997-07-04 20:22:09 +00:00
fvdl 1dfdc8999d Immediately return EPERM for a VOP_REMOVE on a directory. 1997-06-30 20:23:56 +00:00
fvdl 55cde5331c Let nfsm_srvmtofh deal with the public filehandle, convert to all zeroes
for both v2 and v3 internally.
1997-06-24 23:40:43 +00:00
fvdl e21d2702b0 Add prototype for nfs_ispublicfh, change the ones for nfs_namei and
nfsrv_fhtovp.
1997-06-24 23:39:34 +00:00
fvdl 246567553a Invalidate nfs_pub info when reinitting the NFS server. 1997-06-24 23:38:10 +00:00
fvdl 28e824c9b7 Extend lookup handling for WebNFS. This means that nfs_namei deals
with full pathname lookups if a public filehandle is used, and that
it translates the '%' escapes (URL-style) in the same case. Also,
make nfsrv_fhtovp convert the public filehandle to the vp of the
publicly exported filesystem, as stored in the nfs_pub structure.
1997-06-24 23:36:02 +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 66081af1c0 Provide extra arg to nfsrv_fhtovp (just FALSE in this case), it was
extended for WebNFS support.
1997-06-24 23:30:04 +00:00
fvdl 3416a7ca6d Add a few defines for WebNFS support. 1997-06-24 23:28:15 +00:00
mrg 295af85e9e remove swap configuration. 1997-06-12 17:12:17 +00:00
gwr 01adc15274 Minor reorganization of nfs_mountroot code to simplify BOOTP support.
The RPC/bootparamd calls to get the root and swap paths are now done
in nfs_boot_init() instead of nfs_boot_getfh(), so the latter now just
does the RPC/mountd call.  Also changed some panics into error returns.
1997-05-27 23:37:39 +00:00
gwr 248eff8eee Temporary work-around for PR kern/3579 (from Jonathan Stone). 1997-05-22 18:20:06 +00:00
fvdl f9d1ae2243 clear B_AGE for non-flush writes, buffers seem to be reused
too quickly, disturbing NFS performance (XXXX needs further analysis
and a _real_ fix)
1997-05-12 23:42:11 +00:00
fvdl fe28924160 * If nfs_reconnect fails, be sure to release the sndlock, otherwise no
other requests will get through and the mount point will be effectively dead.
  This could happen for mounts using TCP and -i and/or -s.
* Reserve enough space for UDP sockets. Fixes PR 3008, from Naofumi Honda.
1997-05-12 23:40:22 +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
fvdl ae69375a24 Store RPC procnum consistently as an u_int32_t. This is as it should be,
and avoid possible server crashes due to bogus comparisons. Partly
from BSDI.
1997-05-12 23:36:04 +00:00
mycroft 76ee747754 Need stat.h. 1997-05-08 17:17:29 +00:00
mycroft e3f99a9397 Pass the vnode type to vaccess(), and use it when checking VEXEC. Make sure
that the mode bits passed to vaccess() and returned by foo_getattr() contain
only permission bits.
1997-05-08 16:19:43 +00:00
mycroft 837a72363d VEXEC -> VLOOKUP, as appropriate. 1997-05-08 10:57:17 +00:00
fvdl b9f22ef8f3 Only wake up one nfsiod when there is an async write to do. (from FreeBSD). 1997-04-20 16:24:44 +00:00
kleink 9c16cd8a46 Implement a POSIX compliant genfs VOP_SEEK() and use it in the appropriate
places; by Chris G. Demetriou and myself.
1997-04-11 21:52:00 +00:00
fvdl b4e49cf0e9 Avoid nfsiods acquiring/releasing a lock, then acquiring it again, before
anyone else can get to it, by checking if a reply was received, and it
has thus become unnecessary to take the lock. From FreeBSD.

XXX I don't really like this, "locks" potentially suffer from the same
problem throughout the whole kernel; they should probably be FIFO everywhere.
1997-04-08 17:57:16 +00:00
thorpej 76d601d33e Don't assume mbuf external storage is MCLBYTES. 1997-03-27 20:45:27 +00:00
thorpej 22ea1671cf Update for new mbuf code. 1997-03-27 20:40:09 +00:00
mycroft 6962daa0f8 KNF police. 1997-03-24 21:50:48 +00:00
fvdl 17d7bd9d41 Check for the use of reserved ports on a per-request basis, unless
MNT_EXNORESPORT is specified. The check is cheap and doesn't impose
any extra overhead.
1997-03-23 20:55:51 +00:00
thorpej 7cb794d91d Add some missing "\n"'s. 1997-03-17 17:41:45 +00:00
is 07b064e02e New ARP system, supports IPv4 over any hardware link.
Some of the stuff (e.g., rarpd, bootpd, dhcpd etc., libsa) still will
only support Ethernet. Tcpdump itself should be ok, but libpcap needs
lot of work.

For the detailed change history, look at the commit log entries for
the is-newarp branch.
1997-03-15 18:09:08 +00:00
mycroft bbb6842922 In nfs_link(), check for a cross-device mount *before* looking in the
v_data field.
1997-03-05 02:08:06 +00:00
fvdl a94614a50f Use ALIGNED_POINTER to see whether mbuf data needs to be realigned. 1997-02-24 23:26:20 +00:00
fvdl d4b4c37b39 Cast pointer to u_long, not int, when doing the alignment check.
Fixes warnings on the Alpha. Needs a better solution.
1997-02-22 23:33:05 +00:00
fvdl 9abd6715f6 Fixes from BSDI (thanks go to Keith Bostic). Original RCS message:
date: 1997/02/10 18:41:15;  author: cp;  state: Exp;  lines: +8 -2
Make nfs_realign go away on sparc and add functionality to nfsm_disct.

===
[XXX this introduces an ifdef __i386__, see the comment. Should be changed]
1997-02-22 03:11:12 +00:00
fvdl 37986aa09a Fixes from BSDI (thanks go to Keith Bostic). Original RCS messages:
date: 1996/07/23 17:14:46;  author: donn;  state: Exp;  lines: +6 -4
Be sure to push out the last page of the file before truncating it.

date: 1996/10/14 22:41:20;  author: donn;  state: Exp;  lines: +2 -2
From Chris: Nfs_link() called vput() on the wrong vnode when aborting
from a cross-device link, which could (and did) lead to crashes.

date: 1996/10/24 16:43:43;  author: pjd;  state: Exp;  lines: +6 -2
Return EOPNOTSUPP when trying to do a setattr with flags.

===

Also (from BSDI too, but the RCS message did not quite describe the change
to this particular file well): move the EROFS a bit further down to
let VOP_ACCESS do it's work and return an 'expected' error value to
a possible layered filesystem.
1997-02-22 03:08:47 +00:00
fvdl 03fd36b882 Fixes from BSDI (thanks go to Keith Bostic). Original RCS messages:
date: 1997/02/10 18:41:14;  author: cp;  state: Exp;  lines: +110 -46
Make nfs_realign go away on sparc and add functionality to nfsm_disct.
1997-02-22 03:03:03 +00:00
fvdl dce1770311 Fixes from BSDI (thanks go to Keith Bostic). Original RCS messages:
date: 1995/11/30 20:37:03;  author: cp;  state: Exp;  lines: +25 -14
Change splsoftclock() to splnet();
Make nfsrv_getstream create two copies of data when
splitting up an mbuf rather than two references to the
same external buffer. The symptom this fixes is client
hangs.

date: 1997/02/10 18:41:13;  author: cp;  state: Exp;  lines: +4 -1
Make nfs_realign go away on sparc and add functionality to nfsm_disct.
1997-02-22 02:59:08 +00:00
fvdl 2958b47104 Fixes from BSDI (thanks go to Keith Bostic). Original RCS message:
date: 1996/11/20 20:02:54;  author: pjd;  state: Exp;  lines: +7 -4
In nfsrv_access(), if VOP_ACCESS() returns an error and the
error == EPERM or its not the owner doing the access, return the error.
1997-02-22 02:56:01 +00:00
fvdl 78d0ef4390 Fixes from BSDI (thanks go to Keith Bostic). Original RCS messages:
date: 1995/11/30 20:37:53;  author: cp;  state: Exp;  lines: +3 -3
Change splsoftclock() to splnet();
Make nfsrv_getstream create two copies of data when
splitting up an mbuf rather than two references to the
same external buffer. The symptom this fixes is client
hangs.

date: 1996/10/16 00:06:05;  author: ewv;  state: Exp;  lines: +5 -3
Clear pending signal when an unmount fails, this allows us another chance
at the umount after a short sleep. The fixes a problem where /usr is
mounted via nqnfs and the system hangs on shutdown since the umount()
always fails with EBUSY (inetd is still busy on usr) and since we don't
clear the signal we end up stuck looping and never give inetd a chance to
catch its SIGKILL.

date: 1996/10/23 18:22:14;  author: donn;  state: Exp;  lines: +12 -7
Kirk's changes to prevent races when unmounting.  (1) Unmount()
and vfs_unmountall() now call vfs_busy() so that they participates
in the mount structure locking scheme.  Dounmount() calls vfs_unbusy()
to unlock things, and makes sure to wake up waiters if there's an
error.  (2) The MFS and NQNFS daemons also now use vfs_busy() when
unmounting filesystems.  Kirk restructured the code so that a
successful unmount by another process won't leave the possibility
that a daemon might reference a mount structure that has been freed.
1997-02-22 02:51:47 +00:00