Age | Commit message (Collapse) | Author |
|
their types to fit the iopools api rather than doing awful typecasts to
shove them into iopool_init.
|
|
is causing problems when trying to boot sparc64 from an isp(4).
Verified to fix the sparc64/isp(4) regression by krw@; ok deraadt@
|
|
saa_luns instead of adapter_buswidth and luns in the prototype link.
ok dlg@, miod@
|
|
1) Allocating with M_WAITOK, checking for NULL, and calling panic() is
pointless (malloc() will panic if it can't allocate) so remove the check
and the call.
2) Allocating with M_WAITOK, checking for NULL, and then gracefully
handling failure to allocate is pointless. Instead also pass M_CANFAIL
so malloc() doesn't panic so we can actually handle it gracefully.
1) was done using Coccinelle.
Input from oga.
ok miod.
|
|
issues scsi commands against that target. it might be a normal device and
the firmware is just being picky about which headers you can fetch.
tested by and ok deraadt@
|
|
yanked. we want to reschedule them down active paths rather than wait for
a minute while mpi decides that a path isnt coming back.
discussed with and tested by deraadt@
|
|
rather than the default of XS_DRIVER_STUFFUP. mpath(4) likes this better
when you unplug paths.
|
|
some fc parts dont like the header requests against missing devices with
bus addressing, so now we do the magic iteration over active ports.
the original problem was reported by deraadt@
lots of testing and debugging by deraadt@
tested on fc929 and fc949 adapters
|
|
queue. In some situations this prevents us from reading a garbled reply.
If this commit breaks your mpi, please report ASAP.
The issue was reported and the fix was verified by Emeric Boit. Thanks!
Ok dlg, kettenis, marco (who warned us and wanted to test more)
|
|
devices.
my theory is that some devices report queue full conditions in ways
the firmware doesnt understand, or some firmwares default to NOT
doing the queue full handling internally. either way it reports
queue full conditions as faulted io which gets passed up to the
block layer as errors.
this makes us conservative again and safe.
this fixes panics from ajacout
ok sthen@ deraadt@
|
|
|
|
firmware has it configured lower.
|
|
ok dlg@ matthew@
|
|
provide. spi parts are still limited.
ok krw@
|
|
never complete.
when we get a detach event from the firmware, we currently deactivate the
device and then request the scsi midlayer attempt to detach the device.
this diff now deactivates the device and then resets the target, forcing
the ioc to complete the pending operations. once the reset has completed
we then request a detach of the kernel device.
this lets me hotplug busy sas disks without leaking scsi_xfers or bufs or
anything.
|
|
|
|
steals^Wleverages the code used in mpii for handling a list of events to
acknowlede.
tested by hotplugging sas disks.
|
|
fc devices.
|
|
|
|
Bogus chunks pointed out by matthew@ and miod@. No cookies for
marco@ and jasper@.
ok deraadt@ miod@ matthew@ jasper@ macro@
|
|
we're busy, we might not be able to allocate a ccb via scsi_ioh_get
if the pool is empty. this means we wont ack the event, which in
turn means we wont receive further event notifications.
this cuts the event ack code over to using a scsi_iohandler. the
eventack iohandler will be called as soon as a ccb becomes available
for it to use. this guarantees reliable event handling and
acknowledgement, despite how busy the controller might be.
this has bugging me ever since i wrote the event handling code.
tested by hotplugging sata disks.
|
|
ioh wrappers.
|
|
sparsely populated buses.
ok dlg@, krw@
|
|
step in elminating 'struct scsi_device' entirely.
Spotted and initial diff from matthew@.
ok matthew@ dlg@ deraadt@ marco@ miod@
|
|
rather than as a scan of all attached devices after scsibus is attached.
this will allow the cache enabling on virtual disks to run as part of the
disks attach routine.
|
|
ioctl requests, and dont pass the proc pointers around for any ioctl
requests in scsi land at all. neither were used, so trim the fat.
ok krw@ marco@
|
|
mode pages that control the caches. this adds code that talks to the mpi
chip directly on behalf of those disks so you can enable write caching on
them.
|
|
copying vendor[8]/product[16]/revision[4] out of struct scsi_inquiry_data
together with one memcopy.
ok krw
|
|
but i suspect it is common to all SPI mpi parts.
problem found and problem diff verified by landry.
ok krw@ landry@ jasper@
|
|
|
|
ok dlg@, marco@
|
|
|
|
big motivation to implementing iopools. while looking at another issue i
noticed that openings were cut up for each disk.
this cranks openings to maxcmds.
|
|
makes output sane on sparc64 and other BE archs.
found by jason george
|
|
and then start attaching it with 0 sensors attached
ok dlg
|
|
itself now, its not the adapters responsibility anymore.
|
|
now, so it not our job to free it.
|
|
|
|
to its free ccbs.
this allows the midlayer to schedule access to the bus in a roundrobin
fashion for all consumers on the bus, including io from devices and even
the internal mpi management commands used to poll the state of raid
devices. the result is fairer sharing between disks on the bus and more
reliable sensor updates.
ok krw@ beck@ marco@
tested by beck@
|
|
this was done for every sensor update, which really screwed up the memory
stats.
noticed by deraadt@
|
|
void. Use XS_NO_CCB error in the scsi command (xs) to report the
NO_CCB condition. Eliminates all SUCCESSFULLY_QUEUED and COMPLETE
confusion and untangles the midlayer from the adapter a bit more.
Eyes and some fixes by miod@
There may be some compile issues on little used (i.e. I don't have
any) drivers but the change is mechanical and thus easy to remedy.
ok dlg@
|
|
intercept the ccb_done handling so polled commands set a flag that mpi_poll
tests on. when ccb_done sets the variable, the poll loop breaks and
mpi_poll runs the original ccb_done handler for the ccb completion.
this is a lot simpler than the previous implementation and removes a
mutex.
ok beck@
|
|
else cares so it's just noise. Drivers that actually look at ITSDONE
are unchanged.
ok marco@ (for his files) dlg@ beck@
|
|
mpi_bio_get_pg0_raid. the sensor updates dont poll at all now.
|
|
requests sleep rather than poll for completion.
|
|
when it used the uninitialized cookie.
|
|
a ccb can now be done with mpi_wait. this switches the cfg page handlers
over from their own tsleep stuff to mpi_wait.
|
|
void *. this will let me stash things other than scsi xfers in the ccb for
ccb_done handlers to use.
|
|
|
|
rather than all the replies.
|