| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
kernel dump time, especially with minidump.
|
|
|
|
|
|
|
|
| |
it is indirectly a d_close method.
Prompted by: kib
Reviewed by: mav
MFC after: 2 weeks
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the BIO_ORDERED flag for struct bio and update bio clients to use it.
The barrier semantics of bioq_insert_tail() were broken in two ways:
o In bioq_disksort(), an added bio could be inserted at the head of
the queue, even when a barrier was present, if the sort key for
the new entry was less than that of the last queued barrier bio.
o The last_offset used to generate the sort key for newly queued bios
did not stay at the position of the barrier until either the
barrier was de-queued, or a new barrier (which updates last_offset)
was queued. When a barrier is in effect, we know that the disk
will pass through the barrier position just before the
"blocked bios" are released, so using the barrier's offset for
last_offset is the optimal choice.
sys/geom/sched/subr_disk.c:
sys/kern/subr_disk.c:
o Update last_offset in bioq_insert_tail().
o Only update last_offset in bioq_remove() if the removed bio is
at the head of the queue (typically due to a call via
bioq_takefirst()) and no barrier is active.
o In bioq_disksort(), if we have a barrier (insert_point is non-NULL),
set prev to the barrier and cur to it's next element. Now that
last_offset is kept at the barrier position, this change isn't
strictly necessary, but since we have to take a decision branch
anyway, it does avoid one, no-op, loop iteration in the while
loop that immediately follows.
o In bioq_disksort(), bypass the normal sort for bios with the
BIO_ORDERED attribute and instead insert them into the queue
with bioq_insert_tail(). bioq_insert_tail() not only gives
the desired command order during insertion, but also provides
barrier semantics so that commands disksorted in the future
cannot pass the just enqueued transaction.
sys/sys/bio.h:
Add BIO_ORDERED as bit 4 of the bio_flags field in struct bio.
sys/cam/ata/ata_da.c:
sys/cam/scsi/scsi_da.c
Use an ordered command for SCSI/ATA-NCQ commands issued in
response to bios with the BIO_ORDERED flag set.
sys/cam/scsi/scsi_da.c
Use an ordered tag when issuing a synchronize cache command.
Wrap some lines to 80 columns.
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
sys/geom/geom_io.c
Mark bios with the BIO_FLUSH command as BIO_ORDERED.
Sponsored by: Spectra Logic Corporation
MFC after: 1 month
|
|
|
|
| |
be left alone for now.
|
|
|
|
|
|
|
| |
by issueing aborts for any pending commands when we're decommssioning
a disk.
MFC after: 3 months
|
|
|
|
|
| |
Approved by: mav
MFC after: 3 days
|
|
|
|
|
| |
GEOM. This information needed for proper soft-RAID's on-disk metadata
reading and writing.
|
|
|
|
|
|
| |
by timeout/error of one of probe commands, process may continue infinitely.
Make CAM ATA more robust to faulty devices and false positive detections,
abort probe after two restarts on timeouts or ten on other errors.
|
|
|
|
|
|
|
| |
locked at appropriate places.
MFC after: 1 week
X-MFC: 208752
|
|
|
|
|
|
|
|
| |
This makes things easier for target implementations to calculate how many
elements they need to allocate.
Discussed with: mjacob, gibbs
MFC after: 1 week
|
|
|
|
|
|
|
|
|
|
| |
the case of immediate unconfigure after configure. Hold the periph an
extra count while we have the task to create sysctl context outstanding
so that the periph doesn't go away unexpectedly.
Sponsored by: Panasas
Reviewed by: scsi@
MFC after: 1 month
|
|
|
|
| |
MFC after: 2 weeks
|
|
|
|
|
|
|
|
|
|
|
| |
better devices. This can be disabled on a per-device basis using quirks as
well.
This also handles the case where there is actually no connected LUN 0
(which can definitely be the case for storage arrays).
Reviewed by: scsi@
MFC after: 1 month
|
|
|
|
|
|
|
|
|
|
| |
for REPORT and SET TARGET PORT GROUP commands (foundations for future work).
Regularize opcodes to be upper case hex.
Pick *one* of tab or space after #define (tab) and stick with that.
MFC after: 2 weeks
|
|
|
|
|
|
| |
Pointy Hat To: Me
MFC after: 2 Week
X-MFC: 208896
|
|
|
|
| |
for a da unit and create a sysctl OID for it.
|
|
|
|
|
| |
Found with: Coverity Prevent(tm)
CID: 3897
|
|
|
|
|
| |
Found with: Coverity Prevent(tm)
CID: 4573
|
|
|
|
|
|
| |
Found with: Coverity Prevent(tm)
CID: 2986
MFC after: 4 days
|
|
|
|
|
|
|
|
|
|
| |
stepping oneself during probing.
Don't blindly decrement a periph probe count.
Reviewed by: scsi@
Obtained from: Alexander Motin, Atillio Rao, Others
MFC after: 1 month
|
|
|
|
|
|
|
|
|
|
|
| |
whole bus (XPT_SCAN_BUS) and a single lun on that bus (XPT_SCAN_LUN).
It's less resource comsumptive than scanning a whole bus when the
caller knows only one target has changes.
Reviewed by: scsi@
Sponsored by: Panasas
MFC after: 1 month
|
|
|
|
|
|
|
|
|
| |
hook it up to ada(4) also. While at it, rename *ad_firmware_geom_adjust()
to *ata_disk_firmware_geom_adjust() etc now that these are no longer
limited to ad(4).
Reviewed by: mav
MFC after: 3 days
|
|
|
|
|
|
|
| |
reason.
Reviewed by: mav
MFC after: 3 days
|
|
|
|
|
|
|
|
| |
previously submitted was wrong.
Point hat: mjacob
X-MFC: 207933
MFC after: 1 week
|
|
|
|
|
|
|
| |
solution.
Sponsored by: Panasas
MFC after: 1 week
|
|
|
|
|
|
|
| |
- device initiated power management (some devices support only this way);
- Automatic Partial to Slumber Transition (more power saving);
- DMA auto-activation (expected to slightly improve performance).
More features could be added later, when hardware supports.
|
|
|
|
|
|
|
| |
usual operation, but required in some conditions to make queue running
after being shrinked.
MFC after: 3 days
|
|
|
|
|
|
|
|
|
|
|
| |
As scottl@ noticed, max_target/max_lun was intended to be only a hint for
existing bus scanner. Some FC/SAS SIMs report fake values there, that are
smaller then maximum supported IDs. In that case this check makes impossible
manual scan outside hinted range.
For ATA/SATA SIMs respective check was instead implemented at SIM level.
Newer SCSI SIMs expected to have these checks at driver or firmware level.
Some older SCSI SIMs have no this check and the issues will get back there.
|
|
|
|
| |
to not confuse target ID checks at SIMs.
|
|
|
|
| |
Reprobe immediately following this should have fresh data.
|
|
|
|
| |
Move PI_TAG_ABLE check from ada driver to ATA XPT.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
d_mediasize
CD_FLAG_VALID_TOC is not required for setting those media properties.
PR: kern/145385
Submitted by: Juergen Lock <nox@jelal.kn-bremen.de>
a slightly different version
Tested by: Pavel Sukhoy <sukhoy@ripn.net>,
Markus Wild <m.wild@cybernet.ch>,
Juergen Lock <nox@jelal.kn-bremen.de>,
uqs
MFC after: 1 week
|
|
|
|
| |
race conditions in callbacks/downcalls.
|
|
|
|
| |
MFC after: 1 week
|
|
|
|
|
|
|
|
|
|
| |
xpt_done for queued requests. This solves the problem of
indefinite hangs for unspecified transports when XPT_SCAN_BUS
is called.
A few minor cosmetics elsewhere.
MFC after: 1 week
|
|
|
|
| |
MFC after: 1 month
|
|
|
|
| |
positives on VMWare's virtual CD-ROMs.
|
| |
|
|
|
|
| |
XPT_SCAN_LUN for wildcard LUN, fall back to XPT_SCAN_BUS.
|
| |
|
| |
|
| |
|
|
|
|
| |
Just restart probe from the beginning immediately.
|
| |
|
|
|
|
|
|
| |
Add Power Up In Stand-by feature support. Device with PUIS enabled
require explicit command to do initial spin-up. Mark that command
with CAM_HIGH_POWER flag, to allow CAM manage staggered spin-up.
|
|
|
|
|
|
| |
Make CAM to stop all attached devices on system shutdown.
It allows devices to park heads, reducing stress on power loss.
Add `kern.cam.power_down` tunable and sysctl to controll it.
|
|
|
|
| |
taskqueue for lock decoupling, as it causes unwanted races.
|
|
|
|
|
| |
here if device already running, as data need to be formatted before use.
- Remove some saved_ccb variables. They are unused now.
|
| |
|
|
|
|
|
| |
- Make ATA XPT to reject longer SCSI CDBs then supported by device, or
any SCSI CDBs, if device doesn't support ATAPI.
|