summaryrefslogtreecommitdiff
path: root/sys/miscfs
AgeCommit message (Collapse)Author
2001-12-31in genfs_gop_write(), actually set the B_ASYNC flag on buffers that we'rechs
not going to wait for. this doesn't matter for real devices since we call VOP_STRATEGY() directly, but NFS uses this flag to decide whether or not to hand the buffer off to an nfsiod thread.
2001-12-31in genfs_putpages(), we must wait for any pending write i/os to completechs
if the putpages request is synchronous.
2001-12-18add some compatibility routines to allow mmap() to work non-UBCifiedchs
filesystems (in the same non-coherent fashion that they worked before).
2001-12-09replace "vnode" and "vtext" with "file" and "exec" in uvmexp field names.chs
2001-12-06add a VOP_PUTPAGES method for all the filesystems that don't have pages.chs
do all the work for destroying syncfs vnodes in vfs_deallocate_syncvnode() to make some new assertions work out.
2001-12-06be consistent, clear VONWORKLST when we take a syncer vnode off thechs
syncer list.
2001-12-06add VOP_GETPAGES and VOP_PUTPAGES methods for layered filesystems.chs
drop the interlock on the upper layer, acquire the interlock on the lower layer.
2001-12-06add a VOP_PUTPAGES method for all the filesystems that don't have pages,chs
just unlock the interlock.
2001-12-05* Allow machine-dependent code to specify hooks for ptrace(2)thorpej
(__HAVE_PTRACE_MACHDEP) and procfs (__HAVE_PROCFS_MACHDEP). These changes will allow platforms like x86 (XMM) and PowerPC (AltiVec) to export extended register sets in a sane manner. * Use __HAVE_PTRACE_MACHDEP to export x86 XMM registers (standard FP + SSE/SSE2) using PT_{GET,SET}XMMREGS (in the machdep ptrace request space). * Use __HAVE_PROCFS_MACHDEP to export x86 XMM registers via /proc/N/xmmregs in procfs.
2001-11-30PR/14781: Matthew Fredette: Clamp the number of read-ahead pages to 16 becausechristos
other code has this limit. Also while I am here, convert the magic 16 into a #define constant and use it in the appropriate places. This is a temporary fix, since all this read-ahead business is XXXUBC anyway.
2001-11-15don't need <sys/types.h> when including <sys/param.h>lukem
2001-11-10add RCSIDslukem
2001-11-07Wrap long line and remove name of argument from function prototype.enami
2001-11-07Make the size of null node hash table to desiredvnodes instead of 16.enami
2001-11-07Call hashdone where appropriate.enami
2001-11-07Cosmetic changes.enami
2001-11-07Fix typo in comment.enami
2001-11-06Remove some variables that are set but never used.simonb
2001-11-06In procfs_domem() the addr variable is only needed if PMAP_NEED_PROCWR issimonb
defined.
2001-10-03s/genfs_do_putpages/genfs_gop_write/ in uvmhist.enami
2001-09-23change spec_{read,write}() to specify the device blkno in units of DEV_BSIZEchs
rather than the device's sector size. this allows /dev/rcd0a and /dev/cd0a to return the same data. fixes PRs 3261 and 14026.
2001-09-22Add fifo_putpages() placebo so that the vnode's uobj is unlocked.sommerfeld
2001-09-21use shared locks instead of exclusive for VOP_READ() and VOP_READDIR().chs
2001-09-21when zeroing pages past EOF, don't zero the page containing EOF if itchs
already contains valid data. should fix PRs 13361 and 13436.
2001-09-15add a forward decl for struct vm_page.chs
2001-09-15interfaces and structures used by new genfs_{get,put}pages().chs
2001-09-15a whole bunch of changes to improve performance and robustness under load:chs
- remove special treatment of pager_map mappings in pmaps. this is required now, since I've removed the globals that expose the address range. pager_map now uses pmap_kenter_pa() instead of pmap_enter(), so there's no longer any need to special-case it. - eliminate struct uvm_vnode by moving its fields into struct vnode. - rewrite the pageout path. the pager is now responsible for handling the high-level requests instead of only getting control after a bunch of work has already been done on its behalf. this will allow us to UBCify LFS, which needs tighter control over its pages than other filesystems do. writing a page to disk no longer requires making it read-only, which allows us to write wired pages without causing all kinds of havoc. - use a new PG_PAGEOUT flag to indicate that a page should be freed on behalf of the pagedaemon when it's unlocked. this flag is very similar to PG_RELEASED, but unlike PG_RELEASED, PG_PAGEOUT can be cleared if the pageout fails due to eg. an indirect-block buffer being locked. this allows us to remove the "version" field from struct vm_page, and together with shrinking "loan_count" from 32 bits to 16, struct vm_page is now 4 bytes smaller. - no longer use PG_RELEASED for swap-backed pages. if the page is busy because it's being paged out, we can't release the swap slot to be reallocated until that write is complete, but unlike with vnodes we don't keep a count of in-progress writes so there's no good way to know when the write is done. instead, when we need to free a busy swap-backed page, just sleep until we can get it busy ourselves. - implement a fast-path for extending writes which allows us to avoid zeroing new pages. this substantially reduces cpu usage. - encapsulate the data used by the genfs code in a struct genfs_node, which must be the first element of the filesystem-specific vnode data for filesystems which use genfs_{get,put}pages(). - eliminate many of the UVM pagerops, since they aren't needed anymore now that the pager "put" operation is a higher-level operation. - enhance the genfs code to allow NFS to use the genfs_{get,put}pages instead of a modified copy. - clean up struct vnode by removing all the fields that used to be used by the vfs_cluster.c code (which we don't use anymore with UBC). - remove kmem_object and mb_object since they were useless. instead of allocating pages to these objects, we now just allocate pages with no object. such pages are mapped in the kernel until they are freed, so we can use the mapping to find the page to free it. this allows us to remove splvm() protection in several places. The sum of all these changes improves write throughput on my decstation 5000/200 to within 1% of the rate of NetBSD 1.5 and reduces the elapsed time for "make release" of a NetBSD 1.5 source tree on my 128MB pc to 10% less than a 1.5 kernel took.
2001-09-15add a new VFS op, vfs_reinit, which is called when desiredvnodes ischs
adjusted via sysctl. file systems that have hash tables which are sized based on the value of this variable now resize those hash tables using the new value. the max number of FFS softdeps is also recalculated. convert various file systems to use the <sys/queue.h> macros for their hash tables.
2001-09-09install miscfs/syncfs/syncfs.hassar
2001-08-31map files are zero-length.chs
2001-08-18undo the part of the last revision that made user block device accesschs
use the UBC interfaces. too many problems with that yet.
2001-08-17add definitions for UBCification of block devices.chs
2001-08-17initialize the UVM vnode size for block devices.chs
UBCify user access to block devices.
2001-08-17make genfs get/put work for block devices as well:chs
- the "fs bshift" for block devices is always DEV_BSHIFT. - retrieve the device vnode from VOP_BMAP() and use that to set b_dev in page i/o buffers.
2001-08-16KNF on previous.tv
2001-08-03bound check mount args more thoroughlyjdolecek
2001-08-02(*fs_mount): do not get the parent vnode back from namei to just release itassar
2001-07-24change vop_symlink and vop_mknod to return vpp (the created node)assar
refed, so that the caller can actually use it. update callers and file systems that implement these vnode operations
2001-07-04don't set PG_RDONLY on the lower layer's pages,chs
the lower layer needs to have control over that flag. that didn't solve the whole problem that it was trying to solve anyway. (the issue is that if we have create mappings to the lower layer, we need to get rid of those when we copy the file to the upper layer.) we'll have to figure out some other way to handle this.
2001-06-16Add DTYPE_PIPE (to be used by new pipe implementation) and handlejdolecek
it accordingly.
2001-06-14Fix a partial construction problem that can cause race conditionsthorpej
between creation of a file descriptor and close(2) when using kernel assisted threads. What we do is stick descriptors in the table, but mark them as "larval". This causes essentially everything to treat it as a non-existent descriptor, except for fdalloc(), which sees a filled slot so that it won't (incorrectly) allocate it again. When a descriptor is fully constructed, the code that has constructed it marks it as "mature" (which actually clears the "larval" flag), and things continue to work as normal. While here, gather all the code that gets a descriptor from the table into a fd_getfile() function, and call it, rather than having the same (sometimes incorrect) code copied all over the place.
2001-06-14be sure to allocate dirty zeroed pages to cover blocks we allocatechs
to resolve a write fault. fixes PR 13201. also, be sure to allocate blocks for write faults to holes even if the page is already in memory. fixes PR 13189.
2001-06-09Some more corrections by Michael K. Sanders.wiz
2001-06-07Typos and grammer fixes in comments (misc/13133 by Michael K. Sanders)wiz
2001-06-07Typos in comments (misc/13133 by Michael K. Sanders)wiz
2001-06-03let kernfs_mmap() use the default error method.chs
2001-06-03let portalfs_mmap() use the default error method.chs
2001-06-03procfs_bmap() should never be called, make it a "bad op".chs
let procfs_mmap() use the default error method.
2001-06-02replace vm_map{,_entry}_t with struct vm_map{,_entry} *.chs
2001-05-30use _KERNEL_OPTmrg