Commit Graph

734 Commits

Author SHA1 Message Date
hannken c122326822 Clear IN_SPACECOUNTED on (re-)used inodes.
This cures the "unmount pending error:" on softdep umounts.

Approved by: Frank van der Linden <fvdl@netbsd.org>
2002-12-27 16:07:13 +00:00
yamt 4b9c604ba7 - in lfs_reserve, reserve locked buffer count as well.
- don't wait for locking buf in lfs_bwrite_ext to avoid deadlocks.
- skip lfs_reserve when we're doing dirop.
  reserve more (for lfs_truncate) in set_dirop instead.

this mostly solves PR 18972. (and hopefully PR 19196)
2002-12-26 13:37:18 +00:00
yamt e9bd1836a5 don't try to write all blocks passed to lfs_markv at once
since it likely causes buf starvation.
2002-12-26 13:04:39 +00:00
yamt 362c57a2d2 add a XXX comment. (description of possible deadlock) 2002-12-22 17:31:52 +00:00
yamt 4370be165c add a XXX comment 2002-12-21 05:35:54 +00:00
yamt 0d95cc5d66 correct/add assertion. 2002-12-18 14:05:50 +00:00
yamt beff0dd387 #if 0 out vnode unlock/lock in lfs_reserve for now and add a comment about it.
deadlock is better than corruption (or panic), IMO.
2002-12-17 15:23:37 +00:00
yamt a999523301 no need for cleaner to hold vnode locks.
cleaner and normal vnode operations are synchronized enough by
seglock/fraglock and buf's B_BUSY-ness.
2002-12-17 14:37:49 +00:00
yamt b2d5b49e2b use ufs_daddr_t instead of int where appropriate. 2002-12-17 14:28:54 +00:00
yamt a79cb6db43 - in lfs_bwrite_ext, if we're cleaner,
mark inode IN_CLEANING rather then IN_MODIFIED.
  otherwise cleaned (indirect) blocks belongs to the inode isn't written
  until next sync.
- add assertions.
2002-12-14 13:41:25 +00:00
yamt e5ea55e4ea in lfs_writefile, check v_type==VNON earlier.
to avoid null dereference with DEBUG_LFS_VERBOSE.
2002-12-14 11:54:47 +00:00
yamt 8fe8a4ced8 save a segment write when doing checkpoint. 2002-12-13 14:40:02 +00:00
yamt 275b3a47a2 correct DIAGNOSTIC code for duplicated inodes in a segment and su_nbytes. 2002-12-12 12:28:13 +00:00
yamt 9097ffce96 take care of B_CLRBUF in lfs_balloc.
otherwise you'll see uninitialized blocks.
2002-12-11 13:34:14 +00:00
matt 60db16d1ff Add multiple inclusion protection for headers. Fix mismatched
variable declarations (missing const's) as needed.
2002-12-01 00:12:06 +00:00
kristerw fa033b67e7 Softdep is mature enough that it shouldn't define DEBUG and DIAGNOSTIC
unconditionally.
2002-11-30 20:27:50 +00:00
yamt 2331faab98 more XXX comment. 2002-11-27 11:36:40 +00:00
lukem 0635de35a3 Remove KDIR=, since SYS_INCLUDE=symlinks and KDIR are not supported any more. 2002-11-26 23:30:07 +00:00
yamt 42a8b926f9 eliminate i_ino from in-core inode
and use local variable instead.

ok'ed by Frank van der Linden.
2002-11-26 01:23:30 +00:00
thorpej d6f8cc841d Avoid strict-alias warnings. 2002-11-25 01:55:21 +00:00
thorpej b409a344b5 Avoid strict-alias warnings. 2002-11-25 01:44:21 +00:00
yamt 3af39ea015 in lfs_fakebuf, make corresponding buffer busy to avoid
reading blocks that isn't written yet.
it's needed because we'll update metadatas in lfs_updatemeta
before data pointed by them is actually written to disk.

XXX should be solved with fake inode/indirect blocks instead?
2002-11-24 16:39:13 +00:00
yamt 290fa35864 add a XXX comment to lfs_reserve.
* it isn't safe to unlock vp here
 * because we're passing data using inode from namei.
 * (eg. i_offset)
2002-11-24 16:09:50 +00:00
scw 7009056578 Quell an uninitialised variable warning. 2002-11-24 11:09:13 +00:00
yamt eca07565c3 make sure i_lfs_fragsize is initialized.
fix panic "lfs_writefile: more than one fragment!"
PR 18974.
2002-11-24 08:43:26 +00:00
yamt 16a26d41e8 lfs_sync should wait at lfs_writer, not lfs_dirops.
PR 18973.
2002-11-24 08:37:43 +00:00
yamt feacf34c09 lfs_reserve shouldn't block for lfs_unlockvp.
otherwise cleaner deadlocks.
PR 19134.
2002-11-24 08:32:22 +00:00
yamt 37b4f42285 blksize() macro shouldn't used for indirect blocks.
this fixes "getblk: block size invariant failed" panic.
PR 18977.
2002-11-24 08:27:00 +00:00
yamt 7d0ba73802 correct locking for lfs_rmdir. PR 18976. 2002-11-24 08:23:41 +00:00
wiz 29d58d0333 s/sqiud/squid/ in comment, reported by skrueger at europe com. 2002-11-04 16:59:37 +00:00
dbj 1d1cd19e5f use be32toh instead of ntohl, etc. 2002-11-02 19:31:09 +00:00
kristerw 58efa0630e Removed unused variables doclusterread and doclusterwrite. 2002-11-01 21:11:43 +00:00
chs ea6ddab6a8 the work-around in rev. 1.37 (turn off async) wasn't enough to prevent
hangs under heavy load.  so we now apply the more extreme version:
make MFS mounts "sync".  fixes PRs 17128 and 17321.
2002-10-24 16:41:00 +00:00
jdolecek f040fc2e24 ext2fs_remove(): use 'else' to eliminate need for goto (and improve
readibility, even)
2002-10-23 19:52:16 +00:00
jdolecek e0cc03a09b merge kqueue branch into -current
kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
2002-10-23 09:10:23 +00:00
yamt 8872a5d6af make sure to update the vnode's size even if uiomove failed.
otherwise, softdep states can't be flushed later.

ok'ed by Chuck Silvers. fix PR/16670.
2002-10-18 01:05:52 +00:00
dbj 43395bd5a8 Add support for the Apple UFS variation on ffs
This is the bulk of PR #17345

The general approach is to use a run time deteriminable value
for DIRBLKSIZ.  Additional allowances are included for using
MAXSYMLINKLEN with FS_42INODEFMT and a shift in the cylinder group
cluster summary count array.  Support is added for managing
the Apple UFS volume label.
2002-09-28 20:11:05 +00:00
provos 0f09ed48a5 remove trailing \n in panic(). approved perry. 2002-09-27 15:35:29 +00:00
simonb ad2a80f193 Move a brace that is in the wrong position when changes from FreeBSD
were added in rev 1.51.  This may fix the "N lost blocks" problem some
people have noticed.
Reviewed by fvdl.
2002-09-26 21:35:27 +00:00
jdolecek a120eaa3ea use ufs_balloc_range() rather than local (mostly identical, but with some
bugs) ext2fs variant
2002-09-26 11:06:36 +00:00
thorpej 71404bb533 Don't include <sys/map.h>. 2002-09-25 22:21:01 +00:00
jdolecek e305eb63e8 don't need <sys/conf.h> here 2002-09-22 19:32:54 +00:00
christos 6f3945a88d MNT_GETARGS support 2002-09-21 18:10:34 +00:00
gehenna 77a6b82b27 Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

	device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
  by using this grammer.

- Added the new naming convention.
  The name of the device switch must be <prefix>_[bc]devsw for auto-generation
  of device switch tables.

- The backward compatibility of loading block/character device
  switch by LKM framework is broken. This is necessary to convert
  from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
  We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
  the LKM framework will refer it to assign device major number dynamically.
2002-09-06 13:18:43 +00:00
thorpej 139cdc3125 Make nbuf, nswbuf, and bufpages unsigned. Make all operations on these
variables unsigned, and update places where their values are printed.
2002-08-25 20:21:33 +00:00
itojun 8dd04cdcd7 correct range check, have overflow check, fix type mismatches,
for cmap args and some other calls.  from openbsd
2002-08-03 00:12:48 +00:00
soren 178d83d503 Die, qaddr_t, die! - mnt_data in struct mount is already effectively
a void *, so stop pretending otherwise.
2002-07-30 07:40:07 +00:00
wiz 645df36eff Spell '[Rr]ight' correctly. From Jim Bernard. 2002-07-26 14:11:34 +00:00
hannken 7de36862a8 Rename bufq_init() to bufq_alloc().
Add bufq_free() to remove a buffer queue.
Avoid MALLOC while holding a spinlock.

From Chuck Silvers.
2002-07-21 15:32:17 +00:00
hannken d4c062b4cc Convert to new device buffer queue interface. 2002-07-19 16:26:01 +00:00