Commit Graph

619 Commits

Author SHA1 Message Date
fvdl
f1db177e10 Fix from FreeBSD that I missed: speed up handling of short-lived
files a bit.
2001-12-23 11:54:46 +00:00
chs
2ddcad30f6 process the delayed-free queue more often. 2001-12-23 08:53:46 +00:00
fvdl
68728c0901 ffs_reload may be called after an old fsck has run, and the pending*
fields may not be zero. Just reset them silently, it's not an error.
2001-12-19 15:20:19 +00:00
fvdl
3d8b2ffe36 Bring over fixes from FreeBSD that weren't incorporated yet, mainly
from Kirk McKusick. They implement taking pending block/inode frees
into account for the sake of correct statfs() numbers, and adding
a new softdep type (newdirblk) to correctly handle newly allocated
directory blocks.

Minor additional changes: 1) swap the newly introduced fs_pendinginodes
and fs_pendingblock fields in ffs_sb_swap, and 2) declare lkt_held
in the debug version of the softdep lock structure volatile, as it
can be modified from interrupt context #ifdef DEBUG.
2001-12-18 10:57:21 +00:00
chs
0d70d731c2 use the new compatibility routines to allow mmap() to work
(in the same non-coherent fashion that it worked pre-UBC)
until someone has time to do it the right way.
2001-12-18 07:51:16 +00:00
chs
03dd7ce1e8 when truncating a file, make sure the last block of the file is actually
allocated, since other parts of the code assume this.
2001-12-18 06:50:28 +00:00
chs
5a690c92a1 add a VOP_PUTPAGES method for all the filesystems that don't have pages,
just unlock the interlock.
2001-12-06 04:27:40 +00:00
chs
a4f1bc813a pick up changes from ufs_balloc_range(). 2001-11-30 07:06:19 +00:00
chs
9958c29316 VOP_PUTPAGES() requires page-aligned offsets, so be sure to provide such.
fixes PR 14759.

(while I'm here, call VOP_PUTPAGES() directly instead of indirecting through
the UVM pager op vector.)
2001-11-30 07:05:53 +00:00
chs
a106161b5a add spaces for KNF. confirmed to produce identical objects. 2001-11-23 21:44:25 +00:00
chs
3f9a8628df we need to hold the pageq lock while calling uvm_page_unbusy() on
pages that uvm_page_unbusy() will free.
2001-11-22 02:42:37 +00:00
lukem
4a269de9a1 fix compile error noted by itojun in [kern/14638] 2001-11-19 11:56:50 +00:00
lukem
5b0ef8ec1a be consistent and cache UFS_*NEEDSWAP results in more functions 2001-11-19 07:00:21 +00:00
simonb
f809eb7333 Set `flags' before being used in the WRITE() function. 2001-11-17 07:22:34 +00:00
lukem
2ee0a3f232 move code to calculate size of direct for a given namlen to separate
DIRECTSIZ() macro, and use this to implement a (now shorter) DIRSIZ().
inspired by freebsd
2001-11-16 16:09:17 +00:00
lukem
2565646230 don't need <sys/types.h> when including <sys/param.h> 2001-11-15 09:47:59 +00:00
chs
4b4425d13b some callers of ufs_bmaparray() in LFS depend on *nump being set to 0 for
direct blocks, so restore that behaviour.
2001-11-13 06:23:17 +00:00
chs
dc4cf974e0 track some changes in the ufs code:
update UVM's notion of the file size in *_write() rather than
*_balloc().
2001-11-10 17:48:02 +00:00
chs
c237f81065 update to track ufs_bmap.c:
don't call ufs_getlbns() for direct blocks.
2001-11-10 17:46:23 +00:00
chs
9f52e62b73 fix the previous change: use the correct test for a block number
referring to a direct block.
2001-11-10 07:11:00 +00:00
chs
81625d675b the previous fix (in rev. 1.26) for hangs when the filesystem is full
was wrong, so fix it right this time.  undo the previous change and
instead, replace the troublesome VOP_FSYNC()s with code that just flushes
the particular indirect blocks that we allocated.  this resolves the
softdeps for those blocks.  then we can change the pointer for
the first indirect block we allocated to zero, write that, and finally
invalidate all the indirect blocks we've touched.  also, wait until
after we finish all this before freeing any blocks we allocated.
fixes PRs 14413 and 14423.
2001-11-08 05:27:25 +00:00
chs
df71d3fadc in both paths that can cause fragments to be expanded (write and truncate-up),
deal with the fragment expansion separately before the rest of the operation.
this allows us to simplify ufs_balloc_range() by not worrying about implicit
fragment expansion.

call VOP_PUTPAGES() directly for vnodes instead of
going through the UVM pager "put" vector.
2001-11-08 05:24:52 +00:00
chs
0de5f1ba39 only call ufs_getlbns() for blocks which involve indirects, and assert
that this is so.  use a shift instead of a multiply in one place.
2001-11-08 05:00:51 +00:00
chs
f57fce8e9e call VOP_PUTPAGES() directly for vnodes instead of
going through the UVM pager "put" vector.
2001-11-08 04:51:05 +00:00
lukem
6ff2f2f438 add RCSID. (note; this file gets #included) 2001-11-08 02:42:31 +00:00
lukem
ec6245465a add RCSID 2001-11-08 02:39:06 +00:00
simonb
c56d879335 Remove some variables that are set but never used. 2001-11-06 07:11:29 +00:00
simonb
915441c64b Use the sector size from the partition info, not a hard-coded value. 2001-11-06 07:09:39 +00:00
simonb
ecf09baab6 Remove a variable that is set but never used. 2001-11-06 07:08:09 +00:00
simonb
bb57e2c53c Remove some bogus checks for unsigned variables < 0. 2001-11-06 06:59:05 +00:00
simonb
6129c87d2e Remove superfluous semicolon. 2001-11-06 06:40:44 +00:00
lukem
b3b9740195 add __KERNEL_RCSID() 2001-10-30 01:11:53 +00:00
lukem
80ac606906 ffs_sb_swap() fixes:
- calculate the offset and length of the postbl before byteswapping.
  problem noted by der Mouse.
- use offsetof() to determine # of fields to calculate in initial
  loop, rather than hard-coding in `52 fields'
- improve comments.
2001-10-29 11:26:35 +00:00
lukem
6f39841c03 - pull in ufsmount.h after inode.h, because the latter pulls in
quota.h which the former needs, and this makes the usage consistent
  with other files anyway
- expand the details in a few panic strings
2001-10-26 06:37:55 +00:00
lukem
99147a7648 remove #include <ufs/ufs/quota.h> where it was just to appease
<ufs/ufs/inode.h>, since the latter now includes the former.  leave the former
in source that obviously uses specific bits of it (for completeness.)
2001-10-26 05:56:06 +00:00
lukem
d0dc904dae this needs <ufs/ufs/quota.h>, so pull it in 2001-10-26 05:46:57 +00:00
lukem
a9439165d0 rename inclusion protection define from _QUOTA_ to _UFS_UFS_QUOTA_H_ 2001-10-26 05:44:29 +00:00
chs
a2e3e57398 initialize the vnode's copy of the size in lfs_ialloc(). 2001-10-14 19:06:16 +00:00
chs
eaa7f39f23 in ufs_balloc_range(), if we extend a fragment and need to write the
fragment synchronously, update the vnode's size before doing the flush.
otherwise we might only write part of the data and cause softdep's
accounting to get out of sync.  fixes PR 14201.
many thanks to enami for figuring out what was going on.
2001-10-10 06:37:53 +00:00
chs
8b8f98cdbe don't do any flush-behind for async mounts.
this matches the traditional behaviour.
2001-10-03 05:02:46 +00:00
chs
d4406ff8c9 in ffs_balloc(), clean up page cache state to avoid hangs when we
get ENOSPC. as a result of this, we now skip some of the normal cleanup
in ufs_balloc_range() in the error case.
2001-09-30 02:54:42 +00:00
chs
9f02fbe7a7 process one block at a time even when we're using the write fast path
that avoids zeroing pages.  this avoids a mess when we get ENOSPC and
softdeps are enabled.
2001-09-30 02:50:35 +00:00
chs
80373b7e54 don't depend on other headers to include sys/proc.h for us. 2001-09-28 11:59:51 +00:00
chs
299934b2ed handle allocation errors in truncate-up case. 2001-09-28 11:43:23 +00:00
chs
d288111138 undo the part of the previous revision about skipping
the put if there are no pages, that seems to cause some problem.
fix another problem with missing an splx(), spotted by enami.
2001-09-26 06:20:50 +00:00
chs
e8be8c6351 be sure to call the pager put with page-aligned offsets.
spotted by Nathan Williams.

while I'm here, move an splbio() so that we don't return without
splx()ing it if there's an error, and don't bother calling the
pager put if the vnode has no pages.
2001-09-26 05:25:03 +00:00
chs
a29a7b1934 when creating a symlink, set the vnode's copy of the size also. 2001-09-23 05:28:23 +00:00
chs
520b477a5a check early for reads beyond EOF. 2001-09-22 22:44:08 +00:00
sommerfeld
181c4513dc Add fifo_putpages() placebo so that the vnode's uobj is unlocked. 2001-09-22 22:35:18 +00:00
chs
3be896ac31 we can't assert that the inode and vnode sizes are consistent at the start
of ffs_truncate() since there are cases (eg. when ffs_write() gets ENOSPC)
where they should be different.  move the assert to the end instead.
2001-09-20 08:25:59 +00:00