From: Hannes Reinecke <hare@suse.de>
To: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>, Ewan Milne <emilne@redhat.com>,
Bart van Assche <bart.vanassche@sandisk.com>,
James Bottomley <james.bottomley@hansenpartnership.com>,
linux-scsi@vger.kernel.org, Hannes Reinecke <hare@suse.de>
Subject: [PATCHv8 00/23] ALUA device handler update, part II
Date: Fri, 19 Feb 2016 09:16:57 +0100 [thread overview]
Message-ID: <1455869840-122786-1-git-send-email-hare@suse.de> (raw)
As promised here is now the second part of my ALUA device handler update.
This contains a major rework of the ALUA device handler as execution is
moved onto a workqueue. This has the advantage that we avoid having to
do multiple calls to the same LUN (as happens frequently when failing
over a LUN with several paths) and finally retries are handled correctly.
As some arrays are only capable of handling one STPG at a time I've added
a blacklist flag which then uses a singlethreaded workqueue, thereby
effectively synchronize STPG handling.
Thanks to Bart for this suggestion.
The entire patchset can be found at:
git.kernel.org:/hare/scsi-devel/h/alua-2.v8
As usual, comments and reviews are welcome.
Changes to v7:
- Remove SCSI_ACCESS_STATE_UNKNOWN as suggested by Bart
- Fixup typo in pg->flags as suggested by Bart
- Return -EINVAL when reading from access_state and no
device handler is attached.
Changes to v6:
- Fixup mutex lockdep issue noticed by Bart
- Reshuffle locks in alua_check_vpd
Changes to v5:
- Fixup lock imbalance noticed by Bart
- use #define instead of enum for access_state as suggested by Ewan
- Updated patch description as suggested by Ewan
- Changed occurrences to 'SET TARGET PORT GROUP' as suggested by Bart
Changes to v4:
- use kfree_rcu() as suggested by hch
- Use 'IS_ERR' instead of 'PTR_ERR' when checking for validity
of a pointer
- Simplify pg assignment as suggested by hch
- Use separate WARN_ON statements a suggested by hch
- Fixes to avoid I/O stall on failover
Changes to v3:
- Use scsi_device flag for blacklisting as suggested by hch
- Add Arrays for synchronous ALUA handling
- Move synchronize_rcu() into release_port_group()
- Add remaining reviewed tags
Changes to v2:
- Use a SCSI blacklist flag instead of a hardware handler parameter
for switching to synchronous ALUA handling
- Move scsi_get_device_flags{,_keyed} to scsi_devinfo.h
- Move flush_delayed_work() into release_port_group()
- Rename alua_lookup_pg() into alua_find_get_pg()
- Add __rcu annotations to keep sparse happy
Changes to v1:
- Include reviews from hch
- Switch to hardware handler parameter instead of module option
Hannes Reinecke (23):
scsi_dh_alua: Pass buffer as function argument
scsi_dh_alua: separate out alua_stpg()
scsi_dh_alua: Make stpg synchronous
scsi_dh_alua: call alua_rtpg() if stpg fails
scsi_dh_alua: switch to scsi_execute_req_flags()
scsi_dh_alua: allocate RTPG buffer separately
scsi_dh_alua: Use separate alua_port_group structure
scsi_dh_alua: use unique device id
scsi_dh_alua: simplify alua_initialize()
revert commit a8e5a2d593cb ("[SCSI] scsi_dh_alua: ALUA handler attach
should succeed while TPG is transitioning")
scsi_dh_alua: move optimize_stpg evaluation
scsi_dh_alua: remove 'rel_port' from alua_dh_data structure
scsi_dh_alua: Use workqueue for RTPG
scsi_dh_alua: Allow workqueue to run synchronously
scsi_dh_alua: Add new blacklist flag 'BLIST_SYNC_ALUA'
scsi_dh_alua: Recheck state on unit attention
scsi_dh_alua: update all port states
scsi_dh_alua: Send TEST UNIT READY to poll for transitioning
scsi_dh: add 'rescan' callback
scsi: Add 'access_state' attribute
scsi_dh_alua: use common definitions for ALUA state
scsi_dh_alua: update 'access_state' field
scsi_dh_alua: Update version to 2.0
drivers/scsi/device_handler/scsi_dh_alua.c | 979 ++++++++++++++++++++---------
drivers/scsi/scsi_devinfo.c | 2 +
drivers/scsi/scsi_lib.c | 1 +
drivers/scsi/scsi_scan.c | 11 +-
drivers/scsi/scsi_sysfs.c | 53 ++
include/scsi/scsi_device.h | 2 +
include/scsi/scsi_devinfo.h | 1 +
include/scsi/scsi_dh.h | 2 +
include/scsi/scsi_proto.h | 12 +
9 files changed, 756 insertions(+), 307 deletions(-)
--
1.8.5.6
next reply other threads:[~2016-02-19 8:17 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-19 8:16 Hannes Reinecke [this message]
2016-02-19 8:16 ` [PATCHv8 01/23] scsi_dh_alua: Pass buffer as function argument Hannes Reinecke
2016-02-19 8:16 ` [PATCHv8 02/23] scsi_dh_alua: separate out alua_stpg() Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 03/23] scsi_dh_alua: Make stpg synchronous Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 04/23] scsi_dh_alua: call alua_rtpg() if stpg fails Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 05/23] scsi_dh_alua: switch to scsi_execute_req_flags() Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 06/23] scsi_dh_alua: allocate RTPG buffer separately Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 07/23] scsi_dh_alua: Use separate alua_port_group structure Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 08/23] scsi_dh_alua: use unique device id Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 09/23] scsi_dh_alua: simplify alua_initialize() Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 10/23] revert commit a8e5a2d593cb ("[SCSI] scsi_dh_alua: ALUA handler attach should succeed while TPG is transitioning") Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 11/23] scsi_dh_alua: move optimize_stpg evaluation Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 12/23] scsi_dh_alua: remove 'rel_port' from alua_dh_data structure Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 13/23] scsi_dh_alua: Use workqueue for RTPG Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 14/23] scsi_dh_alua: Allow workqueue to run synchronously Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 15/23] scsi_dh_alua: Add new blacklist flag 'BLIST_SYNC_ALUA' Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 16/23] scsi_dh_alua: Recheck state on unit attention Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 17/23] scsi_dh_alua: update all port states Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 18/23] scsi_dh_alua: Send TEST UNIT READY to poll for transitioning Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 19/23] scsi_dh: add 'rescan' callback Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 20/23] scsi: Add 'access_state' attribute Hannes Reinecke
2016-02-19 19:10 ` Bart Van Assche
2016-02-20 8:03 ` Hannes Reinecke
2016-02-20 15:16 ` Bart Van Assche
2016-02-21 8:27 ` Hannes Reinecke
2016-02-22 3:05 ` Martin K. Petersen
2016-02-22 4:45 ` Bart Van Assche
2016-02-22 6:59 ` Hannes Reinecke
2016-02-22 15:34 ` Bart Van Assche
2016-02-23 10:27 ` Hannes Reinecke
2016-02-23 14:12 ` Ewan Milne
2016-02-19 8:17 ` [PATCHv8 21/23] scsi_dh_alua: use common definitions for ALUA state Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 22/23] scsi_dh_alua: update 'access_state' field Hannes Reinecke
2016-02-19 8:17 ` [PATCHv8 23/23] scsi_dh_alua: Update version to 2.0 Hannes Reinecke
2016-02-24 1:50 ` [PATCHv8 00/23] ALUA device handler update, part II Martin K. Petersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1455869840-122786-1-git-send-email-hare@suse.de \
--to=hare@suse.de \
--cc=bart.vanassche@sandisk.com \
--cc=emilne@redhat.com \
--cc=hch@lst.de \
--cc=james.bottomley@hansenpartnership.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.