14 Dec, 2011
1 commit
-
zfcp_scsi_slave_destroy erroneously always tried to finish its task
even if the corresponding previous zfcp_scsi_slave_alloc returned
early. This can lead to kernel page faults on accessing uninitialized
fields of struct zfcp_scsi_dev in zfcp_erp_lun_shutdown_wait. Take the
port field of the struct to determine if slave_alloc returned early.This zfcp bug is exposed by 4e6c82b (in turn fixing f7c9c6b to be
compatible with 21208ae) which can call slave_destroy for a
corresponding previous slave_alloc that did not finish.This patch is based on James Bottomley's fix suggestion in
http://www.spinics.net/lists/linux-scsi/msg55449.html.Signed-off-by: Steffen Maier
Cc: #2.6.38+
Signed-off-by: James Bottomley
01 Nov, 2011
1 commit
-
Fix several compile errors on s390 caused by splitting module.h.
Some include additions [e.g. qdio_setup.c, zfcp_qdio.c] are in
anticipation of pending changes queued for s390 that increase
the modular use footprint.[PG: added additional obvious changes since Heiko's original patch]
Signed-off-by: Heiko Carstens
Signed-off-by: Paul Gortmaker
27 Aug, 2011
2 commits
-
FICON Express8S supports hardware data router, which requires an
adapted qdio request format.
This part 2/2 exploits the functionality in zfcp.Signed-off-by: Swen Schillig
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley -
DIF/DIX support for zfcp is no longer experimental,
and config option is no longer necessary.
Return error from queuecommand for unsupported data directions.Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley
27 Jul, 2011
1 commit
-
This allows us to move duplicated code in
(atomic_inc_not_zero() for now) toSigned-off-by: Arun Sharma
Reviewed-by: Eric Dumazet
Cc: Ingo Molnar
Cc: David Miller
Cc: Eric Dumazet
Acked-by: Mike Frysinger
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds
06 Jun, 2011
1 commit
-
The qdio SBAL entry flag is made-up of four different values that are
independent of one another. Some of the bits are reserved by the
hardware and should not be changed by qdio. Currently all four values
are overwritten since the SBAL entry flag is defined as an u32.Split the SBAL entry flag into four u8's as defined by the hardware
and don't touch the reserved bits.Signed-off-by: Jan Glauber
Signed-off-by: Martin Schwidefsky
31 Mar, 2011
1 commit
-
Fixes generated by 'codespell' and manually reviewed.
Signed-off-by: Lucas De Marchi
23 Mar, 2011
1 commit
-
Remove the owner and name members of struct
ccw_driver and convert all drivers to store
this data in the embedded struct device_driver.Signed-off-by: Sebastian Ott
Signed-off-by: Martin Schwidefsky
26 Feb, 2011
10 commits
-
Query the FC symbolic port name for reporting in the fc_host sysfs and
enable the symbolic_name attribute in the fc_host sysfs. When running
in NPIV mode, extend the symbolic port name with the devno and the
hostname. This allows better identification of Linux systems for SAN
and storage administrators.Signed-off-by: Christof Schmitt
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley -
The SCSI host and transport templates are the only members left in the
global zfcp_data struct. Move them out of zfcp_data and remove the
now unused zfcp_data struct. Also update the names of the register and
unregister functions to use the zfcp_scsi prefix.Signed-off-by: Christof Schmitt
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley -
For task management commands, only LUN and flags are required. The
regular FCP setup already sets the LUN in the fcp_cmnd. All is
required for merging the function is setting up the TM flags.Signed-off-by: Christof Schmitt
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley -
Move the kmem_cache for allocating the qtcb to zfcp_fsf.c and rename
it accordingly.Signed-off-by: Christof Schmitt
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley -
Switch the allocation of the GPN_FT request data to the FC kmem_cache
and remove the zfcp_gpn kmem_cache.Signed-off-by: Christof Schmitt
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley -
Allocate the data for the GID_PN request through the new FC
kmem_cache. While updating the GID_PN code, also introduce a helper
function for initializing the CT header for FC nameserver requests.
Remove the "paranoia" check as well, the GID_PN request data does not
suddenly change.Signed-off-by: Christof Schmitt
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley -
A data buffer that is passed to the hardware must not cross a page
boundary. zfcp uses a series of kmem_caches to align the data to not
cross a page boundary. Introduce a new kmem_cache for the FC requests
sent from the zfcp driver and use it for the ELS ADISC data. The goal
is to migrate to the FC kmem_cache in later patches and remove the
request specific kmem_caches.Signed-off-by: Christof Schmitt
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley -
zfcp requires a mempool for the status read data blocks to resubmit
the "status read" requests at any time. Each status read data block
has the size of a page (4096 bytes) and needs to be placed in one
page.Instead of having a kmem_cache for allocating page sized chunks, use
mempool_create_page_pool to create a mempool returning pages and
remove the zfcp kmem_cache.Signed-off-by: Christof Schmitt
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley -
Signed-off-by: Christof Schmitt
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley -
IS_ERR() already implies unlikely(), so it can be omitted here.
Signed-off-by: Tobias Klauser
Signed-off-by: Christof Schmitt
Signed-off-by: Steffen Maier
Signed-off-by: James Bottomley
14 Jan, 2011
1 commit
-
* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)
Documentation/trace/events.txt: Remove obsolete sched_signal_send.
writeback: fix global_dirty_limits comment runtime -> real-time
ppc: fix comment typo singal -> signal
drivers: fix comment typo diable -> disable.
m68k: fix comment typo diable -> disable.
wireless: comment typo fix diable -> disable.
media: comment typo fix diable -> disable.
remove doc for obsolete dynamic-printk kernel-parameter
remove extraneous 'is' from Documentation/iostats.txt
Fix spelling milisec -> ms in snd_ps3 module parameter description
Fix spelling mistakes in comments
Revert conflicting V4L changes
i7core_edac: fix typos in comments
mm/rmap.c: fix comment
sound, ca0106: Fix assignment to 'channel'.
hrtimer: fix a typo in comment
init/Kconfig: fix typo
anon_inodes: fix wrong function name in comment
fix comment typos concerning "consistent"
poll: fix a typo in comment
...Fix up trivial conflicts in:
- drivers/net/wireless/iwlwifi/iwl-core.c (moved to iwl-legacy.c)
- fs/ext4/ext4.hAlso fix missed 'diabled' typo in drivers/net/bnx2x/bnx2x.h while at it.
08 Jan, 2011
1 commit
-
* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6: (65 commits)
[S390] prevent unneccesary loops_per_jiffy recalculation
[S390] cpuinfo: use get_online_cpus() instead of preempt_disable()
[S390] smp: remove cpu hotplug messages
[S390] mutex: enable spinning mutex on s390
[S390] mutex: Introduce arch_mutex_cpu_relax()
[S390] cio: fix ccwgroup unregistration race condition
[S390] perf: add DWARF register lookup for s390
[S390] cleanup ftrace backend functions
[S390] ptrace cleanup
[S390] smp/idle: call init_idle() before starting a new cpu
[S390] smp: delay idle task creation
[S390] dasd: Correct retry counter for terminated I/O.
[S390] dasd: Add support for raw ECKD access.
[S390] dasd: Prevent deadlock during suspend/resume.
[S390] dasd: Improve handling of stolen DASD reservation
[S390] dasd: do path verification for paths added at runtime
[S390] dasd: add High Performance FICON multitrack support
[S390] cio: reduce memory consumption of itcw structures
[S390] nmi: enable machine checks early
[S390] qeth: buffer count imbalance
...
05 Jan, 2011
1 commit
-
Introduce a scan treshold for the qdio outbound queues. By setting the
threshold the driver can tell qdio after how much used SBALs qdio
should schedule the outbound tasklet that scans the queue for finished
SBALs. The threshold is specific by the drivers because a
Hipersockets device is much faster in utilizing outbound buffers than a
ZFCP or OSA device.The default values after how many used SBALs the tasklet should run are:
OSA: > 31 SBALs
Hipersockets: > 7 SBALs
zfcp: > 55 SBALsSigned-off-by: Jan Glauber
Signed-off-by: Martin Schwidefsky
23 Dec, 2010
1 commit
-
Conflicts:
MAINTAINERS
arch/arm/mach-omap2/pm24xx.c
drivers/scsi/bfa/bfa_fcpim.cNeeded to update to apply fixes for which the old branch was too
outdated.
22 Dec, 2010
8 commits
-
The zfcpdump tool requires a method to attach exactly one LUN. The
easiest way to achieve this is to add a new zfcp module parameter.
When allow_lun_scan is set to "false", zfcp only accepts LUNs that
have been configured through the unit_add sysfs interface.Reviewed-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
The function zfcp_cache_hw_align is only called from zfcp_module_init,
so it should be declared with __init as well.Reviewed-by: Steffen Maier
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
Initialization of the qdio waitqueue should happen when the qdio data
is initialized and the QDIOUP flag should be handled in the qdio code
as well. Adjust the code accordingly and remove the superfluos
function zfcp_erp_adapter_strategy_open_qdio.Reviewed-by: Steffen Maier
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
This patch is the final cleanup of the redesign from the zfcp tracing.
Structures and elements which were used by multiple areas of the
former debug tracing are now changed to the new scheme.Signed-off-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
This patch is the continuation to redesign the zfcp tracing to a more
straight-forward and easy to extend scheme.This patch deals with all trace records of the zfcp SCSI area.
Signed-off-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
This patch is the continuation to redesign the zfcp tracing to a more
straight-forward and easy to extend scheme.This patch deals with all trace records of the zfcp HBA area.
Signed-off-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
This patch is the continuation to redesign the zfcp tracing to a more
straight-forward and easy to extend scheme.This patch deals with all trace records of the zfcp SAN area.
Signed-off-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
The tracing environment of the zfcp LLD has become very bulky and hard
to maintain. Small changes involve a large modification process which
is error-prone and not effective. This patch is the first of a set to
redesign the zfcp tracing to a more straight-forward and easy to
extend scheme. It removes all interpretation and visualization parts
and focuses on bare logging of the information.This patch deals with all trace records of the zfcp error recovery.
Signed-off-by: Swen schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley
09 Dec, 2010
5 commits
-
Interrupting the connection to the FCP channel while I/O requests are
being issued can lead to this deadlock. scsi_dispatch_cmd already
holds the host_lock while the recovery trigger tries to acquire the
host_lock again when iterating through the scsi_devices.INFO: lockdep is turned off.
BUG: spinlock lockup on CPU#1, blast/9660, 0000000078f38878
CPU: 1 Not tainted 2.6.35.7SWEN2 #2
Process blast (pid: 9660, task: 0000000071f75940, ksp: 0000000074393ac0)
0000000074393640 00000000743935c0 0000000000000002 0000000000000000
0000000074393660 00000000743935d8 00000000743935d8 00000000005590c2
0000000000000000 0000000078f38878 0000000026ede800 0000000078f38878
000000000000000d 040000000000000c 0000000074393628 0000000000000000
0000000000000000 0000000000100b2a 00000000743935c0 0000000074393600
Call Trace:
([] show_trace+0xee/0x144)
[] do_raw_spin_lock+0x112/0x178
[] _raw_spin_lock_irqsave+0x90/0xb0
[] __scsi_iterate_devices+0x38/0xbc
[] zfcp_erp_clear_adapter_status+0xd0/0x16c
[] zfcp_erp_adapter_reopen+0x3a/0xb4
[] zfcp_fsf_req_send+0x166/0x180
[] zfcp_fsf_fcp_cmnd+0x272/0x408
[] zfcp_scsi_queuecommand+0x11c/0x1e0
[] scsi_dispatch_cmd+0x1d6/0x324
[] scsi_request_fn+0x42c/0x56c
[] __blk_run_queue+0x86/0x140
[] elv_insert+0x11a/0x208
[] blk_insert_cloned_request+0x84/0xe4
[] dm_dispatch_request+0x6c/0x94 [dm_mod]
[] map_request+0xd0/0x100 [dm_mod]
[] dm_request_fn+0xec/0x1bc [dm_mod]
[] generic_unplug_device+0x5a/0x6c
[] dm_unplug_all+0x74/0x9c [dm_mod]
[] sync_page+0x76/0x9c
[] sync_page_killable+0x22/0x60
[] __wait_on_bit_lock+0xc0/0x124
[] __lock_page_killable+0x78/0x84
[] generic_file_aio_read+0x5a4/0x7e8
[] do_sync_read+0xc8/0x12c
[] vfs_read+0xac/0x1ac
[] SyS_read+0x58/0xa8
[] sysc_noemu+0x10/0x16
[] 0x200000493c4
INFO: lockdep is turned off.Call zfcp_fsf_fcp_cmnd without the host_lock and disable the
interrupts when acquiring the req_q_lock. According to the patch
description in "[PATCH] Eliminate error handler overload of the SCSI
serial number", the serial_number is not used, so simply drop the
queuecommand wrapper function and run zfcp_scsi_queuecommand without
holding the host_lock.Reviewed-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
The ERP got values assigned for which no reference was taken. This
can lead to an unpredictable race condition. Fix this by only
assigning the values which are required and for which a reference was
pulled or is held implicitly.Signed-off-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
If the evaluation of GPN_FT requests wants to remove an invalid port
from the system the zfcp_erp_port_shutdown function is triggered.
Depending on the system status a superior action (e.g. adapter reopen)
is required. This can lead to an invalid mem access of the port struct
which might be freed at the time since the superior action is not
holding a reference of the port which triggered this ERP action.Signed-off-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
The request data assignment between the fsf abort initiator and its
corresponding handler is not consistent and leads to an unpredictable
behaviour, e.g. kernel panic. This patch fixes this issue and assigns
the correct value.Signed-off-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
The reception of a common FCP request should only be evaluated if the
corresponding SCSI request data is available. Therefore put the
information under the lock protection and verify the existence before
processing. This fixes the following kernel panic.Unable to handle kernel pointer dereference at virtual kernel address 0000000180000000
Oops: 003b [#1] PREEMPT SMP DEBUG_PAGEALLOC
CPU: 0 Not tainted 2.6.35.7-45.x.20101007-s390xdefault #1
Process blast (pid: 9711, task: 00000000a3be8e40, ksp: 00000000b221bac0)
Krnl PSW : 0704300180000000 0000000000489878 (zfcp_fsf_fcp_handler_common+0x4c/0x3a0)
R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:0 CC:3 PM:0 EA:3
Krnl GPRS: 00000000b663c1b8 0000000180000000 000000007ab5bdf0 0000000000000000
00000000b0ccd800 0000000000000018 07000000a3be8e78 00000000b5d3e600
000000007ab5bdf0 0000000000000066 00000000b72137f0 00000000b72137f0
0000000000000000 00000000005a8178 00000000bdf37a60 00000000bdf379f0
Krnl Code: 0000000000489866: e3c030000004 lg %r12,0(%r3)
000000000048986c: e310c0000004 lg %r1,0(%r12)
0000000000489872: e31011e00004 lg %r1,480(%r1)
>0000000000489878: 581011ec l %r1,492(%r1)
000000000048987c: a774001c brc 7,4898b4
0000000000489880: b91400b1 lgfr %r11,%r1
0000000000489884: 5810405c l %r1,92(%r4)
0000000000489888: 5510d00c cl %r1,12(%r13)
Call Trace:
([] debug_event_common+0x22c/0x244)
[] zfcp_fsf_fcp_cmnd_handler+0x2c/0x3b4
[] zfcp_fsf_req_complete+0x1b6/0x9dc
[] zfcp_fsf_reqid_check+0x102/0x138
[] zfcp_qdio_int_resp+0x70/0x110
[] qdio_kick_handler+0xb0/0x19c
[] __tiqdio_inbound_processing+0x30c/0xebc
[] tasklet_action+0x1b4/0x1e8
[] __do_softirq+0x106/0x1cc
[] do_softirq+0xe6/0xec
[] irq_exit+0xd4/0xd8
[] do_IRQ+0x7c0/0xf54
[] io_return+0x0/0x16
[] sub_preempt_count+0x50/0xe4
([] 0xb1f873c0)
[] _raw_spin_unlock+0x46/0x74
[] __d_lookup+0x288/0x2c8
[] do_lookup+0x7c/0x25c
[] link_path_walk+0x5e4/0xe2c
[] path_walk+0x98/0x148
[] do_path_lookup+0x74/0xc0
[] user_path_at+0x64/0xa4
[] vfs_fstatat+0x4e/0xb0
[] SyS_newstat+0x2e/0x54
[] sysc_noemu+0x10/0x16
[] 0x20000153456
INFO: lockdep is turned off.
Last Breaking-Event-Address:
[] zfcp_fsf_fcp_cmnd_handler+0x26/0x3b4Signed-off-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley
17 Nov, 2010
1 commit
-
Move the mid-layer's ->queuecommand() invocation from being locked
with the host lock to being unlocked to facilitate speeding up the
critical path for drivers who don't need this lock taken anyway.The patch below presents a simple SCSI host lock push-down as an
equivalent transformation. No locking or other behavior should change
with this patch. All existing bugs and locking orders are preserved.Additionally, add one parameter to queuecommand,
struct Scsi_Host *
and remove one parameter from queuecommand,
void (*done)(struct scsi_cmnd *)Scsi_Host* is a convenient pointer that most host drivers need anyway,
and 'done' is redundant to struct scsi_cmnd->scsi_done.Minimal code disturbance was attempted with this change. Most drivers
needed only two one-line modifications for their host lock push-down.Signed-off-by: Jeff Garzik
Acked-by: James Bottomley
Signed-off-by: Linus Torvalds
02 Nov, 2010
1 commit
-
"gadget", "through", "command", "maintain", "maintain", "controller", "address",
"between", "initiali[zs]e", "instead", "function", "select", "already",
"equal", "access", "management", "hierarchy", "registration", "interest",
"relative", "memory", "offset", "already",Signed-off-by: Uwe Kleine-König
Signed-off-by: Jiri Kosina
25 Oct, 2010
3 commits
-
Use the FCP_RSP_INFO length to correctly skip the FCP_RSP_INFO field.
Reviewed-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
zfcp_unit_release calls put_device on the port. Ensure that get_device
has been called before possibly triggering the release function
through put_device or device_unregister.Reviewed-by: Swen Schillig
Signed-off-by: Christof Schmitt
Signed-off-by: James Bottomley -
If an exchange config is executed while the local link is down, the
request succeeds but the returned data is incomplete. Proceeding with
the adapter activation is leading to an unpredictable behaviour (e.g.
kernel panic) caused by invalid values. In such a scenario the
recommended ERP is to retry the action and wait for a link up event.
If the issue persists the activation has to fail.Signed-off-by: Swen Schillig
Sigend-off-by: Christof Schmitt
Signed-off-by: James Bottomley