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