Commit Graph

412 Commits

Author SHA1 Message Date
bouyer 3bf1a6ad00 ufs_getlbns needs an array of NIADDR+1 struct indir's, and not NIADDR.
This fixes a panic due to stack corruption when reading larges files.
1997-07-24 17:18:03 +00:00
fvdl e351013e56 Fix messed up RCS Id. 1997-07-22 14:36:31 +00:00
fvdl f2377e977b When allocating a new block, store the result obtained through counting
indirect blocks in a 64 bit integer, to prevent overflows when computing
NINDIR^3
1997-07-17 23:40:07 +00:00
bouyer 1d5e0e6e91 Add a lock locking around inode hashing. 1997-07-17 16:56:44 +00:00
fvdl 286a3374b9 Give the hash lock a better name, it's not just ffs that uses it. 1997-07-15 19:08:18 +00:00
fvdl 5d96e77ef6 Get locking around inode hashing right. 1997-07-07 23:37:36 +00:00
fvdl acffafa288 Oops, I messed up the lock. Reverting it until I have time to fix it,
to avoid people getting trouble after the supscan hits.
1997-07-07 11:47:06 +00:00
fvdl b362aa16be Put lock around inode hashing, because getnewvnode or MALLOC might block,
creating race conditions.
1997-07-06 12:43:43 +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
bouyer 77d5755416 Sync with ufs/ufs:
Avoid panic triggered by rename("foo/", "bar/..") (From Mycroft, via christos)
1997-07-01 07:34:03 +00:00
fvdl 9b30a6a4e5 Return EPERM for an attempt to remove a directory with VOP_REMOVE, not EISDIR. 1997-06-30 20:16:31 +00:00
fvdl 822371a987 Return EPERM, not EISDIR for an attempt to remove a directory. 1997-06-30 20:13:44 +00:00
christos b59135a6fb Avoid panic triggered by rename("foo/", "bar/..") (From Mycroft) 1997-06-26 22:23:17 +00:00
pk 2e8a55e122 TIMESPEC_TO_TIMEVAL => TIMEVAL_TO_TIMESPEC 1997-06-13 08:59:51 +00:00
mrg 295af85e9e remove swap configuration. 1997-06-12 17:12:17 +00:00
bouyer 76c414a957 Add support for ext2fs, this needed a few modifications to ufs/ufs/inode.h:
- added an "union inode_ext" to struct inode, for the per-fs extentions.
  For now only ext2fs uses it.
- i_din is now an union:
	union {
		struct  dinode ffs_din; /* 128 bytes of the on-disk dinode. */
		struct ext2fs_dinode e2fs_din; /* 128 bytes of the on-disk dinode. */
	} i_din
  Added a lot of #define i_ffs_* and i_e2fs_* to access the fields.
- Added two macros: FFS_ITIMES and EXT2FS_ITIMES. ITIMES calls the rigth
  macro, depending on the time of the inode. ITIMES is used where necessary,
  FFS_ITIMES and EXT2FS_ITIMES in other places.
1997-06-11 10:09:37 +00:00
bouyer 9e3c291da4 The ext2fs layer, based on the ffs/ufs one. Uses a few functions from
sys/ufs/ufs/
1997-06-11 09:33:37 +00:00
kleink 9c03d5cf55 When doing a CREATE, RENAME or DELETE w/ DOWHITEOUT and ISWHITEOUT lookup on a
non-existent file and the end of the pathname is reached, and this `current'
directory resides on a read-only mounted file system, don't update/prepare
its inode for the actual operation but return EROFS.
1997-05-12 19:04:16 +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
mikel 55f53d7fdb return EPERM from ufs_setattr() if an attempt is made by non-superuser
to change superuser-only file flags; fixes PR kern/3491.
1997-04-23 05:47:54 +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
kleink 2cfcc6c893 Return immediately upon zero byte reads, as updating st_atime in this case
violates POSIX.1 read() semantics.
1997-04-04 14:21:32 +00:00
mikel b81091e992 POSIX.1 specifies that a failed link() to a directory must return EPERM,
and EMLINK was not documented; from Klaus Klein in PR standards/3397.
Also documented EOPNOTSUPP for filesystems that don't support hard links.
1997-03-27 07:30:25 +00:00
mycroft 66c4e32b11 Just increment the generation count. Using the time is bogus and defeats
fsirand(8).
1997-03-10 06:18:28 +00:00
fvdl 8b21bbed9b Implement similar fix as in the NQNFS fix from BSDI, to avoid race conditions
when unmounting. It cleans up the loop a bit too.
1997-02-22 03:25:05 +00:00
thorpej 727078d31e - Add ffs_mountroot to ffs_vfsops.
- Only attempt to mount a root FFS on a DV_DISK class device.
1997-01-31 03:05:31 +00:00
tls d0c43309b5 add support for noatime mount flag 1997-01-30 09:52:26 +00:00
tls 0024ac02cf Correct old inode flag names in comment, and reformat for 80 character screen 1997-01-27 10:30:14 +00:00
cgd 90688fce27 Change the second and third args to struct vfsops' (*vfs_mount)() to
'const char *', and 'void *', respectively.  The second arg is taken directly
from user arguments, and is const there, so must be const in the prototypes
and functions.  The third arg is also taken directly from user arguments.
It doesn't have to be changed, but since it's cleaner to keep the type
the same as the user arg's type, and I'm already making the 'const char *'
change...
1996-12-22 10:10:12 +00:00
is ebe1c82eda Make the struct lfs 512 bytes long on 32bit machines whose compiler doesn't
align 32bit integers. Use explicit sized typing at some other places.

XXX This still won't fix lfs for 64bit machines, as we have some
assumptions about sizeof(pointer)=sizeof(u_int32_t) in here, and (if I
looked right) a misaligned u_int64_t. The right fix (to cite cgd) will
be to seperate on-disk-representation from in-core, but I don't have
the time (at the moment) to do this.
1996-12-05 19:01:46 +00:00
cgd f6e4567c57 cast int64_t-sized types to "long long" before printing them with %qd.
gcc thinks that the 'q' modifier describes a "long long", and so -Wformat
whines when printing with 'q' on the alpha, since int64_t-sized types are
done with variations on "long" rather than "long long".
1996-11-15 23:11:56 +00:00
thorpej 34e2fb3bb6 Performance enhancement from Kirk McKusick <mckusick@McKusick.COM>:
When freeing an indirect block, there is no need to write it (synchronously,
no less!) before tossing it.
1996-11-06 03:02:59 +00:00
christos 90c7de0919 revert previous kprintf changes 1996-10-12 21:58:44 +00:00
christos de1b2b437e printf -> kprintf, sprintf -> ksprintf 1996-10-10 17:16:17 +00:00
christos 2dff852a85 Add prototype for quotactl. 1996-09-28 19:07:06 +00:00
christos 9cdf304505 Make this compile cleanly from userland (fsck_ffs). 1996-09-20 22:14:59 +00:00
mycroft 2bc736661a Implement poll(2). 1996-09-07 12:40:22 +00:00
mycroft c52352c819 Add a set of generic file system operations that most file systems use.
Also, fix some time stamp bogosities.
1996-09-01 23:47:48 +00:00
mycroft 261382c331 Change VOP_UPDATE() semantics:
* Make 2nd and 3rd args timespecs, not timevals.
* Consistently pass a Boolean as the 4th arg (except in LFS).
Also, fix ffs_update() and lfs_update() to actually change the nsec fields.
1996-05-11 18:26:27 +00:00
pk 44af669e3d Appease gcc: unused variables if !QUOTA 1996-03-25 12:53:35 +00:00
christos 48fda0b4ca Fix printf format strings 1996-03-17 02:16:18 +00:00
scottr c9f7e94a5c Remove hack to work around <sys/dirent.h> DIRSIZ conflict 1996-03-09 19:42:41 +00:00
gwr 331e377b30 Need to #undef DIRSIZ from <sys/dirent.h> before we redefine it. 1996-02-29 20:09:56 +00:00
cgd 9c95634273 in mfs_print: mfs_baseoff is a pointer, should be printed as %p, and
should NOT be cast to unsigned int.
1996-02-21 00:06:45 +00:00
christos 7e24291099 Protect include in lfs_cksum.c so that it can be used by userland programs. 1996-02-16 02:22:05 +00:00
christos e2c2c98181 di_size is a quad and needs %qu not %lu 1996-02-12 22:08:47 +00:00
christos 11e9f2ce94 Add fwd declaration for struct ucred 1996-02-12 15:20:12 +00:00
christos fb9b45b582 put back traditional symlink change that somehow got lost. 1996-02-11 02:06:13 +00:00
christos 9fe380e1ab cross that t and dot that i. Typo in last commit. 1996-02-09 23:30:19 +00:00
christos 273fa18bff ufs prototype changes 1996-02-09 22:36:00 +00:00
christos 573481f5fc mfs prototypes 1996-02-09 22:31:27 +00:00
christos 7bd9e243f3 lfs prototypes 1996-02-09 22:28:45 +00:00
christos ec3d880232 ffs prototypes 1996-02-09 22:22:18 +00:00
mycroft 53fccab940 Fix vop_link, vop_symlink, and vop_remove semantics in several ways:
* Change the argument names to vop_link so they actually make sense.
* Implement vop_link and vop_symlink for all file systems, so they do proper
  cleanup.
* Require the file system to decide whether or not linking and unlinking of
  directories is allowed, and disable it for all current file systems.
1996-02-09 14:45:36 +00:00
jtc b73662fea2 Revert to sane symlink semantics. This is something we should have done
long ago.  Fixes many PRs.
1996-02-07 17:01:25 +00:00
jtc dd05bd5124 Rename struct timespec fields to conform to POSIX.1b 1996-02-01 00:04:52 +00:00
cgd b567511c78 Fix from Lite-2: when reloading the file system, save fs_maxcluster and
the old summary structure pointers, and recalculate cluster per cyl. grp.
information.
1995-12-19 23:27:53 +00:00
mycroft 7edc899fdd ffs -> ufs 1995-11-11 22:00:15 +00:00
mycroft 1dde00e8a4 Correct a comment regarding cookies, from Greg Hudson. 1995-10-09 11:19:32 +00:00
thorpej 1955514b6c Make system calls conform to a standard prototype and bring those
prototypes into scope.
1995-09-21 23:39:20 +00:00
mycroft b2f17c7648 Do any pending I/O before trying to unmount, per John Kohl. 1995-09-01 19:39:18 +00:00
cgd e9d17d38b5 avoid unnecessary aging of buffers. This used to make sense, when buffer
caches were much smaller, but makes little sense now, and will become more
useless as RAM (and buffer cache) sizes grow.  Suggested by Bob Baron.
1995-07-24 21:19:27 +00:00
cgd 60db543a18 don't just throw away updates to the cylinder group bitmaps, actually
write them to disk!  From Keith Smith at Harvard, via Kirk McKusick.
fixes the occasional `blkfree: freeing free block' that has been seen
when cluster reallocation code is enabled.
1995-07-19 15:47:36 +00:00
cgd 8f62c773e8 don't assume the f_fsnamelen is nul-truncated or longer than MFSNAMELEN 1995-06-18 14:45:14 +00:00
cgd 94b7cf1b85 compensate for timeval/timespec/stat structure changes. 1995-06-15 23:22:41 +00:00
mycroft ae9e49ed0d Fix thinko in previous commit. Do this as suggested by John Kohl. 1995-05-30 11:41:38 +00:00
mycroft 60c966ee4e When replacing a whiteout, set i_endoff to 0, so the directory cannot be
shrunk.
1995-05-30 10:44:49 +00:00
cgd 64d4944e2f from Mike Karels:
allow Q_SYNC regardless of "target" uid, we allow it with -1;
fix bug that caused all ops to refer to user quotas, not group.
[finally had a chance to check this!]
1995-05-10 18:00:45 +00:00
mycroft fc46bf42f7 Make use of the `fs_clean' field. If it was set when the file system was
mounted or upgraded to r-w, then clear it and set it again later when the
file system is unmounted or downgraded.
1995-04-12 21:21:00 +00:00
jtc db0046c14d KERNEL -> _KERNEL 1995-03-28 19:59:56 +00:00
jtc f76f1f89ad KERNEL -> _KERNEL 1995-03-26 20:35:13 +00:00
cgd dd6089fc52 explicitly cast &time to (struct timeval *) when passing it to VOP_UPDATE.
new prototypes and picky compilers make a volatile mess.
1995-03-24 15:33:23 +00:00
mycroft f75ba16b09 Update to use timer{add,sub}(). 1995-03-21 13:33:34 +00:00
mycroft 2f805fa51b copy*str() should use size_t. 1995-03-09 12:05:21 +00:00
cgd ad86c7f247 size for copyinstr should be u_long 1995-03-08 01:51:49 +00:00
cgd 32ec40eee8 cast pointer to long, not int 1995-03-08 01:51:38 +00:00
mycroft 4c34be6b52 Clean up deleted files. 1995-03-01 00:00:00 +00:00
mycroft 41f181e0d8 Clean up the code to frob mnt_stat a bit. 1995-01-18 09:44:34 +00:00
mycroft 9843f45605 Turn mountlist into a CIRCLEQ, and handle setting and checking of MNT_ROOTFS
differently.
1995-01-18 06:19:49 +00:00
cgd 80c18810b0 fix pr 568 1995-01-03 01:23:50 +00:00
mycroft f969fcc548 Don't look at d_type for old format file systems. 1994-12-30 22:45:55 +00:00
mycroft e242058ed6 Clear IN_RENAME on failed rename of directory. 1994-12-27 19:55:24 +00:00
ws 2f0fb8ee09 Implement and use a common access checking routine 1994-12-24 16:44:12 +00:00
mycroft 40d02e621d #include sys/queue.h, but also hide kernel structures in #ifdef KERNEL. 1994-12-21 20:07:26 +00:00
mycroft 1b682c968a Add RCS ids where missing. 1994-12-21 20:00:18 +00:00
mycroft 6a5daf3070 Ignore rotational optimization if nrpos == 1, as suggested by Stefan Esser. 1994-12-16 05:55:15 +00:00
mycroft b4aa6d3a28 Call foo_statfs() from a common place when mounting. 1994-12-15 19:46:08 +00:00
mycroft 080e194e58 Remove extra arg to vn_open(). 1994-12-14 19:03:13 +00:00
mycroft a63cb01c7d Sync with CSRG. 1994-12-14 13:03:35 +00:00
mycroft 4b18546438 Sync with CSRG. 1994-12-13 21:14:43 +00:00
mycroft c5b0ae2805 Not ready for part of the previous change yet... 1994-12-13 20:51:56 +00:00
mycroft 527b796ff5 Turn lease_check() into a vnode op, per CSRG. 1994-12-13 20:14:30 +00:00
mycroft 5857125e47 Sync with CSRG. 1994-12-13 19:10:43 +00:00
mycroft 2981ef6595 Sync with CSRG. 1994-12-13 09:58:11 +00:00
mycroft b619d35b99 Use __timeradd(), not timevaladd(). 1994-12-11 17:57:15 +00:00
mycroft a4aea8ad25 Round struct lfs to 512 bytes. 1994-11-17 16:58:41 +00:00
christos 1b76292bf9 added extra argument to vn_open 1994-11-14 06:02:03 +00:00
cgd 6ac2bbfc35 be more careful with types, also pull in headers where necessary. 1994-10-30 21:43:03 +00:00
mycroft 4c7eedf0b8 This is not my day. 1994-10-28 20:20:18 +00:00
mycroft c0fd0f67f1 Fix typo. 1994-10-28 20:16:10 +00:00
mycroft 0badb64371 For now, limit the maxfilesize to 2^31*bsize-1 in core. This is temporary. 1994-10-28 20:15:09 +00:00
mycroft f62b376067 Fix a couple of types in the compatibility code. 1994-10-28 19:59:21 +00:00
mycroft f5720d1edd Don't allow truncating past maxfilesize. 1994-10-28 19:31:07 +00:00
cgd f0c1138373 update for new syscall args description mechanism, and deal safely
with wider types.
1994-10-20 04:20:55 +00:00
cgd 2f658e4b73 c syntax 1994-09-20 06:45:17 +00:00
cgd 0bac4d47b1 C syntax fix, and syscall args style (For later.) 1994-08-21 03:15:32 +00:00
mycroft b303126d1e Do the doasyncfree conditionalization better. 1994-07-04 21:06:07 +00:00
cgd 59ca7c5f1f fix the definition of a dev_t 1994-06-30 08:05:54 +00:00
cgd fccfa11af5 New RCS ID's, take two. they're more aesthecially pleasant, and use 'NetBSD' 1994-06-29 06:39:25 +00:00
mycroft d22df96ea2 Reload mnt_maxsymlinklen, for `fsck -c2'. 1994-06-28 21:50:24 +00:00
mycroft d46a373019 Deallocate the vnode data using the correct type for MFS nodes. 1994-06-22 05:45:19 +00:00
mycroft 0be7885407 Add a couple of missing casts. 1994-06-22 03:01:40 +00:00
cgd 2dea3cacb5 kill #ifdefs for vax/tahoe w/old vm 1994-06-18 18:28:36 +00:00
mycroft d81c1f39c2 This i_flags should be i_flag. 1994-06-16 03:25:40 +00:00
mycroft 914f6b157b Fastlink compat. 1994-06-15 15:35:06 +00:00
mycroft 0ae2853c67 Fix compatibility with old fastlinks. 1994-06-14 22:56:19 +00:00
mycroft 6d939e6bec Format police. 1994-06-13 20:49:56 +00:00
pk 3eb1a95749 Check requested file size; negative values cause havoc. 1994-06-13 20:38:42 +00:00
mycroft 33d82e8a8b Move definition of prtactive. 1994-06-13 15:37:55 +00:00
mycroft 264b874c14 Update to 4.4-Lite fs code, with local changes. 1994-06-08 11:41:58 +00:00
mycroft 9f778e6570 Clean up deleted files. 1994-06-08 11:41:18 +00:00
cgd f42a80c7ea MIN -> min, MAX -> max 1994-05-24 02:33:03 +00:00
cgd 90cea1534d use a cast b_data for everything 1994-05-18 10:21:42 +00:00
cgd 6dad8d7a8a put sync printing in one place 1994-05-18 00:35:07 +00:00
cgd 91cf0fbaf3 copyright foo 1994-05-17 04:21:49 +00:00
cgd 344fb896fd new kernel malloc. much better (but slower) diagnostic checking 1994-05-13 08:32:17 +00:00
cgd 0f2ecb72f6 lots of changes: prototype migration, move lots of variables, definitions,
and structure elements around.  kill some unnecessary type and macro
definitions.  standardize clock handling.  More changes than you'd want.
1994-05-05 05:40:40 +00:00
cgd da9e659d0d SHUT UP! 1994-04-27 21:43:47 +00:00
pk 3bd7cfeb1b More prototyping. 1994-04-26 20:19:52 +00:00
cgd 8276c52cd9 i hate RISC. 1994-04-25 17:45:35 +00:00
cgd d071d1cf05 some prototype cleanup, eliminate/replace bogus types (e.g. quad and
u_quad) -> use better types (e.g. quad_t & u_quad_t in inodes),
some cleanup.
1994-04-25 03:49:27 +00:00
cgd 4917d8beec make fs types consistent over new kernels. also, some proto foo. 1994-04-23 07:54:38 +00:00
cgd 3dda0064a5 Convert mount, vnode, and buf structs to use <sys/queue.h>. Also,
some knf and structure frobbing to do along with it.
1994-04-21 07:47:31 +00:00
cgd 93159ea799 fs types are names now. 1994-04-14 04:05:45 +00:00
cgd b7e76677c6 expand uid_t/gid_t/off_t 1994-03-27 09:09:57 +00:00
mycroft 84f0c5b17b Clean up deleted files. 1994-03-09 21:25:30 +00:00
ws ce516ff13d Make FFS optional 1994-03-09 21:21:37 +00:00
paulus 2cdd6028e6 Remove the last dependencies on DEV_BSIZE in the ufs code. 1994-02-24 01:07:51 +00:00
mycroft 94b2718bd1 PARANOID --> DIAGNOSTIC for inexpensive tests. 1994-02-14 21:43:33 +00:00
mycroft a8f3db1d79 Use b_actf, not av_forw. 1994-02-06 10:13:02 +00:00
cgd 0782a26f43 quiet a compiler warning 1994-01-27 03:48:44 +00:00
cgd d02ac4c31d mfs_print return type back to 'int' 1993-12-23 07:03:11 +00:00
mycroft b4d3382694 Canonicalize all #includes. 1993-12-17 07:56:32 +00:00
cgd facd69a0ee do something better with lookup return values; suggested by BSDI's msdosfs mod 1993-11-20 09:40:32 +00:00
cgd 76dbc1192b new specfs.h and fifo.h locations 1993-11-12 05:54:12 +00:00
mycroft fcb280ab19 Add FS_CLEANFREQ. 1993-10-01 01:47:10 +00:00
jtc c9dca7f48a Removed functions moved to libkern: scanc, skpc, locc. 1993-09-11 00:09:25 +00:00
cgd 84a8fbe900 ws forgot two backslashes (so it tossed his 'cookies') 1993-09-07 20:02:19 +00:00
ws 053f138dae Changes to VFS readdir semantics
NFS changes for better cookie support
ISOFS changes for better Rockridge support and support for generation numbers
1993-09-07 15:40:14 +00:00
glass 5da38538f7 sun3 has scanc support, so it doesn't need the ufs_subr.c version
this crud will go away with the usage of libkern
1993-09-01 15:53:42 +00:00
mycroft ece0d82f04 Make mfs_print() return a void to prevent a warning from GCC. 1993-08-24 14:54:14 +00:00
mycroft 4862b84c92 Add RCS identifiers (this time on the correct side of the branch), and
incorporate recent changes in netbsd-0-9 branch.
1993-08-01 19:22:24 +00:00
cgd 7b2afa7fe6 incorporate changes from 0-9-base to 0-9-ALPHA 1993-07-28 02:20:34 +00:00
andrew 1b69e917eb ANSIfications. 1993-06-27 06:59:20 +00:00
cgd d2ee066f71 add Yuval Yarom's changes (originally for BSD/386) for advisory record
locking on NFS files.  Note that this DOES NOT support network locking,
only local advisory locks.
1993-05-22 09:00:49 +00:00
cgd b95f963973 add rcs ids, and clean up headers where necessary 1993-05-20 03:53:21 +00:00
deraadt 9f4a45e18a dangling pointer patch for lockf. From pk@cs.few.eur.nl
patch dated Apr 26.
1993-05-11 09:39:52 +00:00
mycroft 235bd1db44 Add consistent multiple-inclusion protection. 1993-04-19 03:45:34 +00:00
cgd d9bc91c0ac fix from Chris Torek (patch 106):
386BSD inherits a bug from the 4.3 Reno port for contiguous block allocation.
1993-04-09 12:19:12 +00:00
cgd f96d1b7f51 make when PARANOID wouldn't work, for mis-remembered field name 1993-04-02 12:20:13 +00:00
cgd 61f282557f initial import of 386bsd-0.1 sources 1993-03-21 09:45:37 +00:00