#
ba4f7c70 |
| 30-Apr-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Don't acquire Giant before calling b_biodone, individual consumers are now required to do so themselves.
Sponsored by: Isilon Systems, Inc.
|
#
0d12524b |
| 22-Apr-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Add two KASSERTs to prevent us from recycling a buf that is still on a bufobj list.
Sponsored by: Isilon Systems, Inc.
|
#
6c759f35 |
| 25-Mar-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Add information about the buf lock to db_show_buffer. - Add a 'show lockedbufs' command that is similar to show lockedvnods.
Sponsored by: Isilon Systems, Inc.
|
#
ec346d10 |
| 08-Mar-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Lock access to the buffer_map with the vm_map lock. In 4.x this was done with splbio, in 5.x this was done with Giant.
Discussed with: alc Reported by: julian, pho
|
#
1ba21282 |
| 10-Feb-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Make various vnode related functions static
|
#
5c18d18b |
| 10-Feb-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Add more information to the getnewbuf() recycling KTR.
Sponsored by: Isilon Systems, Inc.
|
#
b56dc9a7 |
| 09-Feb-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Remove an invalid KASSERT added in recent background write reshuffling.
Sponsored by: Isilon Systems, Inc.
|
#
dd19a799 |
| 08-Feb-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Background writes are entirely an FFS/Softupdates thing.
Give FFS vnodes a specific bufwrite method which contains all the background write stuff and then calls into the default bufwrite() for the r
Background writes are entirely an FFS/Softupdates thing.
Give FFS vnodes a specific bufwrite method which contains all the background write stuff and then calls into the default bufwrite() for the rest of the job.
Remove all the background write related stuff from the normal bufwrite.
This drags the softdep_move_dependencies() back into FFS.
Long term, it is worth looking at simply copying the data into allocated memory and issuing the bio directly and not create the "shadow buf" in the first place (just like copy-on-write is done in snapshots for instance). I don't think we really gain anything but complexity from doing this with a buf.
show more ...
|
#
83644466 |
| 05-Feb-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Don't release BKGRDINPROG until after we've bufdone'd the copy.
Sponsored by: Isilon Systems, Inc.
|
#
bd8d684f |
| 28-Jan-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Don't drop the wref on the bufobj until after bufdone() has completed. Without this, threads waiting in bufobj_wwait() may wakeup prior to bufdone() completing.
Sponsored by: Isilon Systems,
- Don't drop the wref on the bufobj until after bufdone() has completed. Without this, threads waiting in bufobj_wwait() may wakeup prior to bufdone() completing.
Sponsored by: Isilon Systems, Inc.
show more ...
|
#
8516dd18 |
| 25-Jan-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Don't use VOP_GETVOBJECT, use vp->v_object directly.
|
#
35764be3 |
| 24-Jan-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Kill the VV_OBJBUF and test the v_object for NULL instead.
|
#
71ddd673 |
| 24-Jan-2005 |
Jeff Roberson <jeff@FreeBSD.org> |
- Add CTR calls to trace the lifecycle of a buffer. - Remove some KASSERTs which are invalid if the appropriate lock is not held. - Slightly restructure bremfree() so that it is more sane. - Ch
- Add CTR calls to trace the lifecycle of a buffer. - Remove some KASSERTs which are invalid if the appropriate lock is not held. - Slightly restructure bremfree() so that it is more sane. - Change the flush code in bdwrite() to avoid acquiring a mutex whenever possible. - Change the flush code in bdwrite() to avoid holding the bufobj mutex while calling buf_countdeps(). This introduces a lock-order relationship with the softdep lock that can not otherwise be resolved. - Don't set B_DONE until bufdone() is complete, otherwise another processor may believe the buf is done before it is. - Only acquire Giant if the caller has set b_iodone. Don't grab giant around normal bufdone() calls.
Sponsored By: Isilon Systems, Inc.
show more ...
|
Revision tags: release/4.11.0_cvs, release/4.11.0 |
|
#
6ef8480a |
| 11-Jan-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Add BO_SYNC() and add a default which uses the secret vnode pointer and VOP_FSYNC() for now.
|
#
8df6bac4 |
| 11-Jan-2005 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove the unused credential argument from VOP_FSYNC() and VFS_SYNC().
I'm not sure why a credential was added to these in the first place, it is not used anywhere and it doesn't make much sense:
Remove the unused credential argument from VOP_FSYNC() and VFS_SYNC().
I'm not sure why a credential was added to these in the first place, it is not used anywhere and it doesn't make much sense:
The credentials for syncing a file (ability to write to the file) should be checked at the system call level.
Credentials for syncing one or more filesystems ("none") should be checked at the system call level as well.
If the filesystem implementation needs a particular credential to carry out the syncing it would logically have to the cached mount credential, or a credential cached along with any delayed write data.
Discussed with: rwatson
show more ...
|
#
b646893f |
| 18-Nov-2004 |
Jeff Roberson <jeff@FreeBSD.org> |
- Eliminate the acquisition and release of the bqlock in bremfree() by setting the B_REMFREE flag in the buf. This is done to prevent lock order reversals with code that must call bremfree() w
- Eliminate the acquisition and release of the bqlock in bremfree() by setting the B_REMFREE flag in the buf. This is done to prevent lock order reversals with code that must call bremfree() with a local lock held. This also reduces overhead by removing two lock operations per buf for fsync() and similar. - Check for the B_REMFREE flag in brelse() and bqrelse() after the bqlock has been acquired so that we may remove ourself from the free-list. - Provide a bremfreef() function to immediately remove a buf from a free-list for use only by NFS. This is done because the nfsclient code overloads the b_freelist queue for its own async. io queue. - Simplify the numfreebuffers accounting by removing a switch statement that executed the same code in every possible case. - getnewbuf() can encounter locked bufs on free-lists once Giant is removed. Remove a panic associated with this condition and delay asserts that inspect the buf until after it is locked.
Reviewed by: phk Sponsored by: Isilon Systems, Inc.
show more ...
|
Revision tags: release/5.3.0_cvs, release/5.3.0 |
|
#
6e67e2a7 |
| 04-Nov-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Retire b_magic now, we have the bufobj containing the same hint.
|
#
9f7a3028 |
| 04-Nov-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Change buf->b_object to buf->b_bufobj->bo_object
some whitespace fixes.
|
#
9bc4d9a4 |
| 04-Nov-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
whitespace
|
#
c5690651 |
| 04-Nov-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove buf->b_dev field.
|
#
d19ef814 |
| 03-Nov-2004 |
Alan Cox <alc@FreeBSD.org> |
The synchronization provided by vm object locking has eliminated the need for most calls to vm_page_busy(). Specifically, most calls to vm_page_busy() occur immediately prior to a call to vm_page_re
The synchronization provided by vm object locking has eliminated the need for most calls to vm_page_busy(). Specifically, most calls to vm_page_busy() occur immediately prior to a call to vm_page_remove(). In such cases, the containing vm object is locked across both calls. Consequently, the setting of the vm page's PG_BUSY flag is not even visible to other threads that are following the synchronization protocol.
This change (1) eliminates the calls to vm_page_busy() that immediately precede a call to vm_page_remove() or functions, such as vm_page_free() and vm_page_rename(), that call it and (2) relaxes the requirement in vm_page_remove() that the vm page's PG_BUSY flag is set. Now, the vm page's PG_BUSY flag is set only when the vm object lock is released while the vm page is still in transition. Typically, this is when it is undergoing I/O.
show more ...
|
#
0cbda9df |
| 29-Oct-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Remove the last call in the system to VOP_SPECSTRATEGY(): We can no longer come through the VNODE layer to the disks since all the filesystems now go via geom_vfs to GEOM.
|
#
6afb3b1c |
| 29-Oct-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Give dev_strategy() an explict cdev argument in preparation for removing buf->b-dev.
Put a bio between the buf passed to dev_strategy() and the device driver strategy routine in order to not clobber
Give dev_strategy() an explict cdev argument in preparation for removing buf->b-dev.
Put a bio between the buf passed to dev_strategy() and the device driver strategy routine in order to not clobber fields in the buf.
Assert copyright on vfs_bio.c and update copyright message to canonical text. There is no legal difference between John Dysons two-clause abbreviated BSD license and the canonical text.
show more ...
|
#
c5995e45 |
| 28-Oct-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
Lock bp->b_bufobj->b_object instead of bp->b_object
|
#
6e77a041 |
| 26-Oct-2004 |
Poul-Henning Kamp <phk@FreeBSD.org> |
The island council met and voted buf_prewrite() home.
Give ffs it's own bufobj->bo_ops vector and create a private strategy routine, (currently misnamed for forwards compatibility), which is just a
The island council met and voted buf_prewrite() home.
Give ffs it's own bufobj->bo_ops vector and create a private strategy routine, (currently misnamed for forwards compatibility), which is just a copy of the generic bufstrategy routine except we call softdep_disk_prewrite() directly instead of through the buf_prewrite() indirection.
Teach UFS about the need for softdep_disk_prewrite() and call the function directly in FFS.
Remove buf_prewrite() from the default bufstrategy() and from the global bio_ops method vector.
show more ...
|