Age | Commit message (Collapse) | Author |
|
special error handling in sdopen() as temporary hack.
OK krw@
|
|
is not dying.
OK krw@
|
|
device is already dying. Delete the sc_timeout when setting the
SDF_DYING flag as the timeout delete in sdclose() may not be reached.
OK krw@
|
|
use after free of the scsi link structure during detach.
OK krw@
|
|
'sc_link'. 'sc_link' is a field in the various device *_softc
structures, where the sc_ prefix was for 'softc'. Reduces potential
mental confusion. Newer code from down under was already using
'link'.
No functional change.
Prompted by bluhm@'s adventures in scsi. ok dlg@ jmatthew@
|
|
of a use after free. In sdopen() the scsi link pointer is taken
from the scsi disk struct. While the scsi disk memory is refcounted
by autoconf, the scsi link may be detached and freed during sleep.
The solution is to check wether the disk is dying after every sleep.
The SDF_DYING flag is set before scsi bus and scsi disk are detached,
so without this flag the link must be valid.
input and OK krw@
|
|
"if (cmd->len) != 0)", as cmd->len is a 3 byte array.
Broken since media_blkno accounting was introduced in r1.72 (2007!).
Might fix some obscure tape issues around miscounting variable sized blocks.
Spotted by mmcc@ and his friend clang.
|
|
things by renaming the field 'SLIST_HEAD(, scsi_link) sc_link' to
'sc_link_list' in struct scsibus_softc. Use 'sb' as the short name
for scsibus_softc variables.
Impetus from & ok bluhm@
|
|
ok mpi@ millert@
|
|
and sdminphys() if the scsi disk is dying. The memory of the link
may have been freed already.
OK krw@
|
|
everywhere. This is the first step to fix a use after free of the
sc_link when the disk detaches. If a function gets a scsi transfer,
the scsi link is always valid. Call this variable "link" consistently.
OK krw@
|
|
|
|
|
|
"sure" deraadt@
|
|
have any direct symbols used. Tested for indirect use by compiling
amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
|
Pointed out by Kor son of Rynar (sic) when trying to test
some debug code.
ok matthew@
|
|
ok deraadt@
|
|
sys/atomic.h for atomic_setbits_int.
|
|
when workqs were introduced, we provided a second argument so you
could pass a thing and some context to work on it in. there were
very few things that took advantage of the second argument, so when
i introduced pools i suggested removing it. since tasks were meant
to replace workqs, it was requested that we keep the second argument
to make porting from workqs to tasks easier.
now that workqs are gone, i had a look at the use of the second
argument again and found only one good use of it (vdsp(4) on sparc64
if you're interested) and a tiny handful of questionable uses. the
vast majority of tasks only used a single argument. i have since
modified all tasks that used two args to only use one, so now we
can remove the second argument.
so this is a mechanical change. all tasks only passed NULL as their
second argument, so we can just remove it.
ok krw@
|
|
objective: vnode.h doesn't include uvm_extern.h anymore.
followup changes: include uvm_extern.h or lock.h where necessary.
ok and help from deraadt
|
|
|
|
ok krw@, jsg@
|
|
(ST373405FSUN72G) respond to a START STOP UNIT command that spins down the
disk with a "Logical Unit Not Ready, Initialization Command Required".
Besides causing some dmesg spam, our sd(4) driver responds to such a response
by spinning the disk back up. Prevent this from happening by respecting
the SCSI_IGNORE_NOT_READY flag and using that flag when spinning down the
disk.
ok miod@
|
|
ok mpi@ kspillner@
|
|
CIRCLEQ_* is deprecated and not called in the tree. The other queue types
have *_END macros which were added for symmetry with CIRCLEQ_END. They are
defined as NULL. There's no reason to keep the other *_END macro calls.
ok millert@
|
|
uses it. dont need to include workq.h anymore here either now.
|
|
tested on mpi(4) sas.
|
|
|
|
after discussions with beck deraadt kettenis.
|
|
DVACT_POWERDOWN is propagated in this subtree, there is no need for
this shutdown hook anymore. RIP.
ok kettenis@
|
|
should be safe to call the midlayer io path without the biglock now.
|
|
|
|
the kernel biglock. the plan is to have the midlayer assume its
running without the biglock, but that it cant call adapters or
devices without taking the biglock first.
this diff just wraps the calls to the adapter iopool get and put
handlers up in the biglock.
this is safe now because of kettenis' commit to src/sys/kern/init_main.c
r1.120. ive been running this in various places since early 2011.
|
|
ok dlg@
|
|
a whole bus, a target, or a specific lun on a target from the bioctl
and scsi_req paths.
i want to reuse this factored code for something claudio wants.
|
|
is to check xs->status on completion to make sure it worked.
|
|
ok dlg@
|
|
tested by jmatthew@
|
|
it rather than on attach. just need to implement a sense handler
to detect failover and this is done.
thanks to jmatthew@ for plugging this together again for me.
|
|
a paths status, rather than on attach. the status it returns depends
on the type of device you have. hds provides two types of arrays,
symmetric and asymmetric.
on a symmetric device you can shove io down any path to any port
on any controller and it will work. on symmetric devices we say all
paths are part of the same group, and unconditionally return active
path status to any check request.
on asymmetric devices we group paths by which controller in teh
array they connect to. the controllers return whether theyre providing
a preferred path via a couple of status bits in a hds specific vpd
page, so we query that and return the state of the bits.
unfortunately hds arrays dont report change of lun ownership in any
way, so we dont currently have any way of failing over at the moment.
ill have to think about the least worst way to handle that.
tested by deraadt@ on hppa
|
|
|
|
invalid request due to current lu ownership
|
|
driver re-probe for its capacity.
Allow to fully recognized Lexar JumpDrive S33 USB 3.0 sticks.
ok krw@, dlg@
|
|
dmesg, or write operations just fail with EACCES for no obvious reason
ok krw@ tedu@
|
|
identify them over multiple paths using their wwnn.
|
|
generate a devid. if its an fc device this is good enough.
|
|
|
|
use it should cause a fault.
based on discussion with miod@
|
|
outside scsi_base.c.
this will allow adapters to restrict access to iopool resources
based on some state, and then kick the pending requests on the pool
when the state comes good again.
ive been avoiding this for a long time, but it is the least worst
way to deal with some uses of XS_NO_CCB.
discussion with kettenis@ helped me decide this was right.
|
|
kernel resumes normal (non-cold, able to run processes, etc) operation.
Previously we were relying on specific DVACT_RESUME op's in drivers
creating callback/threads themselves, but that has become too common,
indicating the need for a built-in mechanism.
ok dlg kettenis, tested by a sufficient amount of people
|