| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
and swapgeom_done() to perform swp_pager_async_iodone() without Giant.
Reviewed by: tegge
|
|
|
|
| |
revision 1.315.
|
| |
|
|
|
|
|
| |
NULL. See revision 1.421 for more detail.
- Remove GIANT_REQUIRED from vfs_unbusy_pages(). Discussed with: jeff
|
|
|
|
| |
to see that the originating code already did it right.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
accurate reporting of multi-terabyte filesystem sizes.
You should build and boot a new kernel BEFORE doing a `make world'
as the new kernel will know about binaries using the old statfs
structure, but an old kernel will not know about the new system
calls that support the new statfs structure. Running an old kernel
after a `make world' will cause programs such as `df' that do a
statfs system call to fail with a bad system call.
Reviewed by: Bruce Evans <bde@zeta.org.au>
Reviewed by: Tim Robbins <tjr@freebsd.org>
Reviewed by: Julian Elischer <julian@elischer.org>
Reviewed by: the hoards of <arch@freebsd.org>
Sponsored by: DARPA & NAI Labs.
|
|
|
|
|
|
| |
consistency initialized. Consequently, a number of conditionals that
checked the validity of b_object before passing it to VM_OBJECT_LOCK()
and VM_OBJECT_UNLOCK() are no longer needed.
|
|
|
|
|
|
|
| |
waitrunningbufspace() calls so that they are always able to
proceed and clean up buffer space.
Submitted by: Brian Fundakowski Feldman <green@freebsd.org>
|
|
|
|
|
|
|
| |
per-thread td_pflag which doesn't require any locks to read or write as it
is only read or written by curthread on itself.
Glanced at by: mckusick
|
|
|
|
| |
away.
|
|
|
|
|
| |
This is to synchronize access to the vm page's valid field by
vm_page_set_validclean().
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the point where it being a macro is no longer sensible, and it will
only be more so in days to come.
BIO_STRATEGY() is now only used from DEV_STRATEGY() and should not
be used directly anymore.
Put the contents of both in the new function dev_strategy() and
make DEV_STRATEGY() call that function.
In addition, this allows us to make the rather magic bufdonebio()
helper function static.
This alse saves hunderedandsome bytes of code in a typical kernel.
|
|
|
|
|
|
| |
Pointy hat: jeff
Found by: robert
Obtained from: kirk
|
|
|
|
|
|
| |
"bogus" page.
Found by: tegge
|
|
|
|
|
| |
by using the lock from its containing object.
- Remove GIANT_REQUIRED from vm_hold_load_pages().
|
|
|
|
|
|
|
|
| |
caused snapshot related problems.
- The vp can not be NULL here or we would panic in vfs_bio_awrite(). Stop
confusing the logic by checking for it in several places.
Submitted by: kirk and then rototilled by me to remove vp == NULL checks.
|
|
|
|
|
| |
vm page's valid field. This field is being synchronized using the
containing vm object's lock.
|
|
|
|
|
|
| |
vm_page_is_valid().
- Assert that the lock on the containing vm object is held in
vm_page_is_valid().
|
|
|
|
|
|
|
| |
freed belong to the kernel object.)
- Increase the granularity of the vm object locking in vm_hold_load_pages()
in order to reduce the number of times that we acquire and release the
same lock.
|
| |
|
|
|
|
|
|
|
|
| |
pmap_extract_and_hold(). Note, however, that GIANT_REQUIRED should not be
removed until all platforms fully implement the "prot" parameter to
pmap_extract_and_hold().
Reviewed by: tegge
|
|
|
|
|
|
|
| |
bail out if the buffer is not already present.
- The buffer returned by incore() is not locked and should not be sent to
brelse(). Use getblk() with the new GB_NOCREAT flag to preserve the
desired semantics.
|
|
|
|
| |
brelse().
|
|
|
|
|
|
| |
interlock in that case.
Found by: alc
|
|
|
|
|
| |
a long type and explicitly cast m->valid and m->dirty to unsigned long.
When PAGE_SIZE is 32K, these fields are in fact unsigned long.
|
|
|
|
| |
Reviewed by: rwatson
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Surround all accesses of the BKGRD{WAIT,INPROG} flags with the vnode
interlock.
- Don't use the B_LOCKED flag and QUEUE_LOCKED for background write
buffers. Check for the BKGRDINPROG flag before recycling or throwing
away a buffer. We do this instead because it is not safe for us to move
the original buffer to a new queue from the callback on the background
write buffer.
- Remove the B_LOCKED flag and the locked buffer queue. They are no longer
used.
- The vnode interlock is used around checks for BKGRDINPROG where it may
not be strictly necessary. If we hold the buf lock the a back-ground
write will not be started without our knowledge, one may only be
completed while we're not looking. Rather than remove the code, Document
two of the places where this extra locking is done. A pass should be
done to verify and minimize the locking later.
|
|
|
|
| |
vm_page_set_invalid().
|
|
|
|
|
| |
This only protects the "struct buf" consumers (ie: DEV_STRATEGY()),
but does not protect BIO_STRATEGY() users.
|
|
|
|
|
|
| |
by using VM_ALLOC_NOOBJ to allocate the bogus page.
Reviewed by: tegge
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
deadlocks with vnode backed md(4) devices because md now uses a
kthread to run the bio requests instead of doing it directly from
the bio down path.
|
|
|
|
| |
lock when accessing the vm_object's flags or calling vm_page_lookup().
|
| |
|
| |
|
|
|
|
| |
- Assert that the vm_object lock is held in vm_object_pip_subtract().
|
|
|
|
|
| |
- Assert that the vm_object lock is held in vm_object_pip_wakeupn().
- Add a new macro VM_OBJECT_LOCK_ASSERT().
|
| |
|
|
|
|
| |
Reviewed by: tegge
|
|
|
|
|
|
|
| |
if it is invalid.
o Remove a debugging printf() from vmapbuf().
Suggested by: tegge
|
|
|
|
|
| |
Collect all the bits of bioqueue handing in subr_disk.c, vfs_bio.c is big
enough as it is and disksort already lives in subr_disk.c.
|
|
|
|
|
| |
O_DIRECT descriptor status flag is set and both offset and length is a
multiple of the physical media sector size.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
where physical addresses larger than virtual addresses, such as i386s
with PAE.
- Use this to represent physical addresses in the MI vm system and in the
i386 pmap code. This also changes the paddr parameter to d_mmap_t.
- Fix printf formats to handle physical addresses >4G in the i386 memory
detection code, and due to kvtop returning vm_paddr_t instead of u_long.
Note that this is a name change only; vm_paddr_t is still the same as
vm_offset_t on all currently supported platforms.
Sponsored by: DARPA, Network Associates Laboratories
Discussed with: re, phk (cdevsw change)
|
|
|
|
|
| |
%j in printfs, so put a newsted include in <sys/systm.h> where the printf
prototype lives and save everybody else the trouble.
|
|
|
|
|
|
|
|
|
|
| |
- Create a new function bdone() which sets B_DONE and calls wakup(bp). This
is suitable for use as b_iodone for buf consumers who are not going
through the buf cache.
- Create a new function bwait() which waits for the buf to be done at a set
priority and with a specific wmesg.
- Replace several cases where the above functionality was implemented
without locking with the new functions.
|