On Tue, 5 Feb 2013, Bart Van Assche wrote:
> Fix a few race conditions that can be triggered by removing a device:
> - Fix a race between starved list processing and device removal.
> - Avoid that a SCSI LLD callback can get invoked after
> scsi_remove_host() finished.
> - Speed up device removal by stopping error handling as soon as
> the SHOST_DEL or SHOST_DEL_RECOVERY state has been reached.
> - Save and restore the host_scribble field during error handling
>
> These patches have been tested on top of kernel v3.8-rc6 and are also
> available here: http://github.com/bvanassche/linux/tree/device-removal-fixes.
Hi Bart,
I gave your patchset a spin on our ftServer, which supports hotplug of PCI
devices. Before attempting a surprise HW removal of an LSI Fusion SAS-2
SCSI controller, I issued an orderly removal through our hotplug driver.
The device removal appeared to hang (this does not occur with vanilla
3.8.0-rc6):
PID: 3331 TASK: ffff88083e968000 CPU: 28 COMMAND: "java"
#0 [ffff88084fd5da48] __schedule at ffffffff8165e8f4
#1 [ffff88084fd5dac0] schedule at ffffffff8165f0d9
#3 [ffff88084fd5db30] _scsih_remove at ffffffffa008416d [mpt2sas]
#4 [ffff88084fd5db80] pci_device_remove at ffffffff81335e66
#5 [ffff88084fd5dbb0] __device_release_driver at ffffffff813fd23c
#6 [ffff88084fd5dbd0] device_release_driver at ffffffff813fd57c
#7 [ffff88084fd5dbf0] bus_remove_device at ffffffff813fccde
#8 [ffff88084fd5dc20] device_del at ffffffff813fa0ba
#9 [ffff88084fd5dc50] device_unregister at ffffffff813fa172
#10 [ffff88084fd5dc70] pci_stop_bus_device at ffffffff8132fce4
#11 [ffff88084fd5dca0] pci_stop_bus_device at ffffffff8132fc8d
#12 [ffff88084fd5dcd0] pci_stop_bus_device at ffffffff8132fc8d
#13 [ffff88084fd5dd00] pci_stop_bus_device at ffffffff8132fc8d
#14 [ffff88084fd5dd30] pci_stop_bus_device at ffffffff8132fc8d
#15 [ffff88084fd5dd60] pci_stop_and_remove_bus_device at ffffffff8132fe46
And to further pin down where we are...
crash> sym _scsih_remove
ffffffffa0084010 (t) _scsih_remove [mpt2sas]
crash> p/x 0xffffffffa008416d - 0xffffffffa0084010
$9 = 0x15d
crash> dis -l _scsih_remove
<_scsih_remove+0x140>: callq 0xffffffffa0011ea0 <sas_remove_host>
<_scsih_remove+0x145>: mov %r13,%rdi
<_scsih_remove+0x148>: callq 0xffffffffa00766c0 <mpt2sas_base_detach>
<_scsih_remove+0x14d>: mov %r13,%rdi
<_scsih_remove+0x150>: callq 0xffffffff8131b930 <list_del>
<_scsih_remove+0x155>: mov %r12,%rdi
<_scsih_remove+0x158>: callq 0xffffffff8141dcf0 <scsi_remove_host>
<_scsih_remove+0x15d>: mov %r12,%rdi
<_scsih_remove+0x160>: callq 0xffffffff8141d770 <scsi_host_put>
<_scsih_remove+0x165>: add $0x18,%rsp
We're stuck in the mpt2sas driver's call to scsi_remove_host(), which
"[PATCH v8 07/10] Make scsi_remove_host() wait for device removal"
modifies.
I re-ran the test with some additional debugging so I could figure out the
Scsi_Host it was operating on and found:
crash> struct Scsi_Host 0xffff8808513a4290 | grep eh_active
eh_active = 0
However, its __devices list was not empty:
crash> struct Scsi_Host 0xffff8808513a4290 | grep __devices -A3
__devices = {
next = 0xffff880851232530,
prev = 0xffff880851235398
},
So scsi_remove_host loops while the __devices list is never cleared.
See a complete dump of Scsi_Host and the __devices_list scsi_devices
below.
Regards,
-- Joe
crash> struct Scsi_Host 0xffff8808513a4290 > shost
struct Scsi_Host {
__devices = {
next = 0xffff880851232530,
prev = 0xffff880851235398
},
__targets = {
next = 0xffff881054377980,
prev = 0xffff88084ed99528
},
cmd_pool = 0xffffffff81c956c0,
free_list_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x2e2e,
tickets = {
head = 0x2e,
tail = 0x2e
}
}
}
}
}
},
free_list = {
next = 0xffff88084fb6c008,
prev = 0xffff88084fb6c008
},
starved_list = {
next = 0xffff8808513a42d0,
prev = 0xffff8808513a42d0
},
default_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0xe5e5,
tickets = {
head = 0xe5,
tail = 0xe5
}
}
}
}
}
},
host_lock = 0xffff8808513a42e0,
scan_mutex = {
count = {
counter = 0x1
},
wait_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
wait_list = {
next = 0xffff8808513a42f8,
prev = 0xffff8808513a42f8
},
owner = 0x0
},
eh_cmd_q = {
next = 0xffff8808513a4310,
prev = 0xffff8808513a4310
},
ehandler = 0xffff8808512d1890,
eh_action = 0x0,
eh_active = 0x0,
host_wait = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
task_list = {
next = 0xffff8808513a4340,
prev = 0xffff8808513a4340
}
},
remove_host = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x101,
tickets = {
head = 0x1,
tail = 0x1
}
}
}
}
}
},
task_list = {
next = 0xffff88103712faa8,
prev = 0xffff88103712faa8
}
},
hostt = 0xffffffffa00cc1c0,
transportt = 0xffff880850c233d8,
bqt = 0x0,
host_busy = 0x0,
host_failed = 0x0,
host_eh_scheduled = 0x0,
host_no = 0x0,
resetting = 0x0,
last_reset = 0x0,
max_id = 0xffffffff,
max_lun = 0x41ff,
max_channel = 0x0,
unique_id = 0x0,
max_cmd_len = 0x20,
this_id = 0xffffffff,
can_queue = 0xdfb,
cmd_per_lun = 0x7,
sg_tablesize = 0x80,
sg_prot_tablesize = 0x0,
max_sectors = 0x7fff,
dma_boundary = 0xffffffff,
cmd_serial_number = 0x152f,
active_mode = 0x1,
unchecked_isa_dma = 0x0,
use_clustering = 0x1,
use_blk_tcq = 0x0,
host_self_blocked = 0x0,
reverse_ordering = 0x0,
ordered_tag = 0x0,
tmf_in_progress = 0x0,
async_scan = 0x0,
eh_noresume = 0x0,
work_q_name =
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000",
work_q = 0x0,
host_blocked = 0x0,
max_host_blocked = 0x7,
prot_capabilities = 0x7,
prot_guard_type = 0x1,
uspace_req_q = 0x0,
base = 0x0,
io_port = 0x0,
n_io_port = 0x0,
dma_channel = 0xff,
irq = 0x0,
shost_state = SHOST_DEL,
shost_gendev = {
parent = 0xffff881053a92328,
p = 0xffff880850ccca28,
kobj = {
name = 0xffff88084fa2e220 "host0",
entry = {
next = 0xffff8808513a46c8,
prev = 0xffff880851225498
},
parent = 0xffff881053a92338,
kset = 0xffff88085f878b98,
ktype = 0xffffffff81c92240,
sd = 0xffff88084fb65658,
kref = {
refcount = {
counter = 0xe
}
},
state_initialized = 0x1,
state_in_sysfs = 0x1,
state_add_uevent_sent = 0x1,
state_remove_uevent_sent = 0x0,
uevent_suppress = 0x0
},
init_name = 0x0,
type = 0xffffffff81c95780,
mutex = {
count = {
counter = 0x1
},
wait_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
wait_list = {
next = 0xffff8808513a4498,
prev = 0xffff8808513a4498
},
owner = 0x0
},
bus = 0xffffffff81c95960,
driver = 0x0,
platform_data = 0x0,
power = {
power_state = {
event = 0x0
},
can_wakeup = 0x0,
async_suspend = 0x1,
is_prepared = 0x0,
is_suspended = 0x0,
ignore_children = 0x0,
early_init = 0x1,
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0xf0f,
tickets = {
head = 0xf,
tail = 0xf
}
}
}
}
}
},
entry = {
next = 0xffff8808513a4750,
prev = 0xffff880851225520
},
completion = {
done = 0x7fffffff,
wait = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x101,
tickets = {
head = 0x1,
tail = 0x1
}
}
}
}
}
},
task_list = {
next = 0xffff8808513a44f0,
prev = 0xffff8808513a44f0
}
}
},
wakeup = 0x0,
wakeup_path = 0x0,
syscore = 0x0,
suspend_timer = {
entry = {
next = 0x0,
prev = 0x0
},
expires = 0x0,
base = 0xffff880854090000,
function = 0xffffffff814092d0 <pm_suspend_timer_fn>,
data = 0xffff8808513a4430,
slack = 0xffffffff,
start_pid = 0xffffffff,
start_site = 0x0,
start_comm =
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
},
timer_expires = 0x0,
work = {
data = {
counter = 0x10200
},
entry = {
next = 0xffff8808513a4570,
prev = 0xffff8808513a4570
},
func = 0xffffffff8140a6b0 <pm_runtime_work>
},
wait_queue = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x303,
tickets = {
head = 0x3,
tail = 0x3
}
}
}
}
}
},
task_list = {
next = 0xffff8808513a4590,
prev = 0xffff8808513a4590
}
},
usage_count = {
counter = 0x1
},
child_count = {
counter = 0x0
},
disable_depth = 0x0,
idle_notification = 0x0,
request_pending = 0x0,
deferred_resume = 0x0,
run_wake = 0x0,
runtime_auto = 0x1,
no_callbacks = 0x0,
irq_safe = 0x0,
use_autosuspend = 0x0,
timer_autosuspends = 0x0,
request = RPM_REQ_NONE,
runtime_status = RPM_ACTIVE,
runtime_error = 0x0,
autosuspend_delay = 0x0,
last_busy = 0x0,
active_jiffies = 0x119,
suspended_jiffies = 0x199ea,
accounting_timestamp = 0xfffd2888,
subsys_data = 0x0,
qos = 0x0
},
pm_domain = 0x0,
numa_node = 0xffffffff,
dma_mask = 0x0,
coherent_dma_mask = 0x0,
dma_parms = 0x0,
dma_pools = {
next = 0xffff8808513a4618,
prev = 0xffff8808513a4618
},
dma_mem = 0x0,
archdata = {
dma_ops = 0x0,
iommu = 0x0
},
of_node = 0x0,
acpi_node = {
handle = 0x0
},
devt = 0x0,
id = 0x0,
devres_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
devres_head = {
next = 0xffff8808513a4660,
prev = 0xffff8808513a4660
},
knode_class = {
n_klist = 0x0,
n_node = {
next = 0x0,
prev = 0x0
},
n_ref = {
refcount = {
counter = 0x0
}
}
},
class = 0x0,
groups = 0x0,
release = 0,
iommu_group = 0x0
},
shost_dev = {
parent = 0xffff8808513a4430,
p = 0xffff880850cccc30,
kobj = {
name = 0xffff88084fa2dce0 "host0",
entry = {
next = 0xffff88084fb87448,
prev = 0xffff8808513a4448
},
parent = 0xffff8808513e31b0,
kset = 0xffff88085f878b98,
ktype = 0xffffffff81c92240,
sd = 0xffff88084fb78370,
kref = {
refcount = {
counter = 0x3
}
},
state_initialized = 0x1,
state_in_sysfs = 0x1,
state_add_uevent_sent = 0x1,
state_remove_uevent_sent = 0x0,
uevent_suppress = 0x0
},
init_name = 0x0,
type = 0x0,
mutex = {
count = {
counter = 0x1
},
wait_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
wait_list = {
next = 0xffff8808513a4718,
prev = 0xffff8808513a4718
},
owner = 0x0
},
bus = 0x0,
driver = 0x0,
platform_data = 0x0,
power = {
power_state = {
event = 0x0
},
can_wakeup = 0x0,
async_suspend = 0x1,
is_prepared = 0x0,
is_suspended = 0x0,
ignore_children = 0x0,
early_init = 0x1,
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
entry = {
next = 0xffff88084fb874d0,
prev = 0xffff8808513a44d0
},
completion = {
done = 0x7fffffff,
wait = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x101,
tickets = {
head = 0x1,
tail = 0x1
}
}
}
}
}
},
task_list = {
next = 0xffff8808513a4770,
prev = 0xffff8808513a4770
}
}
},
wakeup = 0x0,
wakeup_path = 0x0,
syscore = 0x0,
suspend_timer = {
entry = {
next = 0x0,
prev = 0x0
},
expires = 0x0,
base = 0xffff880854090000,
function = 0xffffffff814092d0 <pm_suspend_timer_fn>,
data = 0xffff8808513a46b0,
slack = 0xffffffff,
start_pid = 0xffffffff,
start_site = 0x0,
start_comm =
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
},
timer_expires = 0x0,
work = {
data = {
counter = 0x10200
},
entry = {
next = 0xffff8808513a47f0,
prev = 0xffff8808513a47f0
},
func = 0xffffffff8140a6b0 <pm_runtime_work>
},
wait_queue = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
task_list = {
next = 0xffff8808513a4810,
prev = 0xffff8808513a4810
}
},
usage_count = {
counter = 0x0
},
child_count = {
counter = 0x0
},
disable_depth = 0x1,
idle_notification = 0x0,
request_pending = 0x0,
deferred_resume = 0x0,
run_wake = 0x0,
runtime_auto = 0x1,
no_callbacks = 0x0,
irq_safe = 0x0,
use_autosuspend = 0x0,
timer_autosuspends = 0x0,
request = RPM_REQ_NONE,
runtime_status = RPM_SUSPENDED,
runtime_error = 0x0,
autosuspend_delay = 0x0,
last_busy = 0x0,
active_jiffies = 0x0,
suspended_jiffies = 0x0,
accounting_timestamp = 0xfffb8d5b,
subsys_data = 0x0,
qos = 0x0
},
pm_domain = 0x0,
numa_node = 0xffffffff,
dma_mask = 0x0,
coherent_dma_mask = 0x0,
dma_parms = 0x0,
dma_pools = {
next = 0xffff8808513a4898,
prev = 0xffff8808513a4898
},
dma_mem = 0x0,
archdata = {
dma_ops = 0x0,
iommu = 0x0
},
of_node = 0x0,
acpi_node = {
handle = 0x0
},
devt = 0x0,
id = 0x0,
devres_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
devres_head = {
next = 0xffff8808513a48e0,
prev = 0xffff8808513a48e0
},
knode_class = {
n_klist = 0xffff880853dc8730,
n_node = {
next = 0xffff8808513a27b0,
prev = 0xffff880853dc8738
},
n_ref = {
refcount = {
counter = 0x1
}
}
},
class = 0xffffffff81c957c0,
groups = 0xffffffff81c959e0,
release = 0,
iommu_group = 0x0
},
sht_legacy_list = {
next = 0x0,
prev = 0x0
},
shost_data = 0xffff8808513e3008,
dma_dev = 0xffff881053a92328,
hostdata = 0xffff8808513a4950
}
crash> list scsi_device.siblings -H 0xffff8808513a4290 -s scsi_device
ffff880851232520
struct scsi_device {
host = 0xffff8808513a4290,
request_queue = 0xffff88085107ad78,
siblings = {
next = 0xffff880851235398,
prev = 0xffff8808513a4290
},
same_target_siblings = {
next = 0xffff881054377990,
prev = 0xffff881054377990
},
device_busy = 0x0,
list_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x2626,
tickets = {
head = 0x26,
tail = 0x26
}
}
}
}
}
},
cmd_list = {
next = 0xffff880851232558,
prev = 0xffff880851232558
},
starved_entry = {
next = 0xdead000000100100,
prev = 0xdead000000200200
},
current_cmnd = 0x0,
queue_depth = 0xfe,
max_queue_depth = 0xfe,
last_queue_full_depth = 0x0,
last_queue_full_count = 0x0,
last_queue_full_time = 0x0,
queue_ramp_up_period = 0x1d4c0,
last_queue_ramp_up = 0x0,
id = 0x0,
lun = 0x0,
channel = 0x0,
manufacturer = 0x0,
sector_size = 0x200,
hostdata = 0x0,
type = 0x0,
scsi_level = 0x7,
inq_periph_qual = 0x0,
inquiry_len = 0x90,
inquiry = 0xffff88084ec2e8a0 "",
vendor = 0xffff88084ec2e8a8 "SEAGATE ST9300653SS 00026XN020GG",
model = 0xffff88084ec2e8b0 "ST9300653SS 00026XN020GG",
rev = 0xffff88084ec2e8c0 "00026XN020GG",
current_tag = 0x0,
sdev_target = 0xffff881054377978,
sdev_bflags = 0x0,
writeable = 0x1,
removable = 0x0,
changed = 0x0,
busy = 0x0,
lockable = 0x0,
locked = 0x0,
borken = 0x0,
disconnect = 0x0,
soft_reset = 0x0,
sdtr = 0x0,
wdtr = 0x0,
ppr = 0x1,
tagged_supported = 0x1,
simple_tags = 0x0,
ordered_tags = 0x0,
was_reset = 0x0,
expecting_cc_ua = 0x0,
use_10_for_rw = 0x1,
use_10_for_ms = 0x0,
no_report_opcodes = 0x0,
no_write_same = 0x0,
use_16_for_rw = 0x0,
skip_ms_page_8 = 0x0,
skip_ms_page_3f = 0x0,
skip_vpd_pages = 0x0,
use_192_bytes_for_3f = 0x0,
no_start_on_add = 0x0,
allow_restart = 0x0,
manage_start_stop = 0x0,
start_stop_pwr_cond = 0x0,
no_uld_attach = 0x0,
select_no_atn = 0x0,
fix_capacity = 0x0,
guess_capacity = 0x0,
retry_hwerror = 0x0,
last_sector_bug = 0x0,
no_read_disc_info = 0x0,
no_read_capacity_16 = 0x0,
try_rc_10_first = 0x0,
is_visible = 0x1,
can_power_off = 0x0,
wce_default_on = 0x0,
no_dif = 0x0,
supported_events = {0x0},
event_list = {
next = 0xffff880851232610,
prev = 0xffff880851232610
},
event_work = {
data = {
counter = 0x10200
},
entry = {
next = 0xffff880851232628,
prev = 0xffff880851232628
},
func = 0xffffffff81426020 <scsi_evt_thread>
},
device_blocked = 0x0,
max_device_blocked = 0x3,
iorequest_cnt = {
counter = 0x1313
},
iodone_cnt = {
counter = 0x1313
},
ioerr_cnt = {
counter = 0x0
},
sdev_gendev = {
parent = 0xffff8810543779a0,
p = 0xffff88084edab6d8,
kobj = {
name = 0xffff88084ec48540 "0:0:0:0",
entry = {
next = 0xffff880851232670,
prev = 0xffff880851232670
},
parent = 0x0,
kset = 0xffff88085f878b98,
ktype = 0xffffffff81c92240,
sd = 0x0,
kref = {
refcount = {
counter = 0x2
}
},
state_initialized = 0x1,
state_in_sysfs = 0x0,
state_add_uevent_sent = 0x1,
state_remove_uevent_sent = 0x1,
uevent_suppress = 0x0
},
init_name = 0x0,
type = 0xffffffff81c95ac0,
mutex = {
count = {
counter = 0x1
},
wait_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
wait_list = {
next = 0xffff8808512326c0,
prev = 0xffff8808512326c0
},
owner = 0x0
},
bus = 0xffffffff81c95960,
driver = 0x0,
platform_data = 0x0,
power = {
power_state = {
event = 0xffffffff
},
can_wakeup = 0x0,
async_suspend = 0x1,
is_prepared = 0x0,
is_suspended = 0x0,
ignore_children = 0x0,
early_init = 0x1,
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x2b2b,
tickets = {
head = 0x2b,
tail = 0x2b
}
}
}
}
}
},
entry = {
next = 0xffff8808512326f8,
prev = 0xffff8808512326f8
},
completion = {
done = 0xfffffffe,
wait = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x202,
tickets = {
head = 0x2,
tail = 0x2
}
}
}
}
}
},
task_list = {
next = 0xffff880851232718,
prev = 0xffff880851232718
}
}
},
wakeup = 0x0,
wakeup_path = 0x0,
syscore = 0x0,
suspend_timer = {
entry = {
next = 0x0,
prev = 0x0
},
expires = 0x0,
base = 0xffff8808546f4000,
function = 0xffffffff814092d0 <pm_suspend_timer_fn>,
data = 0xffff880851232658,
slack = 0xffffffff,
start_pid = 0xffffffff,
start_site = 0x0,
start_comm =
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
},
timer_expires = 0x0,
work = {
data = {
counter = 0x10200
},
entry = {
next = 0xffff880851232798,
prev = 0xffff880851232798
},
func = 0xffffffff8140a6b0 <pm_runtime_work>
},
wait_queue = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
task_list = {
next = 0xffff8808512327b8,
prev = 0xffff8808512327b8
}
},
usage_count = {
counter = 0x3
},
child_count = {
counter = 0x0
},
disable_depth = 0x1,
idle_notification = 0x0,
request_pending = 0x0,
deferred_resume = 0x0,
run_wake = 0x0,
runtime_auto = 0x0,
no_callbacks = 0x0,
irq_safe = 0x0,
use_autosuspend = 0x0,
timer_autosuspends = 0x0,
request = RPM_REQ_NONE,
runtime_status = RPM_SUSPENDED,
runtime_error = 0x0,
autosuspend_delay = 0x0,
last_busy = 0x0,
active_jiffies = 0x0,
suspended_jiffies = 0x0,
accounting_timestamp = 0xfffd24fd,
subsys_data = 0x0,
qos = 0x0
},
pm_domain = 0x0,
numa_node = 0xffffffff,
dma_mask = 0x0,
coherent_dma_mask = 0x0,
dma_parms = 0x0,
dma_pools = {
next = 0xffff880851232840,
prev = 0xffff880851232840
},
dma_mem = 0x0,
archdata = {
dma_ops = 0x0,
iommu = 0x0
},
of_node = 0x0,
acpi_node = {
handle = 0x0
},
devt = 0x0,
id = 0x0,
devres_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x202,
tickets = {
head = 0x2,
tail = 0x2
}
}
}
}
}
},
devres_head = {
next = 0xffff880851232888,
prev = 0xffff880851232888
},
knode_class = {
n_klist = 0x0,
n_node = {
next = 0x0,
prev = 0x0
},
n_ref = {
refcount = {
counter = 0x0
}
}
},
class = 0x0,
groups = 0x0,
release = 0,
iommu_group = 0x0
},
sdev_dev = {
parent = 0xffff880851232658,
p = 0xffff88084edab2c8,
kobj = {
name = 0xffff88084ec48a80
"kkkkkkk\245\273\273\273\273\273\273\273\273p\216\304N\b\210\377\377\261\222\060\201\377\377\377\377y\216e\201\377\377\377\377?\356\030\201\377\377\377\377{U1\201\377\377\377\377\261\222\060\201\377\377\377\377\241\221?\201\377\377\377\377\250\245B\201\377\377\377\377\256fB\201\377\377\377\377\247kB\201\377\377\377\377\201{B\201\377\377\377\377",
entry = {
next = 0xffff8808512328f0,
prev = 0xffff8808512328f0
},
parent = 0x0,
kset = 0xffff88085f878b98,
ktype = 0xffffffff81c92240,
sd = 0x0,
kref = {
refcount = {
counter = 0x0
}
},
state_initialized = 0x1,
state_in_sysfs = 0x0,
state_add_uevent_sent = 0x1,
state_remove_uevent_sent = 0x1,
uevent_suppress = 0x0
},
init_name = 0x0,
type = 0x0,
mutex = {
count = {
counter = 0x1
},
wait_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
wait_list = {
next = 0xffff880851232940,
prev = 0xffff880851232940
},
owner = 0x0
},
bus = 0x0,
driver = 0x0,
platform_data = 0x0,
power = {
power_state = {
event = 0xffffffff
},
can_wakeup = 0x0,
async_suspend = 0x1,
is_prepared = 0x0,
is_suspended = 0x0,
ignore_children = 0x0,
early_init = 0x1,
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x101,
tickets = {
head = 0x1,
tail = 0x1
}
}
}
}
}
},
entry = {
next = 0xffff880851232978,
prev = 0xffff880851232978
},
completion = {
done = 0xfffffffe,
wait = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x202,
tickets = {
head = 0x2,
tail = 0x2
}
}
}
}
}
},
task_list = {
next = 0xffff880851232998,
prev = 0xffff880851232998
}
}
},
wakeup = 0x0,
wakeup_path = 0x0,
syscore = 0x0,
suspend_timer = {
entry = {
next = 0x0,
prev = 0x0
},
expires = 0x0,
base = 0xffff8808546f4000,
function = 0xffffffff814092d0 <pm_suspend_timer_fn>,
data = 0xffff8808512328d8,
slack = 0xffffffff,
start_pid = 0xffffffff,
start_site = 0x0,
start_comm =
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
},
timer_expires = 0x0,
work = {
data = {
counter = 0x10200
},
entry = {
next = 0xffff880851232a18,
prev = 0xffff880851232a18
},
func = 0xffffffff8140a6b0 <pm_runtime_work>
},
wait_queue = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
task_list = {
next = 0xffff880851232a38,
prev = 0xffff880851232a38
}
},
usage_count = {
counter = 0x0
},
child_count = {
counter = 0x0
},
disable_depth = 0x2,
idle_notification = 0x0,
request_pending = 0x0,
deferred_resume = 0x0,
run_wake = 0x0,
runtime_auto = 0x1,
no_callbacks = 0x0,
irq_safe = 0x0,
use_autosuspend = 0x0,
timer_autosuspends = 0x0,
request = RPM_REQ_NONE,
runtime_status = RPM_SUSPENDED,
runtime_error = 0x0,
autosuspend_delay = 0x0,
last_busy = 0x0,
active_jiffies = 0x0,
suspended_jiffies = 0x0,
accounting_timestamp = 0xfffb8e97,
subsys_data = 0x0,
qos = 0x0
},
pm_domain = 0x0,
numa_node = 0xffffffff,
dma_mask = 0x0,
coherent_dma_mask = 0x0,
dma_parms = 0x0,
dma_pools = {
next = 0xffff880851232ac0,
prev = 0xffff880851232ac0
},
dma_mem = 0x0,
archdata = {
dma_ops = 0x0,
iommu = 0x0
},
of_node = 0x0,
acpi_node = {
handle = 0x0
},
devt = 0x0,
id = 0x0,
devres_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x101,
tickets = {
head = 0x1,
tail = 0x1
}
}
}
}
}
},
devres_head = {
next = 0xffff880851232b08,
prev = 0xffff880851232b08
},
knode_class = {
n_klist = 0x0,
n_node = {
next = 0xdead000000100100,
prev = 0xdead000000200200
},
n_ref = {
refcount = {
counter = 0x0
}
}
},
class = 0xffffffff81c95a40,
groups = 0x0,
release = 0,
iommu_group = 0x0
},
ew = {
work = {
data = {
counter = 0x0
},
entry = {
next = 0x0,
prev = 0x0
},
func = 0
}
},
requeue_work = {
data = {
counter = 0x10200
},
entry = {
next = 0xffff880851232b80,
prev = 0xffff880851232b80
},
func = 0xffffffff814257c0 <scsi_requeue_run_queue>
},
scsi_dh_data = 0x0,
sdev_state = SDEV_DEL,
sdev_data = 0xffff880851232ba8
}
ffff880851235388
struct scsi_device {
host = 0xffff8808513a4290,
request_queue = 0xffff88085107b690,
siblings = {
next = 0xffff8808513a4290,
prev = 0xffff880851232530
},
same_target_siblings = {
next = 0xffff88084ed99538,
prev = 0xffff88084ed99538
},
device_busy = 0x0,
list_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x3636,
tickets = {
head = 0x36,
tail = 0x36
}
}
}
}
}
},
cmd_list = {
next = 0xffff8808512353c0,
prev = 0xffff8808512353c0
},
starved_entry = {
next = 0xdead000000100100,
prev = 0xdead000000200200
},
current_cmnd = 0x0,
queue_depth = 0xfe,
max_queue_depth = 0xfe,
last_queue_full_depth = 0x0,
last_queue_full_count = 0x0,
last_queue_full_time = 0x0,
queue_ramp_up_period = 0x1d4c0,
last_queue_ramp_up = 0x0,
id = 0x1,
lun = 0x0,
channel = 0x0,
manufacturer = 0x0,
sector_size = 0x200,
hostdata = 0x0,
type = 0x0,
scsi_level = 0x7,
inq_periph_qual = 0x0,
inquiry_len = 0x90,
inquiry = 0xffff88084eda8410 "",
vendor = 0xffff88084eda8418 "SEAGATE ST9146853SS 00026XM02L18",
model = 0xffff88084eda8420 "ST9146853SS 00026XM02L18",
rev = 0xffff88084eda8430 "00026XM02L18",
current_tag = 0x0,
sdev_target = 0xffff88084ed99520,
sdev_bflags = 0x0,
writeable = 0x1,
removable = 0x0,
changed = 0x0,
busy = 0x0,
lockable = 0x0,
locked = 0x0,
borken = 0x0,
disconnect = 0x0,
soft_reset = 0x0,
sdtr = 0x0,
wdtr = 0x0,
ppr = 0x1,
tagged_supported = 0x1,
simple_tags = 0x0,
ordered_tags = 0x0,
was_reset = 0x0,
expecting_cc_ua = 0x0,
use_10_for_rw = 0x1,
use_10_for_ms = 0x0,
no_report_opcodes = 0x0,
no_write_same = 0x0,
use_16_for_rw = 0x0,
skip_ms_page_8 = 0x0,
skip_ms_page_3f = 0x0,
skip_vpd_pages = 0x0,
use_192_bytes_for_3f = 0x0,
no_start_on_add = 0x0,
allow_restart = 0x0,
manage_start_stop = 0x0,
start_stop_pwr_cond = 0x0,
no_uld_attach = 0x0,
select_no_atn = 0x0,
fix_capacity = 0x0,
guess_capacity = 0x0,
retry_hwerror = 0x0,
last_sector_bug = 0x0,
no_read_disc_info = 0x0,
no_read_capacity_16 = 0x0,
try_rc_10_first = 0x0,
is_visible = 0x1,
can_power_off = 0x0,
wce_default_on = 0x0,
no_dif = 0x0,
supported_events = {0x0},
event_list = {
next = 0xffff880851235478,
prev = 0xffff880851235478
},
event_work = {
data = {
counter = 0x10200
},
entry = {
next = 0xffff880851235490,
prev = 0xffff880851235490
},
func = 0xffffffff81426020 <scsi_evt_thread>
},
device_blocked = 0x0,
max_device_blocked = 0x3,
iorequest_cnt = {
counter = 0x21b
},
iodone_cnt = {
counter = 0x21b
},
ioerr_cnt = {
counter = 0x0
},
sdev_gendev = {
parent = 0xffff88084ed99548,
p = 0xffff88084eda8e38,
kobj = {
name = 0xffff88084eda0540 "0:0:1:0",
entry = {
next = 0xffff8808512354d8,
prev = 0xffff8808512354d8
},
parent = 0x0,
kset = 0xffff88085f878b98,
ktype = 0xffffffff81c92240,
sd = 0x0,
kref = {
refcount = {
counter = 0x2
}
},
state_initialized = 0x1,
state_in_sysfs = 0x0,
state_add_uevent_sent = 0x1,
state_remove_uevent_sent = 0x1,
uevent_suppress = 0x0
},
init_name = 0x0,
type = 0xffffffff81c95ac0,
mutex = {
count = {
counter = 0x1
},
wait_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
wait_list = {
next = 0xffff880851235528,
prev = 0xffff880851235528
},
owner = 0x0
},
bus = 0xffffffff81c95960,
driver = 0x0,
platform_data = 0x0,
power = {
power_state = {
event = 0xffffffff
},
can_wakeup = 0x0,
async_suspend = 0x1,
is_prepared = 0x0,
is_suspended = 0x0,
ignore_children = 0x0,
early_init = 0x1,
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0xc4c4,
tickets = {
head = 0xc4,
tail = 0xc4
}
}
}
}
}
},
entry = {
next = 0xffff880851235560,
prev = 0xffff880851235560
},
completion = {
done = 0xfffffffe,
wait = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x202,
tickets = {
head = 0x2,
tail = 0x2
}
}
}
}
}
},
task_list = {
next = 0xffff880851235580,
prev = 0xffff880851235580
}
}
},
wakeup = 0x0,
wakeup_path = 0x0,
syscore = 0x0,
suspend_timer = {
entry = {
next = 0x0,
prev = 0x0
},
expires = 0x0,
base = 0xffff8808546f4000,
function = 0xffffffff814092d0 <pm_suspend_timer_fn>,
data = 0xffff8808512354c0,
slack = 0xffffffff,
start_pid = 0xffffffff,
start_site = 0x0,
start_comm =
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
},
timer_expires = 0x0,
work = {
data = {
counter = 0x10200
},
entry = {
next = 0xffff880851235600,
prev = 0xffff880851235600
},
func = 0xffffffff8140a6b0 <pm_runtime_work>
},
wait_queue = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
task_list = {
next = 0xffff880851235620,
prev = 0xffff880851235620
}
},
usage_count = {
counter = 0x3
},
child_count = {
counter = 0x0
},
disable_depth = 0x1,
idle_notification = 0x0,
request_pending = 0x0,
deferred_resume = 0x0,
run_wake = 0x0,
runtime_auto = 0x0,
no_callbacks = 0x0,
irq_safe = 0x0,
use_autosuspend = 0x0,
timer_autosuspends = 0x0,
request = RPM_REQ_NONE,
runtime_status = RPM_SUSPENDED,
runtime_error = 0x0,
autosuspend_delay = 0x0,
last_busy = 0x0,
active_jiffies = 0x0,
suspended_jiffies = 0x0,
accounting_timestamp = 0xfffd2515,
subsys_data = 0x0,
qos = 0x0
},
pm_domain = 0x0,
numa_node = 0xffffffff,
dma_mask = 0x0,
coherent_dma_mask = 0x0,
dma_parms = 0x0,
dma_pools = {
next = 0xffff8808512356a8,
prev = 0xffff8808512356a8
},
dma_mem = 0x0,
archdata = {
dma_ops = 0x0,
iommu = 0x0
},
of_node = 0x0,
acpi_node = {
handle = 0x0
},
devt = 0x0,
id = 0x0,
devres_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x202,
tickets = {
head = 0x2,
tail = 0x2
}
}
}
}
}
},
devres_head = {
next = 0xffff8808512356f0,
prev = 0xffff8808512356f0
},
knode_class = {
n_klist = 0x0,
n_node = {
next = 0x0,
prev = 0x0
},
n_ref = {
refcount = {
counter = 0x0
}
}
},
class = 0x0,
groups = 0x0,
release = 0,
iommu_group = 0x0
},
sdev_dev = {
parent = 0xffff8808512354c0,
p = 0xffff88084eda9248,
kobj = {
name = 0xffff88084eda3870
"kkkkkkk\245\273\273\273\273\273\273\273\273\060\063\332N\b\210\377\377\261\222\060\201\377\377\377\377y\216e\201\377\377\377\377?\356\030\201\377\377\377\377{U1\201\377\377\377\377\261\222\060\201\377\377\377\377\241\221?\201\377\377\377\377\250\245B\201\377\377\377\377\256fB\201\377\377\377\377\247kB\201\377\377\377\377\201{B\201\377\377\377\377",
entry = {
next = 0xffff880851235758,
prev = 0xffff880851235758
},
parent = 0x0,
kset = 0xffff88085f878b98,
ktype = 0xffffffff81c92240,
sd = 0x0,
kref = {
refcount = {
counter = 0x0
}
},
state_initialized = 0x1,
state_in_sysfs = 0x0,
state_add_uevent_sent = 0x1,
state_remove_uevent_sent = 0x1,
uevent_suppress = 0x0
},
init_name = 0x0,
type = 0x0,
mutex = {
count = {
counter = 0x1
},
wait_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
wait_list = {
next = 0xffff8808512357a8,
prev = 0xffff8808512357a8
},
owner = 0x0
},
bus = 0x0,
driver = 0x0,
platform_data = 0x0,
power = {
power_state = {
event = 0xffffffff
},
can_wakeup = 0x0,
async_suspend = 0x1,
is_prepared = 0x0,
is_suspended = 0x0,
ignore_children = 0x0,
early_init = 0x1,
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x101,
tickets = {
head = 0x1,
tail = 0x1
}
}
}
}
}
},
entry = {
next = 0xffff8808512357e0,
prev = 0xffff8808512357e0
},
completion = {
done = 0xfffffffe,
wait = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x202,
tickets = {
head = 0x2,
tail = 0x2
}
}
}
}
}
},
task_list = {
next = 0xffff880851235800,
prev = 0xffff880851235800
}
}
},
wakeup = 0x0,
wakeup_path = 0x0,
syscore = 0x0,
suspend_timer = {
entry = {
next = 0x0,
prev = 0x0
},
expires = 0x0,
base = 0xffff8808546f4000,
function = 0xffffffff814092d0 <pm_suspend_timer_fn>,
data = 0xffff880851235740,
slack = 0xffffffff,
start_pid = 0xffffffff,
start_site = 0x0,
start_comm =
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
},
timer_expires = 0x0,
work = {
data = {
counter = 0x10200
},
entry = {
next = 0xffff880851235880,
prev = 0xffff880851235880
},
func = 0xffffffff8140a6b0 <pm_runtime_work>
},
wait_queue = {
lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x0,
tickets = {
head = 0x0,
tail = 0x0
}
}
}
}
}
},
task_list = {
next = 0xffff8808512358a0,
prev = 0xffff8808512358a0
}
},
usage_count = {
counter = 0x0
},
child_count = {
counter = 0x0
},
disable_depth = 0x2,
idle_notification = 0x0,
request_pending = 0x0,
deferred_resume = 0x0,
run_wake = 0x0,
runtime_auto = 0x1,
no_callbacks = 0x0,
irq_safe = 0x0,
use_autosuspend = 0x0,
timer_autosuspends = 0x0,
request = RPM_REQ_NONE,
runtime_status = RPM_SUSPENDED,
runtime_error = 0x0,
autosuspend_delay = 0x0,
last_busy = 0x0,
active_jiffies = 0x0,
suspended_jiffies = 0x0,
accounting_timestamp = 0xfffb8e9a,
subsys_data = 0x0,
qos = 0x0
},
pm_domain = 0x0,
numa_node = 0xffffffff,
dma_mask = 0x0,
coherent_dma_mask = 0x0,
dma_parms = 0x0,
dma_pools = {
next = 0xffff880851235928,
prev = 0xffff880851235928
},
dma_mem = 0x0,
archdata = {
dma_ops = 0x0,
iommu = 0x0
},
of_node = 0x0,
acpi_node = {
handle = 0x0
},
devt = 0x0,
id = 0x0,
devres_lock = {
{
rlock = {
raw_lock = {
{
head_tail = 0x101,
tickets = {
head = 0x1,
tail = 0x1
}
}
}
}
}
},
devres_head = {
next = 0xffff880851235970,
prev = 0xffff880851235970
},
knode_class = {
n_klist = 0x0,
n_node = {
next = 0xdead000000100100,
prev = 0xdead000000200200
},
n_ref = {
refcount = {
counter = 0x0
}
}
},
class = 0xffffffff81c95a40,
groups = 0x0,
release = 0,
iommu_group = 0x0
},
ew = {
work = {
data = {
counter = 0x0
},
entry = {
next = 0x0,
prev = 0x0
},
func = 0
}
},
requeue_work = {
data = {
counter = 0x10200
},
entry = {
next = 0xffff8808512359e8,
prev = 0xffff8808512359e8
},
func = 0xffffffff814257c0 <scsi_requeue_run_queue>
},
scsi_dh_data = 0x0,
sdev_state = SDEV_DEL,
sdev_data = 0xffff880851235a10
}
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html