Commit Graph

495 Commits

Author SHA1 Message Date
perseant
32bd59cdf6 Fix error returns on lfs vnops so that locks and reference counts are
preserved.  Handle dirop accounting in lfs_vfree for this case as well.
May address PR#8823.
1999-12-15 07:19:07 +00:00
perseant
fa6a733240 In lfs_bwrite, don't mark buffers dirty if lfs is mounted read-only.
(Previously buffers could be marked dirty by the cleaner, and possibly by
other means.)

Also check for softdep mount in vfs_shutdown before trying to bawrite
buffers, since other filesystems don't need it and lfs doesn't bawrite.
(This fragment reviewed by fvdl.)

Partially addresses PR#8964.
1999-12-15 07:10:32 +00:00
wrstuden
b93040c6f1 Modify ufs_rename() to a) be more careful about reference counts (we no longer
depend on the initial lookups being doen with SAVESTART), and b) check
return values for errors.

Should fix PR 8491 for ufs - two simultaneous identical renames will now
work correctly. One will succeed, one will fail.
1999-12-13 19:07:21 +00:00
drochner
800b976584 Call ffs_oldfscompat() before all the consistency checks, to avoid the
use of uninitialized data in the checks if the filesystem is an old one.
1999-12-10 14:36:04 +00:00
simonb
3238e654f9 Use an explicitly sized type (u_int32_t) for inode numbers in the super
block instead of ino_t.  Reviewed by Konrad Schroder.
1999-12-08 23:17:31 +00:00
ragge
6aabd4d0c2 CL* discarding. 1999-12-04 12:11:13 +00:00
perseant
22979769c0 Handle the case of a vnode flush while dirops are active correctly in
lfs_segwrite.  Also, make sure a flush is called in SET_DIROP before sleeping
on its results.  Addresses PR #8863.
1999-12-03 21:47:44 +00:00
fvdl
d901f6eae0 Be more careful to block bio interrupts for some data structures. There
were at least a few missed cases where vp->v_{clean,dirty}blkhd were
unprotected since the softdep/trickle sync merge.
1999-11-23 23:52:40 +00:00
perseant
bb2093f24a Initialize i_ffs_effnlink, so every file doesn't look like it's already been
deleted for the purpose of dirops (particularly create and mkdir).  Addresses
PR#8815.
1999-11-21 19:25:31 +00:00
enami
13cd632041 Define i_e2fs_rdev. 1999-11-18 08:26:21 +00:00
enami
068ded93c6 Cosmetic changes; fix indentation and usage of white spaces. 1999-11-18 08:23:22 +00:00
perseant
ff33b3365d Fix spllevel problem with superblock exclusion and with segment write throttle.
May address PR#8383.
1999-11-17 20:08:30 +00:00
lukem
a3b9423bb0 fix lp64 lossage 1999-11-16 03:06:06 +00:00
fvdl
0b1963121a Add Kirk McKusick's soft updates code to the trunk. Not enabled by
default, as the copyright on the main file (ffs_softdep.c) is such
that is has been put into gnusrc. options SOFTDEP will pull this
in. This code also contains the trickle syncer.

Bump version number to 1.4O
1999-11-15 18:49:07 +00:00
perseant
fc5ecbb5a8 Back out my patch of the 8th (to address unreferenced inode problem).
Apparently this needs more thought.
1999-11-12 16:56:48 +00:00
perseant
26c34e715f If ifile blocks were written before dirops were complete, and then the
system crashed, inodes could be allocated that were not referenced.  (Though
not a serious problem, it evidences itself in phase 4 of fsck_lfs.)  Fix
this by marking if_daddr with UNASSIGNED before the inodes are actually
written; at mount time the ifile is checked for UNASSIGNED entries and
any that are found are linked back into the free list.  (The latter
functionality should move into the roll-forward agent when it materializes.)
1999-11-09 02:21:05 +00:00
perseant
3c63d0830f Address ufs_hashlock/ufs_ihashins protocol bug, discovered while doing a
post-mortem of a production machine.  Also, take the active dirop
count off of the fs and make it global (since it is measuring a global
resource) and tie the threshold value LFS_MAXDIROP to desiredvnodes.
1999-11-06 20:33:05 +00:00
perseant
b46550bdcf Better fix for PR# 8577: before setting dirops, check for cross-device
rename and error out.  This avoids possible problems with attempting
rename between two LFSs.
1999-11-05 20:14:56 +00:00
perseant
ea1f38ce2f Check that the destination vnode is on an LFS before trying to twiddle
its superblock.  Fixes PR#8577.
1999-11-01 18:29:33 +00:00
perseant
fde29faf34 Under degenerate access patterns (e.g. `bonnie' benchmark) lfs_check could
fail, because the particular block being requested was always in the cache
(although other routines that cannot afford to call lfs_check have in the
meantime stuffed the cache full of dirty blocks).  Partially addresses PR 8383.
1999-10-21 16:53:43 +00:00
enami
fee96e1746 Check if the type of device node isn't VBAD before touching v_specinfo. If
the device vnode is revoked, the field is NULL and touching it causes null
pointer derefercence.
1999-10-20 14:32:09 +00:00
wrstuden
e5bf8dc4d5 Catch a few cases missed earlier where we need to lock the vnode before
calling VOP_CLOSE().
1999-10-18 19:52:24 +00:00
wrstuden
e682a080e9 In spec_close(), if we're not doing a non-blocking close and VXLOCK is
not set, unlock the vnode before calling the device's close routine and
relock it after it returns. tty close routines will sleep waiting for
buffers to drain, which won't happen often times as the other side needs
to grab the vnode lock first.

Make all unmount routines lock the device vnode before calling VOP_CLOSE().
1999-10-16 23:53:26 +00:00
mycroft
02781a3483 Fix printf() formats. 1999-10-01 22:07:42 +00:00
thorpej
29df848753 Need <string.h> for memcpy(3) prototype if building from userland. 1999-09-14 04:50:54 +00:00
augustss
ada52e1f37 Add #include <sys/device.h> so this file compiles again. 1999-09-08 08:29:45 +00:00
sommerfeld
c0411740d8 Avoid dereferencing NULL rootvp if booting diskless. 1999-09-08 03:45:22 +00:00
jdolecek
7dfaa17700 Adapt to cache_lookup() changes.
Tested by: jdolecek
Rewieved by: wrstuden
1999-09-05 14:26:32 +00:00
perseant
c588aaf55f Make changes that will allow an LFS filesystem to be used as the root
filesystem.  In particular,

- Fix mknod deadlock, described in PR 8172.
- Enable lfs_mountroot.
- Make lfs_writevnodes treat filesystems mounted on lfs device nodes properly,
  by flushing that device rather than trying to add blocks to the device inode.

This, in combination with lfs boot blocks, will allow operation of an all-lfs
system.
1999-09-03 22:48:51 +00:00
wrstuden
169a5eda2d Pull in changes which parallel rev 1.22 -> 1.25 of ufs_lookup(). 1999-08-04 18:40:47 +00:00
wrstuden
45ce38544f Make the compiler happy.. 1999-08-04 18:40:06 +00:00
wrstuden
3598f580dc Fix tyop in previous. 1999-08-04 18:14:59 +00:00
wrstuden
1eeee9e04a Modify ISDOTDOT case so that we only clear PDIRUNLOCK if we really
re-lock the parent vnode.
1999-08-04 18:07:39 +00:00
wrstuden
3bf14d81e9 Add support for fcntl(2) to generate VOP_FCNTL calls. Any fcntl
call with F_FSCTL set and F_SETFL calls generate calls to a new
fileop fo_fcntl. Add genfs_fcntl() and soo_fcntl() which return 0
for F_SETFL and EOPNOTSUPP otherwise. Have all leaf filesystems
use genfs_fcntl().

Reviewed by: thorpej
Tested by: wrstuden
1999-08-03 20:19:16 +00:00
drochner
12a6593f79 clean up inclusion of "opt_ffs.h" and use of "FFS_EI" a bit 1999-08-03 19:22:43 +00:00
wrstuden
6dfc303f3b Add PDIRUNLOCK support. 1999-08-02 22:58:29 +00:00
mycroft
0900226864 Make one code path a bit clearer. 1999-07-30 01:55:38 +00:00
wrstuden
976aedb7ac Adjust mountroot routines to vrele rootvp in case of mount error. Closes
PR 7977 by Neil Carson, <neil@brini.com>.
1999-07-17 01:08:28 +00:00
wrstuden
379a26972f Modify file systems to deal with struct lock in struct vnode. All leaf
fs's other than nfs use genfs_lock() for locking.

Modify lookup routines to set PDIRUNLOCK when they unlock the parrent.
1999-07-08 01:05:58 +00:00
thorpej
c7855f5009 Nuke unneeded include file. 1999-07-03 18:40:32 +00:00
tls
4d649c3adb squash some compiler warnings on debug printfs by casting to int 1999-06-17 22:22:41 +00:00
perseant
a818a47169 Minor changes to the segment live bytes calculation. In particular, fixed
a bug in fragment extension that could run the count negative.  Also, don't
overcount for inodes, and don't count segment summaries.  Thus, for empty
segments the live bytes count should now be exactly zero.
1999-06-15 22:25:41 +00:00
drochner
b121ed29dd complete the previous
reindent syscall args
1999-06-09 12:18:19 +00:00
christos
e2b181b130 prefix the lfs syscalls with sys_ 1999-06-09 04:52:11 +00:00
bouyer
466d1747ff memset ump->um_e2fs to 0 after malloc, it is bigger than SBSIZE and thus some
parts were left uninitialised. The symptom was that a read-only mount tried
to rewrite back the superblock.
1999-06-01 13:18:49 +00:00
perseant
88207e0cba Fixed lfs_update (and related functions) so that calls from lfs_fsync
will DTRT with vnodes marked VDIROP.  In particular, the message
"flushing VDIROP" will no longer appear, and the filesystem will remain
stable in the event of a crash.

This was particularly a problem with NFS-exported LFSes, since fsync
was called on every file close.
1999-06-01 03:00:40 +00:00
scottr
bdd60e98f9 Include opt_ddb.h so we will get the Debugger() prototype. 1999-05-04 00:35:37 +00:00
perseant
4427f80b15 Other half of the ufs_hashlock locking fix (oops) 1999-04-16 16:23:46 +00:00
perseant
2d12a2d41d Fix locking panic on ufs_hashlock 1999-04-16 00:41:58 +00:00
perseant
40458c9d34 Fix lost lock in lfs_markv -- a typo-class bug, obvious when you look at it. 1999-04-14 19:37:28 +00:00
perseant
40cebde457 Check the superblock version field, and refuse to mount the filesystem
if the version number is higher than we know about.  This allows, e.g.,
changes in the format of the ifile, segment size restrictions and boundaries,
etc., which would not affect existing fields in the superblock, but which
would drastically affect the filesystem, to be smoothly integrated at a
later date.
1999-04-12 00:47:17 +00:00
perseant
65ba757424 Improve the debugging printfs in the cleaner syscalls (in particular, make
it obvious that they're coming from lfs).
1999-04-12 00:40:06 +00:00
perseant
8d72b3204a Disallow threshold-initiated cache flush when dirops are active. Also, make
SET_ENDOP use lfs_check instead of inlining most of it.
1999-04-12 00:36:47 +00:00
perseant
a520288478 Fix block counting during file truncation, if not truncating to zero. 1999-04-12 00:30:08 +00:00
perseant
bffea14a3f Make sure that the wakeup occurs for vnodes that lfs_update might be sleeping
on (nodes which are not marked IN_MODIFIED/IN_CLEANING, but which have dirty
buffers), by marking them with the appropriate flag if dirtybuffers were added
while the write was in progress.
1999-04-12 00:25:13 +00:00
perseant
e6b7726c9a Better checking for held inode locks in lfs_fastvget, for a number of error
conditions.  Also change the default setting of lfs_clean_vnhead to 0, which
seems to make the locking problems go away (although this is difficult to
test as I can't reliably reproduce them).
1999-04-12 00:11:01 +00:00
perseant
7221719dc7 Fix "lfs_ifind: dinode xxx not found" panic. When inodes were freed,
then immediately reloaded, their dinodes were located in an inode block
which was not on disk at the advertized location, nor in the cache (although
it would be flushed to disk next segment write).  Fix this by using getblk()
instead of lfs_newbuf() for inode blocks.
1999-04-12 00:04:21 +00:00
perseant
97c6743666 Fix inode reporting in lfs_statfs (the meaning of f_files and f_ffree was
reversed).
1999-04-11 23:58:17 +00:00
perseant
d24ffa7077 Mark the current segment with SEGUSE_ACTIVE at mount time, rather than waiting
for the first write.  If this is not done, the cleaner may try to clean the
current segment out from under the writer if the filesystem is mounted after
a crash (or any other time that the dirty:clean segment ration is high enough).
1999-04-11 23:31:09 +00:00
perseant
6a87896854 Take out the `#ifdef USE_UFSHASH'; use ufs_hashlock to lock the inode free
list instead of free_lock.
1999-04-11 23:24:04 +00:00
perseant
46ae977773 Change the reference to "newlfs" in the CHANGES file to the correct "newfs_lfs" 1999-04-10 18:31:05 +00:00
mycroft
704563569f It was silly to not make this exportable. 1999-04-04 18:15:58 +00:00
mycroft
9e81cc5022 Fix obvious bugs:
* The MNT_UPDATE case had a null pointer dereference.  (This is a good example
  of why blindly adding bogus initializiers is a FUNDAMENTALLY BAD IDEA!)
* Make sure the whole ufsmount is zeroed, as the export code relies on this.
* If we decided to use the second/alternate superblock, make sure to copy the
  in-core version from the right buffer.
Also, reenable NFS exporting.
1999-04-04 09:56:44 +00:00
perseant
7ea5ec6723 Fix buffer handling problems in lfs_vinvalbuf 1999-04-01 23:28:09 +00:00
perseant
4158afaaf3 Add initialization to quell compiler warning (only on some platforms?) 1999-03-30 16:11:43 +00:00
perseant
322fef73ae Move variable initialization to the top of lfs_vflush 1999-03-30 16:03:16 +00:00
perseant
5589f33082 Fix unit mismatch in debugging code in lfs_segclean; also put it properly
within `#ifdef DEBUG_LFS'.
1999-03-29 22:13:07 +00:00
perseant
3e0bf5e0d8 Fix the other missing dirop wakeup 1999-03-29 21:54:26 +00:00
perseant
f058684b7f lfs_truncate calls vinvalbuf to invalidate all currently-hald buffers, which
in turn forces a flush of the vnode, whether or not it is involved in a dirop.
(This can happen during a remove or rmdir, when the directory is shrunk.)
Because of the nature of dirops, however, flushing a vnode involved in a dirop
is disallowed (and was marked with a panic).  This patch has lfs_truncate
call a specialized vinvalbuf that only invalidates buffers following the new
end-of-file, and thus does not require a flush.  Also the panic is demoted,
in case I missed any other path to lfs_vflush.
1999-03-29 21:51:38 +00:00
perseant
fbc5e63cd6 Make sysctl variable lfs_clean_vnhead do what it was supposed to do,
namely, toggle whether vnodes loaded only for cleaning (as opposed to
normal filesystem use) are freed to the *head* of the vnode free list,
rather than the tail.  This should avoid a possible cache flushing
effect, if the cleaner cleans a segment containing a large number of
live inodes.
1999-03-25 22:38:28 +00:00
perseant
cffa290130 Since dirop vnodes can't be flushed, they hold a reference until their
dirop is completely written to disk.  This means that ordinary calls to
ufs vnops which would ordinarily call VOP_INACTIVE through vrele/vput,
don't.  This patch detects that condition after such vnops have been
run, and calls VOP_INACTIVE if it would ordinarily have been called by
the ufs call.
1999-03-25 22:33:03 +00:00
perseant
a3748f1cc7 Fixes to make dirops and lfs_vflush play together well. In particular,
if we are short on vnodes, lfs_vflush from another process can grab a
vnode that lfs_markv has already processed but not yet written; but
lfs_markv holds the seglock.  When lfs_vflush gets around to writing it,
the context for copyin is gone.  So, now lfs_markv calls copyin itself,
rather than having lfs_writeseg do it.
1999-03-25 22:26:52 +00:00
perseant
6b51bdc17c Lock buffers with B_BUSY between data checksum calculation and write, so
some other process doesn't change the data after it was checksummed.
1999-03-25 22:02:36 +00:00
perseant
1cacaa295f Change lfs_sb_cksum to use offsetof() instead of an inlined version.
Fix lfs_vref/lfs_vunredf to ignore VXLOCKed vnodes that are also being
flushed.

Improve the debugging messages somewhat.
1999-03-25 21:54:10 +00:00
perseant
e6ef2d67dd clean up unused/required #ifdefs 1999-03-25 21:39:18 +00:00
tron
057ae88da9 Don't include "opt_uvm.h" any more. 1999-03-24 11:05:31 +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
kleink
9ee75a4fcc Add _PC_FILESIZEBITS to pathconf vnop. 1999-03-22 19:21:07 +00:00
perseant
d1afff4165 Move dlfs_pad to the end of struct dlfs (after the pad), for upward
compatibility.
1999-03-17 18:38:34 +00:00
perseant
c5fb3ffb03 Fix pad on lfs.h so it is really 512 bytes, as advertized 1999-03-17 16:49:00 +00:00
perseant
e1c9a578a8 New CHANGES files that describes briefly all nontrivial changes made to
the LFS since the 4.4lite2 code was merged into NetBSD.

TODO updated to remove everything marked DONE in 4.4, and add in a list
of more current things to do.

Get rid of comments about the cleaner syscall code and missing fragment
support from README.
1999-03-15 00:46:47 +00:00
chs
462ac41141 if an mfs i/o is successful, set b_resid to 0.
this allows the vnd driver to work on mfs files.
1999-03-15 00:18:24 +00:00
perseant
1b8f5ea3c3 New sources should leave the LFS in a more-or-less working state. Changes
include:

	- DIROP segregation is enabled, and greater care is taken
	  to make sure that a checkpoint completes.  Fsck is not
	  needed to remount the filesystem.
	- Several checks to make sure that the LFS subsystem does not
	  overuse various resources (memory, in particular).
	- The cleaner routines, lfs_markv in particular, are completely
	  rewritten.  A buffer overflow is removed.  Greater care is taken
	  to ensure that inodes come from where lfs_cleanerd say they come
	  from (so we know nothing has changed since lfs_bmapv was called).
	- Fragment allocation is fixed, so that writes beyond end-of-file
	  do the right thing.
1999-03-10 00:20:00 +00:00
perseant
414152aa79 Added flags to lfs_check call 1999-03-10 00:00:32 +00:00
perseant
9dceca5347 Add IN_CLEANING flag for LFS 1999-03-09 23:57:14 +00:00
mycroft
b174019ccc Pass null pointers to VOP_UPDATE rather than having all the callers fetch the
current time themselves.
1999-03-05 21:09:48 +00:00
mycroft
86ed73efb4 Permit the access and modify time pointers passed to VOP_UPDATE to be null,
meaning the current time.
1999-03-05 20:47:06 +00:00
bouyer
00d7241e81 Don't check fs_bsize before the superblock has been swapped if needed.
Check value of sbsize before allocating memory with this value.
1999-03-05 12:02:18 +00:00
wrstuden
862a56e88b Modify vfsops to seperate vfs_fhtovp() into two routines. vfs_fhtovp() now
only handles the file handle to vnode conversion, and a new call,
vfs_checkexp(), performs the export verification.
1999-02-26 23:44:43 +00:00
mrg
b3d5e1889f pull across patches from warner losh <imp@freebsd.org> (freebsd ufs_vnops.c
versions 1.109&1.110), adjusted for our ext2fs support, and also commited
there also.  this avoids overflowing the link count.
1999-02-26 07:30:00 +00:00
bouyer
36a5fdb528 Some new fields in the ext2fs superblock, from Tim Shepard.
While I'm there, reformat this file a bit.
1999-02-17 13:09:43 +00:00
thorpej
a4376d6a58 Fix printf format problems on Alpha. 1999-02-12 01:38:38 +00:00
bouyer
22d556f6cf Make sure a buffer optained from bread() is always bresle()'d in case of
error. Closes PR kern/1448 from Wolfgang Solfrank.
1999-02-10 13:14:08 +00:00
bouyer
dc306354b0 Move the bswap functions from libutil to libc (this bups the
minor of libc and the major of libutil). For little-endian architectures
merge the bnswap() assembly versions with nto* and hton* using symbols
aliasing. Use symbol renaming for the bswap function in this case to avoid
namespace pollution.
Declare bswap* in machine/bswap.h, not machine/endian.h. For little-endian
machines, common code for inline macros go in machine/byte_swap.h
Sync libkern with libc.
Adjust #include in kernel sources for machine/bswap.h.
1999-01-15 13:31:15 +00:00
bouyer
cdbe530495 No need to #include malloc.h here. 1998-12-04 11:02:30 +00:00
bouyer
3efc699962 Sanity check a few values in the superblock, to avoid mallocing huge
memory area if we try to mount a corrupted filesystem. Fixes kern/3933.
1998-12-04 11:00:40 +00:00
bouyer
4787b2ea75 - intentation
- sync LK_* flags with ffs/ufs
1998-12-02 10:44:52 +00:00
kenh
cbc0f73bee Update device special file modification times if NODEVMTIME isn't set. 1998-12-01 23:18:48 +00:00
bouyer
bef8c343db In ext2fs_sync(), don't flush the vnode if vput() returned an error. Fixes
PR kern/6495.
1998-12-01 14:37:44 +00:00
thorpej
1fcae7f1be defopt FFS_EI 1998-11-12 19:51:10 +00:00
mycroft
d4026f6eb5 GC the B_CACHE bit. 1998-11-09 01:18:34 +00:00
cgd
515148e0a3 cast arg to dbtob to u_quad_t; consisent, and fixed size unnecessary 1998-11-06 23:03:06 +00:00
cgd
af24dfc946 argument to dbtob needs to be cast to u_quad_t here to avoid shift lossage 1998-11-06 23:02:12 +00:00
mycroft
1a5b9c6c30 Do not corrupt file flags when file system is full! 1998-10-27 21:32:58 +00:00
thorpej
978c3d97f5 For consistency w/ FFS/LFS, define EXT2_DINODE_SIZE, and use it instead
of pointer arithmetic and/or sizeof(struct ext2fs_dinode).
1998-10-23 00:33:23 +00:00
thorpej
5ecbc50348 Use DINODE_SIZE rather than sizeof(struct dinode). 1998-10-23 00:32:35 +00:00
thorpej
f7948d05a1 Use DINODE_SIZE rather than pointer arithmetic. 1998-10-23 00:31:28 +00:00
thorpej
c8a2232a27 Define a symbolic constant to represent the size of a dinode. 1998-10-23 00:28:45 +00:00
christos
e62c8fd824 Missed a conditional for FFS_EI; appears when we compile without -Ox 1998-10-04 18:07:57 +00:00
bouyer
5440442505 Not time to #include <machine/bswap.h>m, it will come with the move
of bswap*() from libutil to libc.  Sorry !
1998-09-30 09:08:16 +00:00
bouyer
b10470bc11 #include opt_uvm.h only if _KENREL and !_LKM
Make ext2fs_init() call ufs_init(). it was doing the init by itself,
testing for extern done != 0. This bug was hidden by the fact that
ext2fs_init() is called before ffs_init().
1998-09-29 10:24:57 +00:00
pk
3059ae05ba Apply patch from PR#5542: buffer overflow in lfs_markv(). 1998-09-15 10:53:22 +00:00
christos
361a71f864 Fix copyright '\t' -> ' ' 1998-09-13 15:14:40 +00:00
pk
37109879dc PR#6032: define fixed sized on-disk superblock structure. 1998-09-11 21:27:12 +00:00
fvdl
077a042a3f Fix some maxsymlinklen comparisons for old filesystems that were
wrong after the byteswap changes.
1998-09-08 08:37:12 +00:00
fvdl
8fe5a08b64 Correct maxsymlink comparison for old filesystems that was clobbered in
byteswap changes.
1998-09-08 08:21:12 +00:00
kenh
466e22e1b7 Add a NODEVMTIME compile-time option. This will inhibit the updating
of modification times on device special files.  Probably only useful
for low-power systems.
1998-09-04 16:04:26 +00:00
thorpej
38cf17f475 Use the pool allocator and the "nointr" pool page allocator for LFS inodes. 1998-09-01 03:26:05 +00:00
thorpej
3ae149efac Use the pool allocator and "nointr" pool page allocator for ext2fs inodes. 1998-09-01 03:20:46 +00:00
thorpej
60cfe320cc Use the pool allocator and the "nointr" pool page allocator for FFS inodes.
XXX MFS also comes in here for inodes, and used a different malloc type,
but the structure is the same, so we just use the FFS inode pool.
1998-09-01 03:11:08 +00:00
rvb
7e0aabe421 Remove v_type != DIR check. First, vn_readdir already does
this check, before calling VOP_READDIR.  Second, vn_readdir
returns a different error even.  Finally, some FS's might
want to write their directories into files that look like
BSD directories and then have ufs_readdir parse them.
1998-08-30 00:16:04 +00:00
thorpej
9f42788795 Add some braces to make egcs happy. 1998-08-25 04:43:46 +00:00
thorpej
39f683419f Back out part of last change (uninitialized work-around). 1998-08-18 18:15:41 +00:00
thorpej
6fc90a1a4d Add some braces to make egcs happy (ambiguous else warning). Also,
deal with bogus uninitialized warning (__noreturn__ related)
1998-08-18 06:47:53 +00:00
matthias
574106c52b create miscfs/genfs/genfs_vnops.c:genfs_enoioctl and make all the other
filesystems use it instead of a private version.
1998-08-10 08:11:10 +00:00
perry
27ca6798df bzero->memset, bcopy->memcpy, bcmp->memcmp 1998-08-09 20:15:38 +00:00
mrg
5d236ade07 minr KNF nit .. 1998-08-09 03:16:23 +00:00
kleink
12a866151b Recognize _PC_SYNC_IO. 1998-08-03 14:19:57 +00:00
kleink
933111f98f Implement support for IEEE Std 1003.1b-1993 synchronous I/O:
* in the read vnode operator, check for IO_SYNC being set in the ioflag and
  synchronously update the file's meta-data if appropriate.
* in the write vnode operator, update the appropriate checks for IO_SYNC being
  set in the ioflag to reflect that IO_DSYNC is now inclusive-or'ed into
  IO_SYNC, and require all IO_SYNC bits to be set for operations defined by
  synchronized I/O file integrity completion but not by synchronized I/O data
  integrity completion.
1998-08-02 18:57:23 +00:00
mjacob
d0aa61ad21 fix to accomodate change in vn_rdwr prototype 1998-07-28 20:37:33 +00:00
thorpej
6326c90134 Change the "aresid" argument of vn_rdwr() from an int * to a size_t *,
to match the new uio_resid type.
1998-07-28 18:37:47 +00:00
thorpej
e95c22ee96 Don't cast the null residual pointer passed to vn_rdwr(). 1998-07-28 18:17:34 +00:00
drochner
2dcc522f1d The fragtbl[], inside[] and around[] variables are needed by "fsck",
so we can't put them inside "#ifdef _KERNEL".
Put declarations inside .c files where needed to preserve namespace.
1998-07-28 17:30:01 +00:00
mycroft
829367f279 Omit some externs if not _KERNEL. 1998-07-28 04:17:51 +00:00
jonathan
d275e56dee * defopt COMPAT_{09,10,11,12,13} and COMPAT_NOMID.
TODO: revisit interaction between native compat and emul compat usage.
1998-07-05 08:49:30 +00:00
thorpej
0f66e53c03 Use genfs_lease_check() 1998-06-25 22:20:39 +00:00
sommerfe
7ba7fbbb23 Always include fifos; "not an option any more". 1998-06-24 20:58:44 +00:00
sommerfe
76f1116825 Don't include opt_fifo.h if not kernel... 1998-06-23 23:15:50 +00:00
sommerfe
becaafeea0 defopt for options FIFO 1998-06-22 22:00:59 +00:00
mrg
670c3dfa60 splify UVM #ifdef. 1998-06-20 13:14:53 +00:00
kleink
2d869bbacf KNF, mostly of FFS_EI changes. 1998-06-13 16:26:22 +00:00
cgd
651b44e211 Rework the way kernel include files are installed. In the new method,
as with user-land programs, include files are installed by each directory
in the tree that has includes to install.  (This allows more flexibility
as to what gets installed, makes 'partial installs' easier, and gives us
more options as to which machines' includes get installed at any given
time.)  The old SYS_INCLUDES={symlinks,copies} behaviours are _both_
still supported, though at least one bug in the 'symlinks' case is
fixed by this change.  Include files can't be build before installation,
so directories that have includes as targets (e.g. dev/pci) have to move
those targets into a different Makefile.
1998-06-12 23:22:30 +00:00
kleink
74ce7ac984 KNF: only include one of <sys/{param,types}.h>, not both. 1998-06-10 15:57:39 +00:00
scottr
7171cca4b8 Protect various config(8)-generated files from inclusion while
building LKMs.  Fixes PR 5557.
1998-06-09 07:46:31 +00:00
mikel
c1f8034333 ffs_ -> ext2fs_ in warning; art@openbsd.org 1998-06-09 06:33:22 +00:00
ragge
1a66918fc0 Wrong include file order; caused compile error on vax. 1998-06-08 17:59:08 +00:00
scottr
d48f258f90 Use the newly-defined opt_quota.h. 1998-06-08 04:27:50 +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
kleink
d4a8052f98 Fix some arithmetics lossage on typeless pointers. 1998-05-08 18:31:13 +00:00
ross
ac5774c288 Fix a 64-bit pointer/int warning. 1998-03-19 03:42:35 +00:00
bouyer
091dafd39f Add support for reading/writing FFS in non-native byte order, conditioned
to "options FFS_EI". The superblock and inodes (without blk addr) are
byteswapped at disk read/write time, other metadatas are byteswapped
when used (as they are acceeded directly in the buffer cache).
This required the addition of a "um_flags" field to struct ufsmount.
ffs_bswap.c contains superblock and inode byteswap routines also used
by userland utilities.
1998-03-18 15:57:26 +00:00
kleink
5cf59ee9ad Move the permission check in vfs_syscalls.c::change_owner() back to
ufs_chown() again - the facility required in this context would be a
filesystem-specific super-user determination, which is not available yet.
1998-03-10 11:56:40 +00:00
cgd
c35a34ab68 ext2fs_checkoverlap is (or at least seems) unused, and its prototype is
#ifdef DIAGNOSTIC.  Make the function #ifdef DIAGNOSTIC, as well, so we
don't get a warning about the function declaration not being a prototype.
1998-03-04 06:50:25 +00:00
drochner
22dbd3c3da Don't cast the quad_t file size to u_long, this can cause overflows. 1998-03-03 09:02:51 +00:00
fvdl
221505c12f Make this compile again with UVM 1998-03-03 01:49:21 +00:00
fvdl
e5209f31b8 A cookie should point to the *next* entry. Grrr. 1998-03-02 22:26:14 +00:00
bouyer
6d339338e6 Close kern/5077: When DIAGNOSTIC is defined, don't complain about
bad magic numbers at a mount attempt. A message is still printed when the
magic number is OK, but the version number or the block size is bad.
Patch from Soren S. Jorvang, but different from the one in the PR.
1998-03-02 16:13:42 +00:00
fvdl
d201db498e Remove accidentally enabled lfs_mountroot from vfsops struct. 1998-03-01 22:16:39 +00:00
fvdl
8c7c2ea123 Remove accidentally enabled mfs_mountroot from vfsops struct. 1998-03-01 22:16:01 +00:00
fvdl
7ba6a2daac Remove extraneous files from Lite2 merge. 1998-03-01 13:45:28 +00:00
fvdl
e5bc90f40c Merge with Lite2 + local changes 1998-03-01 02:20:01 +00:00
fvdl
e8d05f0741 Import 4.4BSD-Lite2 1998-03-01 02:12:49 +00:00
fvdl
b50e39fa45 Import 4.4BSD-Lite for reference 1998-03-01 02:09:33 +00:00
thorpej
95e2e3b91b Include the LFS option header. 1998-02-19 00:54:39 +00:00
drochner
ba81b6f6df add missing vfsops element 1998-02-18 17:02:20 +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
kleink
e34b0a84a9 Move some permission-checking code for file owner/group changes up to
vfs_syscalls.c::change_owner().  Also, always update the inode's change time
if the operation succeeds.
1998-02-14 19:56:30 +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
abf50cf8c3 add UVM stuff. 1998-02-07 17:28:18 +00:00
chs
f64abc7b4c add flags arg to hashinit(), to pass to malloc(). 1998-02-07 02:44: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
thorpej
df7ad322f2 Nuke spurious semicolon, from Konrad Schroder <perseant@hhhh.org>. 1998-01-13 03:30:39 +00:00
bouyer
459fd0e350 When allocating an inode with dtime set, also bzero e2di_blocks[]. 1997-10-27 14:43:41 +00:00
bouyer
89f2b833f4 Uses ext2fs_vinit not ufs_vinit.
In ext2fs, an inode is deleted either when mode == 0 or dtime != 0. If
  dtime != 0, reset others fields before using the inode, or we could end
  up with the wrong v_op in ext2fs_vinit.
While I'm there, kill a unused variable in ext2fs_readwrite
1997-10-23 11:41:16 +00:00
christos
e12c721705 Add missing cast for nlink_t 1997-10-17 02:05:34 +00:00
mjacob
949982f2a4 In calculating the f_bavail field, don't take 32 bit quantities and
multiply them by 90 (to be divided by 100) and expect them to be sane
for very large values (I was getting a negative 'avail' count).
1997-10-16 18:29:11 +00:00
enami
499f056402 Backout last change for ufs_readlink. The permission check is now done
in vfs layer.
1997-10-11 00:10:57 +00:00
bouyer
f5d86626ec Update for 64 bits directory cookies. 1997-10-10 10:00:12 +00:00
fvdl
6a0575f33e Last arg to VOP_READDIR became off_t. 1997-10-10 02:13:42 +00:00
bouyer
6ab3092b11 Add byte-swapping functions (bswap16, bswap32, bswap64) to libkern.
Only assembly version for i386 bswap16 and bswap32 for now (bswap64 uses
bswap32). Contribution of assembly versions of these are welcome.
Add byte-swapping of ext2fs metadata for big-endian systems.
Tested on i386 and sparc.
1997-10-09 15:42:19 +00:00
enami
164890a9fc In the function ufs_readlink(), check read permission before
reading link.
1997-10-03 16:45:49 +00:00
lukem
319d918511 prototype lfs_cksum ifndef KERNEL 1997-09-15 06:44:48 +00:00
bouyer
09cf6dacdf Fix bad cut&paste from ufs code: we can't align uio_resid to a directory
block size boundary, because size of the returned dir entry may be bigger than
the one read.
1997-08-04 09:11:00 +00:00
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