#
2642f6b2 |
| 27-Jun-2013 |
Peter Grehan <grehan@FreeBSD.org> |
IFC @ r252288
|
#
9985113b |
| 26-Jun-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
In the Xen block front driver, take advantage of backends that support cache flush and write barrier commands.
sys/dev/xen/blkfront/block.h: Add per-command flag that specifies that the I/O queue m
In the Xen block front driver, take advantage of backends that support cache flush and write barrier commands.
sys/dev/xen/blkfront/block.h: Add per-command flag that specifies that the I/O queue must be frozen after this command is dispatched. This is used to implement "single-stepping".
Remove the unused per-command flag that indicates a polled command.
Add block device instance flags to record backend features.
Add a block device instance flag to indicate the I/O queue is frozen until all outstanding I/O completes.
Enhance the queue API to allow the number of elements in a queue to be interrogated.
Prefer "inline" to "__inline".
sys/dev/xen/blkfront/blkfront.c: Formalize queue freeze semantics by adding methods for both global and command-associated queue freezing.
Provide mechanism to freeze the I/O queue until all outstanding I/O completes. Use this to implement barrier semantics (BIO_ORDERED) when the backend does not support BLKIF_OP_WRITE_BARRIER commands.
Implement BIO_FLUSH as either a BLKIF_OP_FLUSH_DISKCACHE command or a 0 byte write barrier. Currently, all publicly available backends perform a diskcache flush when processing barrier commands, and this frontend behavior matches what is done in Linux.
Simplify code by using new queue length API.
Report backend features during device attach and via sysctl.
Submitted by: Roger Pau Monné Submitted by: gibbs (Merge with new driver queue API, sysctl support)
show more ...
|
#
46b01b2c |
| 21-Jun-2013 |
Peter Grehan <grehan@FreeBSD.org> |
IFC @ r252047
|
#
cfe30d02 |
| 19-Jun-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge fresh head.
|
#
b834eea6 |
| 16-Jun-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
sys/dev/xen/blkfront/blkfront.c: In xbd_thaw(), fix inverted logic to verify the queue is frozen before attempting a thaw.
MFC after: 1 week
|
#
127a9483 |
| 15-Jun-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Properly track the different reasons new I/O is temporarily disabled, and only re-enable I/O when all reasons have cleared.
sys/dev/xen/blkfront/block.h: In the block front driver softc, replace th
Properly track the different reasons new I/O is temporarily disabled, and only re-enable I/O when all reasons have cleared.
sys/dev/xen/blkfront/block.h: In the block front driver softc, replace the boolean XBDF_FROZEN flag with a count of commands and driver global issues that freeze the I/O queue. So long xbd_qfrozen_cnt is non-zero, I/O is halted.
Add flags to xbd_flags for tracking grant table entry and free command resource shortages. Each of these classes can increment xbd_qfrozen_cnt at most once.
Add a command flag (XBDCF_ASYNC_MAPPING) that is set whenever the initial mapping attempt of a command fails with EINPROGRESS.
sys/dev/xen/blkfront/blkfront.c: In xbd_queue_cb(), use new XBDCF_ASYNC_MAPPING flag to definitively know if an async bus dmamap load has occurred.
Add xbd_freeze() and xbd_thaw() helper methods for managing xbd_qfrozen_cnt and use them to implement all queue freezing logic.
Add missing "thaw" to restart I/O processing once grant references become available.
Sponsored by: Spectra Logic Corporation
show more ...
|
#
e2c1fe90 |
| 14-Jun-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Improve debugger visibility into queuing functions by removing the macro scheme for defining inline command queuing functions.
Prefer enums to #defines.
sys/dev/xen/blkfront/block.h Replace inline
Improve debugger visibility into queuing functions by removing the macro scheme for defining inline command queuing functions.
Prefer enums to #defines.
sys/dev/xen/blkfront/block.h Replace inline function generation performed by the XBDQ_COMMAND_QUEUE() macro with single instances of each inline function (init, enqueue, dequeue, remove). This was made possible by using queue indexes instead of bit flags in the command structure, and passing the index enum as an argument to the functions.
Improve panic/assert messages in the queue functions.
Combine queue data and stats into a single data structure and declare an array of them instead of each queue individually.
Convert command flags, softc state, and softc flags to enums.
sys/dev/xen/blkfront/blkfront.c Mechanical adjustments for new queue api.
Sponsored by: Spectra Logic Corporation MFC after: 1 week
show more ...
|
Revision tags: release/8.4.0 |
|
#
7283d236 |
| 01-Jun-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
sys/dev/xen/blkfront/blkfront.c: Remove dead code.
Sponsored by: Spectra Logic Corporation MFC after: 1 week
|
#
d9fab01d |
| 01-Jun-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
sys/dev/xen/blkfront/blkfront.c: Remove local, and incorrect, definition for the value of an invalid grant reference.
Extract ring cleanup code into xbd_free_ring() function for symetry with xbd
sys/dev/xen/blkfront/blkfront.c: Remove local, and incorrect, definition for the value of an invalid grant reference.
Extract ring cleanup code into xbd_free_ring() function for symetry with xbd_alloc_ring(). This process also eliminated an initialized but unused variable.
Sponsored by: Spectra Logic Corporation MFC after: 1 week
show more ...
|
#
cdf5d66f |
| 01-Jun-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Style changes. No intended functional changes.
o rename flush_requests => xbd_flush_requests o rename xbd_setup_ring => xbd_alloc_ring
Sponsored by: Spectra Logic Corporation MFC after: 1 week
|
#
fac3fd80 |
| 01-Jun-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Style cleanups. No intended functional changes.
o Group functions by by their functionality. o Remove superfluous declarations. o Remove more unused (#ifdef'd out) code.
Sponsored by: Spectra L
Style cleanups. No intended functional changes.
o Group functions by by their functionality. o Remove superfluous declarations. o Remove more unused (#ifdef'd out) code.
Sponsored by: Spectra Logic Corporation
show more ...
|
#
33eebb6a |
| 31-May-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Style cleanups. No intended functional changes.
o This driver is the "xbd" driver, not the "blkfront", "blkif", "xbf", or "xb" driver. Use the "xbd_" naming conventions for all functions, s
Style cleanups. No intended functional changes.
o This driver is the "xbd" driver, not the "blkfront", "blkif", "xbf", or "xb" driver. Use the "xbd_" naming conventions for all functions, structures, and constants. o The prevailing convention for structure fields in this driver is to prefix them with an abreviation of the structure type. Update "recently added" fields to match this style. o Remove unused data structures. o Remove superfluous casts. o Make a pass over the whole driver and bring it closer to style(9) conformance.
Sponsored by: Spectra Logic Corporation MFC after: 1 week
show more ...
|
#
5e58295a |
| 31-May-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Apply the ad* => ada* IDE device name transition to the Xen block front driver.
Submitted by: Bei Guan <gbtju85@gmail.com> Reviewed by: gibbs MFC after: 1 week
|
Revision tags: release/9.1.0 |
|
#
23090366 |
| 04-Nov-2012 |
Simon J. Gerraty <sjg@FreeBSD.org> |
Sync from head
|
#
de720122 |
| 15-Jul-2012 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge head r236710 through r238467.
|
#
6cf87ec8 |
| 13-Jul-2012 |
Xin LI <delphij@FreeBSD.org> |
IFC @238412.
|
#
b652778e |
| 11-Jul-2012 |
Peter Grehan <grehan@FreeBSD.org> |
IFC @ r238370
|
#
c3fb2891 |
| 24-Jun-2012 |
Kenneth D. Merry <ken@FreeBSD.org> |
Fix a bug which causes a panic in daopen(). The panic is caused by a da(4) instance going away while GEOM is still probing it.
In this case, the GEOM disk class instance has been created by disk_cre
Fix a bug which causes a panic in daopen(). The panic is caused by a da(4) instance going away while GEOM is still probing it.
In this case, the GEOM disk class instance has been created by disk_create(), and the taste of the disk is queued in the GEOM event queue.
While that event is queued, the da(4) instance goes away. When the open call comes into the da(4) driver, it dereferences the freed (but non-NULL) peripheral pointer provided by GEOM, which results in a panic.
The solution is to add a callback to the GEOM disk code that is called when all of its resources are cleaned up. This is implemented inside GEOM by adding an optional callback that is called when all consumers have detached from a provider, and the provider is about to be deleted.
scsi_cd.c, scsi_da.c: In the register routine for the cd(4) and da(4) routines, acquire a reference to the CAM peripheral instance just before we call disk_create().
Use the new GEOM disk d_gone() callback to register a callback (dadiskgonecb()/cddiskgonecb()) that decrements the peripheral reference count once GEOM has finished cleaning up its resources.
In the cd(4) driver, clean up open and close behavior slightly. GEOM makes sure we only get one open() and one close call, so there is no need to set an open flag and decrement the reference count if we are not the first open.
In the cd(4) driver, use cam_periph_release_locked() in a couple of error scenarios to avoid extra mutex calls.
geom.h: Add a new, optional, providergone callback that is called when a provider is about to be deleted.
geom_disk.h: Add a new d_gone() callback to the GEOM disk interface.
Bump the DISK_VERSION to version 2. This probably should have been done after a couple of previous changes, especially the addition of the d_getattr() callback.
geom_disk.c: Add a providergone callback for the disk class, g_disk_providergone(), that calls the user's d_gone() callback if it exists.
Bump the DISK_VERSION to 2.
geom_subr.c: In g_destroy_provider(), call the providergone callback if it has been provided.
In g_new_geomf(), propagate the class's providergone callback to the new geom instance.
blkfront.c: Callers of disk_create() are supposed to pass in DISK_VERSION, not an explicit disk API version number. Update the blkfront driver to do that.
disk.9: Update the disk(9) man page to include information on the new d_gone() callback, as well as the previously added d_getattr() callback, d_descr field, and HBA PCI ID fields.
MFC after: 5 days
show more ...
|
#
6a068746 |
| 15-May-2012 |
Alexander Motin <mav@FreeBSD.org> |
MFC
|
#
38f1b189 |
| 26-Apr-2012 |
Peter Grehan <grehan@FreeBSD.org> |
IFC @ r234692
sys/amd64/include/cpufunc.h sys/amd64/include/fpu.h sys/amd64/amd64/fpu.c sys/amd64/vmm/vmm.c
- Add API to allow vmm FPU state init/save/restore.
FP stuff discussed with: kib
|
Revision tags: release/8.3.0_cvs, release/8.3.0 |
|
#
8833b15f |
| 03-Apr-2012 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge head r232686 through r233825 into projects/pf/head.
|
#
0d172324 |
| 25-Mar-2012 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Correct failure to attach the PV block front device on Citrix XenServer configurations that advertise the multi-page ring extension, but only allow a single page of ring space.
sys/dev/xen/blkfront/
Correct failure to attach the PV block front device on Citrix XenServer configurations that advertise the multi-page ring extension, but only allow a single page of ring space.
sys/dev/xen/blkfront/blkfront.c: If only one page of ring space is being used, do not publish in the XenStore the number of pages in use (1), via either of the supported multi-page ring extension schemes.
Single page operation is the same with or without the ring-page extension being negotiated. Relying on the legacy behavior avoids an incompatible difference in how the two ring-page extension schemes that are out in the wild, deal with the base case of a single page. The Amazon/Red Hat drivers use the same XenStore variable as if the extension was not negotiated. The Citrix drivers assume the new ring reference XenStore variables will be available
Reported by: Oliver Schonefeld <schonefeld@ids-mannheim.de> MFC after: 3 days
show more ...
|
#
6ac6f295 |
| 12-Mar-2012 |
Scott Long <scottl@FreeBSD.org> |
Final pass at having devices use their bus parent for dma tags. The remaining drivers that haven't been converted have various problems or complexities that will be dealt with later. This list incl
Final pass at having devices use their bus parent for dma tags. The remaining drivers that haven't been converted have various problems or complexities that will be dealt with later. This list includes:
hptrr, hptmv, hpt27xx - device aggregation across multiple parents drm - want to talk to the maintainer first tsec, sec - Openfirmware devices, not sure if changes are warranted fatm - Done except for unused testing code usb - want to talk to the maintainer first ce, cp, ctau, cx - Significant driver changes needed to convey parent info
There are also devices tucked into architecture subtrees that I'll leave for the respective maintainers to deal with.
show more ...
|
#
9dba179d |
| 17-Feb-2012 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
IFC @231845
Sponsored by: Cisco Systems, Inc.
|
#
443cc4d4 |
| 16-Feb-2012 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Fix a bug in the calculation of the maximum I/O request size. The previous code did not limit the I/O request size based on the maximum number of segments supported by the back-end. In current pract
Fix a bug in the calculation of the maximum I/O request size. The previous code did not limit the I/O request size based on the maximum number of segments supported by the back-end. In current practice, since the only back-end supporting chained requests is the FreeBSD implementation, this limit was never exceeded.
sys/dev/xen/blkfront/block.h: Add two macros, XBF_SEGS_TO_SIZE() and XBF_SIZE_TO_SEGS(), to centralize the logic of reserving a segment to deal with non-page-aligned I/Os.
sys/dev/xen/blkfront/blkfront.c: o When negotiating transfer parameters, limit the max_request_size we use and publish, if it is greater than the maximum, unaligned, I/O we can support with the number of segments advertised by the backend. o Don't unilaterally reduce the I/O size published to the disk layer by a single page. max_request_size is already properly limited in the transfer parameter negotiation code. o Fix typos in printf strings: "max_requests_segments" -> "max_request_segments" "specificed" -> "specified"
MFC after: 1 day
show more ...
|