Age | Commit message (Collapse) | Author |
|
wasn't supported. Nuke #define of ESCAPE_NOT_SUPPORTED at the same
time.
ok miod@
|
|
ok marco@
|
|
causing a weird problems on an alpha and also appears responsible for
isp(4) weirdness i havent had a chance to examine yet.
sigh, this makes me sad.
|
|
committed. i hate comments. i read and change the code and then
forget about the comments.
pointed out by krw@
|
|
DEVID_CMP now evaluates to false if the devids are NULL.
some stupid devices dont understand luns, so we have code that
detects when the device at lun 0 also appears at luns 1, 2, 3, and
so on. this check is short circuited if the devices report different
devids. no devids isnt the same as different devids though.
found by okan@ on ciss (which currently ignores luns).
tested by krw@ marco@ johan@ okan@
ok krw@ marco@
|
|
marco@ discovered my rewrite retried commands rejected by an adapter
from a timeout, which was trivially starved by normal io going to
disks. this diff allows an xs to be marked as XS_NO_CCB, which will
cause it to be returned to the device driver to be retried as part
of the normal io queue.
tested by krw@ marco@ johan@
ok krw@ marco@
|
|
the fix for the NO_CCB breakage will follow shortly.
tested by krw@ marco@ johan@
ok krw@ marco@
|
|
TRY_AGAIN_LATER. NO_CCB is a timer based mechanism that can trivially
be made to fail by running IO to two or more disks simultaneously. The
TRY_AGAIN_LATER thing is more subtle because it now is a permanent
failure instead of transient however this is much harder to hit because
something must have gone wrong before it hits.
ok deraadt krw miod
|
|
Pointed out by miod@. krw@ miod@ ok.
|
|
found with krw while looking at #6247. tested locally with iogen and
scsi(8). this fixes a null deref in the ioctl path where there shouldnt be
one.
ok krw@
|
|
may or may not be possible to get NULL these days, but paranoia and
consistancy of usage are nice. Prompted by looking at PR#6247 from
Steven Mestdagh.
ok dlg@
|
|
many luns, or the entire bus), dont report ENXIO as an error to the
caller. this broke autoconf when it tried to forcefully remove a
bus such as umass and it thought there was a failure.
this introduces a way for scsi hbas to call activate/deactivate on
a device based on its target/lun address via a call to scsi_activate().
they can then schedule the actual detach/attach in a thread later via
scsi_req_probe/detach.
the mpi changes tweak the sas event handling code to use these apis
to properly handle attaches and detaches of disks. event handling
is still disabled till i can make it less chatty.
umass breakage reported by form@
|
|
scsibusdetach wasnt doign it properly, so we would be leaking on detach in
some cases.
now, with the introduction of mpath, the scsi_link structures can
represent a path to a mpath node as well as normal devices. this
intercepts the device activate entrypoints and sends them to mpath
if it it in use rather than assuming a device is always there. the
scsibusdetach change ensures that detach always ends up handling
the mpath node case too.
hotplug bus functionality (eg, usb) tested by form@
|
|
boundary.
miod "go for it."
|
|
uses of it in our tree.
ok krw@ deraadt@
|
|
previously a devid was a structure containing its type, length, and
a pointer to the actual devid value. this has been changed so a
devid is a header followed immediately by the memory making up the
id value. this allows the header and its value to be allocated
together.
devids are now reference counted, so multiple things (eg, the mpath
node handlers and the various scsi_link structures) can share the
same allocation safely. this also frees devids when scsi_links go
away, which was previously not done.
if mpath is enabled, then print the devids out as part of the devices
attach line.
|
|
This is needed for the addition of further suspend/resume actions.
Okay deraadt@, marco@.
|
|
|
|
|
|
with it which became extremely annoying with what mpath wants to
do.
the major change is a new interface for submitting scsi commands.
previously the only way for drivers like sd, cd, st, etc to push
commands onto the hardware was via scsi_scsi_cmd(). the problem
with scsi_scsi_cmd is that it doesnt tell the caller if the command
failed, was queued, or completed unless you shoved a buf down with
it. this is important for mpath which wants to know what the physical
path to the device did so it can report it back to the midlayer
which called it.
this provides a new api which lets drivers like cd/sd/st/mpath etc
allocate an xs, fill it in, and provide a completion routine which
the midlayer will call with the state of the command when it is
finished with it. the caller is then responsible for freeing the
xs.
from the hba side of thing, the return code from the scsi_cmd
entrypoint is largely ignored now, and it is now always the
responsibility of the hba driver to call scsi_done when it has
completed the io, rather than returning COMPLETE and expecting the
midlayer to do it for you.
i have emulated scsi_scsi_cmd on top of this new api so existing
users of it will continue to work. sd(4) has been reworked to use
the new api directly to both demonstrate its use and test that the
new api actually does work.
this diff was mostly written in a day at f2k9. thanks to miod for poking
through hba drivers to help mitigate against fallout from the change to
the COMPLETE semantic. this has been reviewed by krw who didnt spot
anything wrong.
thanks to dave del debbio for testing.
ok deraadt@
|
|
|
|
|
|
|
|
do it (but doesnt preclude them using it internally).
discussed with krw@ miod@ and deraadt@
|
|
|
|
OK dlg@
|
|
midlayer that a scsi device has appeared or dissapeared. the midlayer will
queue an event and run it in the system workq (which has process context)
to handle the attach or detach.
|
|
errnos. Note that the error strings are being ignored, since we long ago
decided to not spam the console, and there is no other nice way to use the
errors (without changing the ioctls to pass it back)
The errno is now useful, since we can pass b_error from failing IO up, and
the drive can decide how to use that
ok miod
|
|
shows the physical topology of your system.
|
|
structures by things other than autoconf.
|
|
so we can guarantee that any of the paths we push the io down later will
work.
with help from a discussion from beck and krw
|
|
is worth noting that the device on mpath will persist even if all the paths
behind it have gone away. returning the paths will allow operations to work
against the device again.
|
|
thinks they could be available via multiple paths. those stolen
devices are then made available via mpath(4).
this is the minimum amount of code to implement the stealing. it
is generally broken and very brittle, so it is currently disabled.
it is going in so i can work on it in the tree.
|
|
we need this to get some clue as to which ports are which on an fc fabric.
requested by and ok deraadt@
|
|
have been going on. this appears to bring us back to stable state.
lots of testing by oga and ariane and my self.
|
|
|
|
one by tedu@. It doesn't do anything smart yet, it just uses
plain old disksort. we also keep the old method of queueing bufs
since some miods have crazy MD drivers that need some love.
ok beck@, art@
tested by many on many archs.
|
|
device, as some devices will be stalled by the request.
ok krw@
|
|
|
|
as additional argument. This will allow intermediate layers between
scsi devices such as sd and scsi host adapters to take appropriate
action if necessary.
|
|
use to identify devices of interest.
ok deraadt@
|
|
anything. we represent that in the midlayre by moving the initiator id out
of the buswidth. let's not print it in that case.
ok deraadt@ kettenis@ krw@ marco@
|
|
ok miod@, dlg@
|
|
a size to them, because the original author of this stuff obviously
didn't grok pointer arithmatic.
ok krw@, tedu@, marco@, kettenis@
|
|
on apple laptops.
The eject button will only eject the disc when it's not used by
anything.
ok miod@
|
|
and newer versions of gcc all object to.
ok miod@ krw@ beck@
|
|
ok deraadt@
|
|
#ifdef _KERNEL
|
|
userland processes should not see all the kernel components.
|
|
ok krw@
|