DragonFly commits List (threaded) for 2005-03
cvs commit: src/sys/kern kern_msfbuf.c src/sys/sys msfbuf.h src/sys/vfs/nfs nfs_bio.c src/sys/vm vm_page.h
dillon 2005/03/03 16:44:49 PST
DragonFly src repository
This is a major revamping of our MSFBUF API. MSFBUFs are used to map
things into kernel memory so the kernel and device drivers which require
such mappings can easily get them. MSFBUFs will soon replace the buffer
cache's KVA mapping code, be used in the journaling code, get and put pages,
reverse-map local kernel buffers, as well as other things.
The eventual goal is to make KVA mappings completely optional and pass
XIOs down the I/O chain, and if a device driver needs a mapping it would
then be able to use an MSFBUF to get it. This in turn will allow the
buffer cache to manage much larger data sets and remove the absurdly low
dirty data buffer limitations we currently have.
* Replace the hash table with a simple hint in the vm_page structure.
Currently we do not avoid the overhead of populating an XIO structure or
regenerating the page list, but the use of qenter2 does avoid the invltlb
overhead. The API and internal structure is designed to allow far better
optimizations of XIO mappings in the future.
* Remove MSFBUF sharing. Sharing does not occur very often and not doing
it allows an msfbuf to inherit certain context-sensitive information
such as a supplied XIO pointer, cpu affinity (for NUMA), easier SMP
* Take advantage of the recent XIO changes.
* Add API routines to generate MSFBUFs from various sources, including
page lists, XIO's, user bufs, kernel bufs, and soon UIO's.
Submitted-by: Collaboration between Hiten Pandya and Matt Dillon
Revision Changes Path
1.10 +219 -116 src/sys/kern/kern_msfbuf.c
1.8 +32 -12 src/sys/sys/msfbuf.h
1.19 +4 -2 src/sys/vfs/nfs/nfs_bio.c
1.18 +4 -0 src/sys/vm/vm_page.h