[Stgt-devel] [Patch 2/2] Move lu_phy_attr struct into scsi_lu struct.

Ming Zhang blackmagic02881
Wed Jun 13 15:48:21 CEST 2007


On Wed, 2007-06-13 at 18:04 +1000, Mark Harvey wrote:
> Re-arrange lu_phy_attr structure into scsi_lu struct.
> 
> Signed-off-by: Mark Harvey <markh794 at gmail.com>
> 
> diff --git a/usr/mmc.c b/usr/mmc.c
> index a8aced5..0ac5f72 100644
> --- a/usr/mmc.c
> +++ b/usr/mmc.c
> @@ -126,11 +126,11 @@ static int mmc_lu_init(struct scsi_lu *lu)
>  	if (spc_lu_init(lu))
>  		return -ENOMEM;
>  
> -	memcpy(lu->attrs->product_id, "VIRTUAL-CDROM", 16);
> -	lu->attrs->sense_format = 0;
> -	lu->attrs->version_desc[0] = 0x02A0; /* MMC3, no version claimed */
> -	lu->attrs->version_desc[1] = 0x0960; /* iSCSI */
> -	lu->attrs->version_desc[2] = 0x0300; /* SPC-3 */
> +	memcpy(lu->attrs.product_id, "VIRTUAL-CDROM", 16);

access the memory over boundary. strncpy is better.


> +	lu->attrs.sense_format = 0;
> +	lu->attrs.version_desc[0] = 0x02A0; /* MMC3, no version claimed */
> +	lu->attrs.version_desc[1] = 0x0960; /* iSCSI */
> +	lu->attrs.version_desc[2] = 0x0300; /* SPC-3 */
>  
>  	return 0;
>  }
> diff --git a/usr/osd.c b/usr/osd.c
> index ac33168..33d6455 100644
> --- a/usr/osd.c
> +++ b/usr/osd.c
> @@ -56,11 +56,11 @@ static int osd_lu_init(struct scsi_lu *lu)
>  	if (spc_lu_init(lu))
>  		return -ENOMEM;
>  
> -	memcpy(lu->attrs->product_id, "OSD", 16);
> -	lu->attrs->sense_format = 1;
> -	lu->attrs->version_desc[0] = 0x0340; /* OSD */
> -	lu->attrs->version_desc[1] = 0x0960; /* iSCSI */
> -	lu->attrs->version_desc[2] = 0x0300; /* SPC-3 */
> +	memcpy(lu->attrs.product_id, "OSD", 16);
> +	lu->attrs.sense_format = 1;
> +	lu->attrs.version_desc[0] = 0x0340; /* OSD */
> +	lu->attrs.version_desc[1] = 0x0960; /* iSCSI */
> +	lu->attrs.version_desc[2] = 0x0300; /* SPC-3 */
>  
>  	return 0;
>  }
> diff --git a/usr/sbc.c b/usr/sbc.c
> index 2924cc6..8fe39e7 100644
> --- a/usr/sbc.c
> +++ b/usr/sbc.c
> @@ -342,10 +342,10 @@ static int sbc_lu_init(struct scsi_lu *lu)
>  	if (spc_lu_init(lu))
>  		return -ENOMEM;
>  
> -	memcpy(lu->attrs->product_id, "VIRTUAL-DISK", 16);
> -	lu->attrs->version_desc[0] = 0x04C0; /* SBC-3 no version claimed */
> -	lu->attrs->version_desc[1] = 0x0960; /* iSCSI */
> -	lu->attrs->version_desc[2] = 0x0300; /* SPC-3 */
> +	memcpy(lu->attrs.product_id, "VIRTUAL-DISK", 16);
> +	lu->attrs.version_desc[0] = 0x04C0; /* SBC-3 no version claimed */
> +	lu->attrs.version_desc[1] = 0x0960; /* iSCSI */
> +	lu->attrs.version_desc[2] = 0x0300; /* SPC-3 */
>  
>  	return 0;
>  }
> diff --git a/usr/scsi.c b/usr/scsi.c
> index 50e2080..c9fb7b6 100644
> --- a/usr/scsi.c
> +++ b/usr/scsi.c
> @@ -40,7 +40,7 @@
>  
>  void sense_data_build(struct scsi_cmd *cmd, uint8_t key, uint8_t asc, uint8_t asq)
>  {
> -	if (cmd->dev && cmd->dev->attrs->sense_format) {
> +	if (cmd->dev && cmd->dev->attrs.sense_format) {
>  		/* descriptor format */
>  
>  		cmd->sense_buffer[0] = 0x72;  /* current, not deferred */
> diff --git a/usr/spc.c b/usr/spc.c
> index b9f4e16..bf30a16 100644
> --- a/usr/spc.c
> +++ b/usr/spc.c
> @@ -64,19 +64,19 @@ int spc_inquiry(int host_no, struct scsi_cmd *cmd)
>  		uint16_t *desc;
>  
>  		data[0] = device_type;
> -		data[1] = (cmd->dev->attrs->removable) ? 0x80 : 0;
> +		data[1] = (cmd->dev->attrs.removable) ? 0x80 : 0;
>  		data[2] = 5;	/* SPC-3 */
>  		data[3] = 0x42;
>  		data[7] = 0x02;
>  
>  		memset(data + 8, 0x20, 28);
> -		strncpy((char *)data + 8, cmd->dev->attrs->vendor_id, 8);
> -		strncpy((char *)data + 16, cmd->dev->attrs->product_id, 16);
> -		strncpy((char *)data + 32, cmd->dev->attrs->product_rev, 4);
> +		strncpy((char *)data + 8, cmd->dev->attrs.vendor_id, 8);
> +		strncpy((char *)data + 16, cmd->dev->attrs.product_id, 16);
> +		strncpy((char *)data + 32, cmd->dev->attrs.product_rev, 4);
>  
>  		desc = (uint16_t *)(data + 58);
> -		for (i = 0; i < ARRAY_SIZE(cmd->dev->attrs->version_desc); i++)
> -			*desc++ = __cpu_to_be16(cmd->dev->attrs->version_desc[i]);
> +		for (i = 0; i < ARRAY_SIZE(cmd->dev->attrs.version_desc); i++)
> +			*desc++ = __cpu_to_be16(cmd->dev->attrs.version_desc[i]);
>  
>  		len = 66;
>  		data[4] = len - 5;	/* Additional Length */
> @@ -108,12 +108,12 @@ int spc_inquiry(int host_no, struct scsi_cmd *cmd)
>  			len = 4 + SCSI_SN_LEN;
>  			ret = SAM_STAT_GOOD;
>  
> -			if (cmd->dev && strlen(cmd->dev->attrs->scsi_sn)) {
> +			if (cmd->dev && strlen(cmd->dev->attrs.scsi_sn)) {
>  				uint8_t *p;
>  				char *q;
>  
>  				p = data + 4 + tmp - 1;
> -				q = cmd->dev->attrs->scsi_sn + SCSI_SN_LEN - 1;
> +				q = cmd->dev->attrs.scsi_sn + SCSI_SN_LEN - 1;
>  				for (; tmp > 0; tmp--, q)
>  					*(p--) = *(q--);
>  			}
> @@ -127,7 +127,7 @@ int spc_inquiry(int host_no, struct scsi_cmd *cmd)
>  			data[7] = tmp;
>  			if (cmd->dev)
>  				strncpy((char *) data + 8,
> -					cmd->dev->attrs->scsi_id, SCSI_ID_LEN);
> +					cmd->dev->attrs.scsi_id, SCSI_ID_LEN);
>  
>  			len = tmp + 8;
>  			ret = SAM_STAT_GOOD;
> @@ -322,36 +322,36 @@ int spc_lu_config(struct scsi_lu *lu, char *params) {
>  		token = match_token(p, tokens, args);
>  		switch (token) {
>  		case Opt_scsiid:
> -			match_strncpy(lu->attrs->scsi_id, &args[0],
> -				      sizeof(lu->attrs->scsi_id) - 1);
> +			match_strncpy(lu->attrs.scsi_id, &args[0],
> +				      sizeof(lu->attrs.scsi_id) - 1);
>  			break;
>  		case Opt_scsisn:
> -			match_strncpy(lu->attrs->scsi_sn, &args[0],
> -				      sizeof(lu->attrs->scsi_sn) - 1);
> +			match_strncpy(lu->attrs.scsi_sn, &args[0],
> +				      sizeof(lu->attrs.scsi_sn) - 1);
>  			break;
>  		case Opt_vendorid:
> -			match_strncpy(lu->attrs->vendor_id, &args[0],
> -					sizeof(lu->attrs->vendor_id));
> +			match_strncpy(lu->attrs.vendor_id, &args[0],
> +					sizeof(lu->attrs.vendor_id));
>  			break;
>  		case Opt_productid:
> -			match_strncpy(lu->attrs->product_id, &args[0],
> -					sizeof(lu->attrs->product_id));
> +			match_strncpy(lu->attrs.product_id, &args[0],
> +					sizeof(lu->attrs.product_id));
>  			break;
>  		case Opt_productrev:
> -			match_strncpy(lu->attrs->product_rev, &args[0],
> -					sizeof(lu->attrs->product_rev));
> +			match_strncpy(lu->attrs.product_rev, &args[0],
> +					sizeof(lu->attrs.product_rev));
>  			break;
>  		case Opt_sense_format:
>  			match_strncpy(buf, &args[0],  sizeof(buf));
> -			lu->attrs->sense_format = atoi(buf);
> +			lu->attrs.sense_format = atoi(buf);
>  			break;
>  		case Opt_removable:
>  			match_strncpy(buf, &args[0],  sizeof(buf));
> -			lu->attrs->removable = atoi(buf);
> +			lu->attrs.removable = atoi(buf);
>  			break;
>  		case Opt_online:
>  			match_strncpy(buf, &args[0],  sizeof(buf));
> -			lu->attrs->online = atoi(buf);
> +			lu->attrs.online = atoi(buf);
>  			break;
>  		default:
>  			err = TGTADM_INVALID_REQUEST;
> @@ -362,16 +362,12 @@ int spc_lu_config(struct scsi_lu *lu, char *params) {
>  
>  int spc_lu_init(struct scsi_lu *lu)
>  {
> -	lu->attrs = zalloc(sizeof(struct lu_phy_attr));
> -	if (!lu->attrs)
> -		return -ENOMEM;
> -
> -	memcpy(lu->attrs->vendor_id, VENDOR_ID, 8);
> -	memcpy(lu->attrs->product_rev, "0001", 4);
> -	lu->attrs->removable = 0;
> -	lu->attrs->sense_format = 0;
> -	lu->attrs->online = 0;
> -	lu->attrs->reset = 1;
> +	memcpy(lu->attrs.vendor_id, VENDOR_ID, 8);
> +	memcpy(lu->attrs.product_rev, "0001", 4);
> +	lu->attrs.removable = 0;
> +	lu->attrs.sense_format = 0;
> +	lu->attrs.online = 0;
> +	lu->attrs.reset = 1;
>  
>  	return 0;
>  }
> diff --git a/usr/target.c b/usr/target.c
> index 5b74be1..9170310 100644
> --- a/usr/target.c
> +++ b/usr/target.c
> @@ -252,9 +252,9 @@ int tgt_device_create(int tid, uint64_t lun, char *args)
>  		err = target->dev_type_template.lu_init(lu);
>  
>  	if (!err) {
> -		snprintf(lu->attrs->scsi_id, sizeof(lu->attrs->scsi_id),
> +		snprintf(lu->attrs.scsi_id, sizeof(lu->attrs.scsi_id),
>  			 "deadbeaf%d:%" PRIu64, tid, lun);
> -		snprintf(lu->attrs->scsi_sn, sizeof(lu->attrs->scsi_sn),
> +		snprintf(lu->attrs.scsi_sn, sizeof(lu->attrs.scsi_sn),
>  			 "beaf%d%" PRIu64, tid, lun);
>  	}
>  
> @@ -1126,8 +1126,8 @@ int tgt_target_show_all(char *buf, int rest)
>  				 _TAB3 "Size: %s\n"
>  				 _TAB3 "Backing store: %s\n",
>  				 lu->lun,
> -				 lu->attrs->scsi_id,
> -				 lu->attrs->scsi_sn,
> +				 lu->attrs.scsi_id,
> +				 lu->attrs.scsi_sn,
>  				 print_disksize(lu->size),
>  				 lu->path);
>  
> diff --git a/usr/tgtd.h b/usr/tgtd.h
> index 35645b1..addd5a0 100644
> --- a/usr/tgtd.h
> +++ b/usr/tgtd.h
> @@ -63,7 +63,7 @@ struct scsi_lu {
>  	uint64_t reserve_id;
>  
>  	/* TODO: needs a structure for lots of device parameters */
> -	struct lu_phy_attr *attrs;
> +	struct lu_phy_attr attrs;
>  };
>  
>  struct scsi_cmd {
> 
> 
> 
> _______________________________________________
> Stgt-devel mailing list
> Stgt-devel at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/stgt-devel




More information about the stgt mailing list