Revision tags: release/8.4.0 |
|
#
9fe9ba5b |
| 26-Apr-2013 |
Steven Hartland <smh@FreeBSD.org> |
Teach GEOM and CAM about the difference between the max "size" of r/w and delete requests.
sys/geom/geom_disk.h: - Added d_delmaxsize which represents the maximum size of individual
Teach GEOM and CAM about the difference between the max "size" of r/w and delete requests.
sys/geom/geom_disk.h: - Added d_delmaxsize which represents the maximum size of individual device delete requests in bytes. This can be used by devices to inform geom of their size limitations regarding delete operations which are generally different from the read / write limits as data is not usually transferred from the host to physical device.
sys/geom/geom_disk.c: - Use new d_delmaxsize to calculate the size of chunks passed through to the underlying strategy during deletes instead of using read / write optimised values. This defaults to d_maxsize if unset (0).
- Moved d_maxsize default up so it can be used to default d_delmaxsize
sys/cam/ata/ata_da.c: - Added d_delmaxsize calculations for TRIM and CFA
sys/cam/scsi/scsi_da.c: - Added re-calculation of d_delmaxsize whenever delete_method is set.
- Added kern.cam.da.X.delete_max sysctl which allows the max size for delete requests to be limited. This is useful in preventing timeouts on devices who's delete methods are slow. It should be noted that this limit is reset then the device delete method is changed and that it can only be lowered not increased from the device max.
Reviewed by: mav Approved by: pjd (mentor)
show more ...
|
#
252c094e |
| 15-Apr-2013 |
Ivan Voras <ivoras@FreeBSD.org> |
Introduce a symbol for the GEOM class name instead of using the ad-hoc string constant.
|
#
69e6d7b7 |
| 12-Apr-2013 |
Simon J. Gerraty <sjg@FreeBSD.org> |
sync from head
|
#
0fb832fd |
| 05-Apr-2013 |
Alexander Motin <mav@FreeBSD.org> |
Following r241022, replace iteration over the provider list on media events by taking first one and asserting that there is no others.
MFC after: 1 week
|
#
30ba7471 |
| 25-Mar-2013 |
Alexander Motin <mav@FreeBSD.org> |
In GEOM DISK: - Replace single done mutex with per-disk ones. On system with several disks on several HBAs that removes small, but measurable lock congestion. - Modify disk destruction process to
In GEOM DISK: - Replace single done mutex with per-disk ones. On system with several disks on several HBAs that removes small, but measurable lock congestion. - Modify disk destruction process to not destroy the mutex prematurely. - Remove some extra pointer derefences.
show more ...
|
#
f8c19ba4 |
| 19-Mar-2013 |
Konstantin Belousov <kib@FreeBSD.org> |
A flag for the geom disk driver to indicate that it accepts the unmapped i/o requests.
Sponsored by: The FreeBSD Foundation Tested by: pho
|
Revision tags: release/9.1.0 |
|
#
300675f6 |
| 27-Nov-2012 |
Alexander Motin <mav@FreeBSD.org> |
MFC
|
#
e477abf7 |
| 27-Nov-2012 |
Alexander Motin <mav@FreeBSD.org> |
MFC @ r241285
|
#
a10c6f55 |
| 11-Nov-2012 |
Neel Natu <neel@FreeBSD.org> |
IFC @ r242684
|
#
23090366 |
| 04-Nov-2012 |
Simon J. Gerraty <sjg@FreeBSD.org> |
Sync from head
|
#
1af2d09b |
| 29-Oct-2012 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Fix locking problem in disk_resize(); previously it would run without topology lock, resulting in assertion when running with DIAGNOSTIC.
Reviewed by: mav (earlier version)
|
#
5d8a6a10 |
| 28-Sep-2012 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Remove the topology lock from disk_gone(), it might be called with regular mutexes held and the topology lock is an sx lock.
The topology lock was there to protect traversing through the list of pro
Remove the topology lock from disk_gone(), it might be called with regular mutexes held and the topology lock is an sx lock.
The topology lock was there to protect traversing through the list of providers of disk's geom, but it seems that disk's geom has always exactly one provider.
Change the code to call g_wither_provider() for this one provider, which is safe to do without holding the topology lock and assert that there is indeed only one provider.
Discussed with: ken MFC after: 1 week
show more ...
|
#
171f6b3a |
| 22-Sep-2012 |
Pawel Jakub Dawidek <pjd@FreeBSD.org> |
Use the topology lock to protect list of providers while withering them. It is possible that provider is destroyed while we are iterating over the list.
Reported by: Brian Parkison <parkison@panzura
Use the topology lock to protect list of providers while withering them. It is possible that provider is destroyed while we are iterating over the list.
Reported by: Brian Parkison <parkison@panzura.com> Discussed with: phk MFC after: 1 week
show more ...
|
#
85f5b9aa |
| 18-Sep-2012 |
Andriy Gapon <avg@FreeBSD.org> |
g_disk_flushcache definitely should not be traced under G_T_TOPOLOGY
... use G_T_BIO instead
MFC after: 1 week
|
#
24bf3585 |
| 04-Sep-2012 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge head r233826 through r240095.
|
#
24d1105d |
| 28-Aug-2012 |
Ed Schouten <ed@FreeBSD.org> |
Remove unneeded G_PF_CANDELETE flag.
This flag is only used by GEOM so it can be propagated to the character device's SI_CANDELETE. Unfortunately, SI_CANDELETE seems to do nothing.
|
#
e11b6fa3 |
| 03-Aug-2012 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge head r233826 through r239010.
|
#
3631c638 |
| 29-Jul-2012 |
Alexander Motin <mav@FreeBSD.org> |
Implement media change notification for DA and CD removable media devices. It includes three parts: 1) Modifications to CAM to detect media media changes and report them to disk(9) layer. For modern
Implement media change notification for DA and CD removable media devices. It includes three parts: 1) Modifications to CAM to detect media media changes and report them to disk(9) layer. For modern SATA (and potentially UAS) devices it utilizes Asynchronous Notification mechanism to receive events from hardware. Active polling with TEST UNIT READY commands with 3 seconds period is used for incapable hardware. After that both CD and DA drivers work the same way, detecting two conditions: "NOT READY: Medium not present" after medium was detected previously, and "UNIT ATTENTION: Not ready to ready change, medium may have changed". First one reported to disk(9) as media removal, second as media insert/change. To reliably receive second event new AC_UNIT_ATTENTION async added to make UAs broadcasted to all periphs by generic error handling code in cam_periph_error(). 2) Modifications to GEOM core to handle media remove and change events. Media removal handled by spoiling all consumers attached to the provider. Media change event also schedules provider retaste after spoiling to probe new media. New flag G_CF_ORPHAN was added to consumers to reflect that consumer is in process of destruction. It allows retaste to create new geom instance of the same class, while previous one is still dying. 3) Modifications to some GEOM classes: DEV -- to report media change events to devd; VFS -- to handle spoiling same as orphan to prevent accessing replaced media. PART class already handles spoiling alike to orphan.
Reviewed by: silence on geom@ and scsi@ Tested by: avg Sponsored by: iXsystems, Inc. / PC-BSD MFC after: 2 months
show more ...
|
#
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
|
#
bc97ce36 |
| 07-Jul-2012 |
Edward Tomasz Napierala <trasz@FreeBSD.org> |
Add disk_resize(), to make it possible for the disk drivers such as da(4) to notify GEOM about LUN size change.
Reviewed by: mav (earlier version) Sponsored by: FreeBSD Foundation
|
#
c76a6fe7 |
| 27-Jun-2012 |
Kenneth D. Merry <ken@FreeBSD.org> |
In g_disk_providergone(), don't continue if the softc is NULL. This may be the case if we've already gone through g_disk_destroy().
Reported by: Michael Butler <imb@protected-networks.net> MFC afte
In g_disk_providergone(), don't continue if the softc is NULL. This may be the case if we've already gone through g_disk_destroy().
Reported by: Michael Butler <imb@protected-networks.net> MFC after: 3 days
show more ...
|
#
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 ...
|
Revision tags: release/8.3.0_cvs, release/8.3.0 |
|
#
8fa0b743 |
| 23-Jan-2012 |
Xin LI <delphij@FreeBSD.org> |
IFC @230489 (pending review).
|