linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
Cc: Nic Bellinger <nab@daterainc.com>,
	target-devel@vger.kernel.org, linux-scsi@vger.kernel.org
Subject: Re: [PATCH 7/8] target_core_alua: Referrals infrastructure
Date: Wed, 18 Dec 2013 09:09:12 +0100	[thread overview]
Message-ID: <52B15828.2000403@suse.de> (raw)
In-Reply-To: <1387310791.20247.312.camel@haakon3.risingtidesystems.com>

On 12/17/2013 09:06 PM, Nicholas A. Bellinger wrote:
> On Tue, 2013-12-17 at 09:18 +0100, Hannes Reinecke wrote:
>> Add infrastructure for referrals.
>>
>> Signed-off-by: Hannes Reinecke <hare@suse.de>
>> ---
>>  drivers/target/target_core_alua.c     | 153 ++++++++++++++++++++++++++++++++++
>>  drivers/target/target_core_alua.h     |   4 +-
>>  drivers/target/target_core_configfs.c |   9 +-
>>  drivers/target/target_core_device.c   |   2 +
>>  drivers/target/target_core_sbc.c      |   5 +-
>>  drivers/target/target_core_spc.c      |  20 +++++
>>  include/scsi/scsi.h                   |   1 +
>>  include/target/target_core_base.h     |  18 ++++
>>  8 files changed, 209 insertions(+), 3 deletions(-)
>>
> 
> Applied, with one comment below..
> 
>> diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c
>> index 01f0c71..dbfbf14 100644
>> --- a/drivers/target/target_core_alua.c
>> +++ b/drivers/target/target_core_alua.c
>> @@ -58,6 +58,75 @@ static LIST_HEAD(lu_gps_list);
>>  struct t10_alua_lu_gp *default_lu_gp;
>>  
>>  /*
>> + * REPORT REFERRALS
>> + *
>> + * See sbc3r35 section 5.23
>> + */
>> +sense_reason_t
>> +target_emulate_report_referrals(struct se_cmd *cmd)
>> +{
>> +	struct se_device *dev = cmd->se_dev;
>> +	struct t10_alua_lba_map *map;
>> +	struct t10_alua_lba_map_member *map_mem;
>> +	unsigned char *buf;
>> +	u32 rd_len = 0, off;
>> +
>> +	if (cmd->data_length < 4) {
>> +		pr_warn("REPORT REFERRALS allocation length %u too"
>> +			" small\n", cmd->data_length);
>> +		return TCM_INVALID_CDB_FIELD;
>> +	}
>> +
>> +	buf = transport_kmap_data_sg(cmd);
>> +	if (!buf)
>> +		return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
>> +
>> +	off = 4;
>> +	spin_lock(&dev->t10_alua.lba_map_lock);
>> +	if (list_empty(&dev->t10_alua.lba_map_list)) {
>> +		spin_unlock(&dev->t10_alua.lba_map_lock);
>> +		transport_kunmap_data_sg(cmd);
>> +
>> +		return TCM_UNSUPPORTED_SCSI_OPCODE;
>> +	}
>> +
>> +	list_for_each_entry(map, &dev->t10_alua.lba_map_list,
>> +			    lba_map_list) {
>> +		int desc_num = off + 3;
>> +		int pg_num;
>> +
>> +		off += 4;
>> +		put_unaligned_be64(map->lba_map_first_lba, &buf[off]);
>> +		off += 8;
>> +		put_unaligned_be64(map->lba_map_last_lba, &buf[off]);
>> +		off += 8;
>> +		rd_len += 20;
>> +		pg_num = 0;
>> +		list_for_each_entry(map_mem, &map->lba_map_mem_list,
>> +				    lba_map_mem_list) {
>> +			buf[off++] = map_mem->lba_map_mem_alua_state & 0x0f;
>> +			off++;
>> +			buf[off++] = (map_mem->lba_map_mem_alua_pg_id >> 8) & 0xff;
>> +			buf[off++] = (map_mem->lba_map_mem_alua_pg_id & 0xff);
>> +			rd_len += 4;
>> +			pg_num++;
>> +		}
>> +		buf[desc_num] = pg_num;
>> +	}
>> +	spin_unlock(&dev->t10_alua.lba_map_lock);
>> +
> 
> The above loop needs a check based on cmd->data_length to not overflow
> buf here..
> 
> Care to send an incremental patch for this..?
> 
On its way. Alongside a patch for the inquiry buffer size.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      zSeries & Storage
hare@suse.de			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2013-12-18  8:09 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-17  8:18 [PATCHv3 0/8] Referrals support Hannes Reinecke
2013-12-17  8:18 ` [PATCH 1/8] target_core_alua: validate ALUA state transition Hannes Reinecke
2013-12-17 19:32   ` Nicholas A. Bellinger
2013-12-17  8:18 ` [PATCH 2/8] target_core_alua: Allocate ALUA metadata on demand Hannes Reinecke
2013-12-17 19:32   ` Nicholas A. Bellinger
2013-12-17  8:18 ` [PATCH 3/8] target_core_alua: store old and pending ALUA state Hannes Reinecke
2013-12-17 19:32   ` Nicholas A. Bellinger
2013-12-17  8:18 ` [PATCH 4/8] target_core_alua: Use workqueue for ALUA transitioning Hannes Reinecke
2013-12-17 19:32   ` Nicholas A. Bellinger
2013-12-17  8:18 ` [PATCH 5/8] target_core: simplify scsi_name_len calculation Hannes Reinecke
2013-12-17 19:32   ` Nicholas A. Bellinger
2013-12-17  8:18 ` [PATCH 6/8] target_core_spc: Include target device descriptor in VPD page 83 Hannes Reinecke
2013-12-17 19:50   ` Nicholas A. Bellinger
2013-12-17 20:01     ` Nicholas A. Bellinger
2013-12-18  9:20       ` Hannes Reinecke
2014-03-05 19:41         ` Andy Grover
2014-03-05 19:45           ` Andy Grover
2013-12-17  8:18 ` [PATCH 7/8] target_core_alua: Referrals infrastructure Hannes Reinecke
2013-12-17 20:06   ` Nicholas A. Bellinger
2013-12-18  8:09     ` Hannes Reinecke [this message]
2013-12-17  8:18 ` [PATCH 8/8] target_core_alua: Referrals configfs integration Hannes Reinecke
2013-12-17 20:49   ` Nicholas A. Bellinger
2013-12-18  8:15     ` Hannes Reinecke
2013-12-19  6:25       ` Nicholas A. Bellinger
2013-12-19  7:04         ` Hannes Reinecke

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=52B15828.2000403@suse.de \
    --to=hare@suse.de \
    --cc=linux-scsi@vger.kernel.org \
    --cc=nab@daterainc.com \
    --cc=nab@linux-iscsi.org \
    --cc=target-devel@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).