From: "Nicholas A. Bellinger" <nab@daterainc.com>
To: target-devel <target-devel@vger.kernel.org>
Cc: linux-scsi <linux-scsi@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
Christoph Hellwig <hch@lst.de>, Hannes Reinecke <hare@suse.de>,
Sagi Grimberg <sagig@mellanox.com>,
Or Gerlitz <ogerlitz@mellanox.com>,
Nicholas Bellinger <nab@linux-iscsi.org>
Subject: [PATCH 00/14] target: Initial support for DIF Type1+Type3 emulation
Date: Wed, 8 Jan 2014 20:15:43 +0000 [thread overview]
Message-ID: <1389212157-14540-1-git-send-email-nab@daterainc.com> (raw)
From: Nicholas Bellinger <nab@linux-iscsi.org>
Hi MKP & SCSI folks,
This series contains initial support for target mode DIF Type1+Type3
emulation within target core, RAMDISK_MCP device backend, and tcm_loop
fabric driver.
DIF emulation is enabled via a new 'pi_prot_type' device attribute
within configfs, which is set after initial device configuration and
before target fabric LUN export occurs.
The DIF read/write verify emulation has been made generic enough so
it can be used by other backend drivers (eg: FILEIO), as well as
DIF v2 in the near future. Also note that the majority of the logic
has been groked from existing scsi_debug.c code.
The current plan is to enable basic support for emulated backends with
tcm_loop for v3.14 code, and then move onto IBLOCK backend support
(that requires BLOCK layer changes), and then onto other more complex
fabric driver support + hardware offloads (iser-target that Sagi + Or
are currently working on) and DIF support into KVM guest using
virtio-scsi + vhost-scsi.
Here is a quick snippet of the code in action with v3.13-rc3:
[ 846.774085] scsi8 : TCM_Loopback
[ 846.778044] scsi 8:0:1:0: Direct-Access LIO-ORG RAMDISK-MCP 4.0 PQ: 0 ANSI: 5
[ 846.780160] init_tag_map: adjusted depth to 256
[ 846.781309] init_tag_map: adjusted depth to 256
[ 846.782424] init_tag_map: adjusted depth to 256
[ 846.783685] sd 8:0:1:0: Attached scsi generic sg1 type 0
[ 846.783923] sd 8:0:1:0: [sda] Enabling DIF Type 1 protection
[ 846.783929] sd 8:0:1:0: [sda] 2097152 512-byte logical blocks: (1.07 GB/1.00 GiB)
[ 846.784111] sd 8:0:1:0: [sda] Write Protect is off
[ 846.784114] sd 8:0:1:0: [sda] Mode Sense: 43 00 00 08
[ 846.784157] sd 8:0:1:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 846.785357] sda: unknown partition table
[ 846.795464] sd 8:0:1:0: [sda] Enabling DIX T10-DIF-TYPE1-CRC protection
[ 846.797278] sd 8:0:1:0: [sda] DIF application tag size 2
[ 846.798951] sd 8:0:1:0: [sda] Attached SCSI disk
<First 4k WRITE_10 performing Host Generate + Target Verify>
[ 901.477786] Entering sd_dif_type1_generate >>>>>>>>>>>>>>>
[ 901.477809] SD TYPE1 Generate: sector: 0 guard_tag: 0x5fd1 app_tag: 0x0000 ref_tag: 0
[ 901.477823] SD TYPE1 Generate: sector: 1 guard_tag: 0x41de app_tag: 0x0000 ref_tag: 1
[ 901.477835] SD TYPE1 Generate: sector: 2 guard_tag: 0x27b1 app_tag: 0x0000 ref_tag: 2
[ 901.477848] SD TYPE1 Generate: sector: 3 guard_tag: 0xeb4c app_tag: 0x0000 ref_tag: 3
[ 901.477860] SD TYPE1 Generate: sector: 4 guard_tag: 0x5d81 app_tag: 0x0000 ref_tag: 4
[ 901.477872] SD TYPE1 Generate: sector: 5 guard_tag: 0xda61 app_tag: 0x0000 ref_tag: 5
[ 901.477884] SD TYPE1 Generate: sector: 6 guard_tag: 0x80df app_tag: 0x0000 ref_tag: 6
[ 901.477896] SD TYPE1 Generate: sector: 7 guard_tag: 0x5ede app_tag: 0x0000 ref_tag: 7
[ 901.477940] sd_prep_fn: CDB: 0x2a blk_integrity_rq(rq): 1
[ 901.481576] DIF WRITE sector: 0 guard_tag: 0x5fd1 app_tag: 0x0000 ref_tag: 0
[ 901.481591] DIF WRITE sector: 1 guard_tag: 0x41de app_tag: 0x0000 ref_tag: 1
[ 901.481615] DIF WRITE sector: 2 guard_tag: 0x27b1 app_tag: 0x0000 ref_tag: 2
[ 901.481637] DIF WRITE sector: 3 guard_tag: 0xeb4c app_tag: 0x0000 ref_tag: 3
[ 901.481649] DIF WRITE sector: 4 guard_tag: 0x5d81 app_tag: 0x0000 ref_tag: 4
[ 901.481661] DIF WRITE sector: 5 guard_tag: 0xda61 app_tag: 0x0000 ref_tag: 5
[ 901.481673] DIF WRITE sector: 6 guard_tag: 0x80df app_tag: 0x0000 ref_tag: 6
[ 901.481685] DIF WRITE sector: 7 guard_tag: 0x5ede app_tag: 0x0000 ref_tag: 7
<Subsequent 4k READ_10 performing Target Verify + Host Verify>
[ 901.522883] sd_prep_fn: CDB: 0x28 blk_integrity_rq(rq): 1
[ 901.528637] DIF READ sector: 0 guard_tag: 0x5fd1 app_tag: 0x0000 ref_tag: 0
[ 901.528655] DIF READ sector: 1 guard_tag: 0x41de app_tag: 0x0000 ref_tag: 1
[ 901.528667] DIF READ sector: 2 guard_tag: 0x27b1 app_tag: 0x0000 ref_tag: 2
[ 901.528679] DIF READ sector: 3 guard_tag: 0xeb4c app_tag: 0x0000 ref_tag: 3
[ 901.528691] DIF READ sector: 4 guard_tag: 0x5d81 app_tag: 0x0000 ref_tag: 4
[ 901.528703] DIF READ sector: 5 guard_tag: 0xda61 app_tag: 0x0000 ref_tag: 5
[ 901.528715] DIF READ sector: 6 guard_tag: 0x80df app_tag: 0x0000 ref_tag: 6
[ 901.528727] DIF READ sector: 7 guard_tag: 0x5ede app_tag: 0x0000 ref_tag: 7
[ 901.528788] Entering bio_integrity_verify sector: 0 >>>>>>>>>>>>>>>>>>>>>>>
[ 901.535807] bio_integrity_verify: bio->bi_idx: 1 bio->bi_vcnt: 1
[ 901.538222] SD TYPE1 Verify sector: 0 guard_tag: 0x5fd1 app_tag: 0x0000 ref_tag: 0
[ 901.538226] SD TYPE1 Verify sector: 1 guard_tag: 0x41de app_tag: 0x0000 ref_tag: 1
[ 901.538230] SD TYPE1 Verify sector: 2 guard_tag: 0x27b1 app_tag: 0x0000 ref_tag: 2
[ 901.538234] SD TYPE1 Verify sector: 3 guard_tag: 0xeb4c app_tag: 0x0000 ref_tag: 3
[ 901.538238] SD TYPE1 Verify sector: 4 guard_tag: 0x5d81 app_tag: 0x0000 ref_tag: 4
[ 901.538241] SD TYPE1 Verify sector: 5 guard_tag: 0xda61 app_tag: 0x0000 ref_tag: 5
[ 901.538245] SD TYPE1 Verify sector: 6 guard_tag: 0x80df app_tag: 0x0000 ref_tag: 6
[ 901.538248] SD TYPE1 Verify sector: 7 guard_tag: 0x5ede app_tag: 0x0000 ref_tag: 7
Please review as v3.14-rc1 code.
Thank you,
--nab
Nicholas Bellinger (14):
target: Add DIF related base definitions
target: Add DIF CHECK_CONDITION ASC/ASCQ exception cases
target/sbc: Add sbc_check_prot + update sbc_parse_cdb for DIF
target/sbc: Add DIF TYPE1+TYPE3 read/write verify emulation
target/spc: Add protection bit to standard INQUIRY output
target/spc: Add protection related bits to INQUIRY EVPD=0x86
target/sbc: Add P_TYPE + PROT_EN bits to READ_CAPACITY_16
target/spc: Expose ATO bit in control mode page
target/configfs: Expose protection device attributes
target: Add protection SGLs to target_submit_cmd_map_sgls
target/rd: Refactor rd_build_device_space + rd_release_device_space
target/rd: Add support for protection SGL setup + release
target/rd: Add DIF protection into rd_execute_rw
tcm_loop: Enable DIF/DIX modes in SCSI host LLD
drivers/target/loopback/tcm_loop.c | 12 +-
drivers/target/target_core_configfs.c | 12 ++
drivers/target/target_core_device.c | 65 ++++++++
drivers/target/target_core_internal.h | 2 +
drivers/target/target_core_rd.c | 264 ++++++++++++++++++++++++++------
drivers/target/target_core_rd.h | 4 +
drivers/target/target_core_sbc.c | 224 +++++++++++++++++++++++++++
drivers/target/target_core_spc.c | 27 ++++
drivers/target/target_core_transport.c | 46 +++++-
drivers/vhost/scsi.c | 2 +-
include/target/target_core_backend.h | 6 +
include/target/target_core_base.h | 62 ++++++++
include/target/target_core_fabric.h | 3 +-
13 files changed, 678 insertions(+), 51 deletions(-)
--
1.7.10.4
next reply other threads:[~2014-01-08 20:36 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-08 20:15 Nicholas A. Bellinger [this message]
2014-01-08 20:15 ` [PATCH 01/14] target: Add DIF related base definitions Nicholas A. Bellinger
2014-01-09 10:58 ` Sagi Grimberg
2014-01-08 20:15 ` [PATCH 02/14] target: Add DIF CHECK_CONDITION ASC/ASCQ exception cases Nicholas A. Bellinger
2014-01-09 10:43 ` Sagi Grimberg
2014-01-10 6:53 ` Nicholas A. Bellinger
2014-01-14 7:44 ` Sagi Grimberg
2014-01-14 8:53 ` Nicholas A. Bellinger
2014-01-14 10:56 ` Sagi Grimberg
2014-01-08 20:15 ` [PATCH 03/14] target/sbc: Add sbc_check_prot + update sbc_parse_cdb for DIF Nicholas A. Bellinger
2014-01-09 14:58 ` Sagi Grimberg
2014-01-10 7:04 ` Nicholas A. Bellinger
2014-01-12 11:59 ` Sagi Grimberg
2014-01-13 19:23 ` Nicholas A. Bellinger
2014-01-10 20:30 ` Martin K. Petersen
2014-01-08 20:15 ` [PATCH 04/14] target/sbc: Add DIF TYPE1+TYPE3 read/write verify emulation Nicholas A. Bellinger
2014-01-08 20:15 ` [PATCH 05/14] target/spc: Add protection bit to standard INQUIRY output Nicholas A. Bellinger
2014-01-10 20:34 ` Martin K. Petersen
2014-01-08 20:15 ` [PATCH 06/14] target/spc: Add protection related bits to INQUIRY EVPD=0x86 Nicholas A. Bellinger
2014-01-10 20:35 ` Martin K. Petersen
2014-01-08 20:15 ` [PATCH 07/14] target/sbc: Add P_TYPE + PROT_EN bits to READ_CAPACITY_16 Nicholas A. Bellinger
2014-01-09 10:24 ` Sagi Grimberg
2014-01-10 6:21 ` Nicholas A. Bellinger
2014-01-10 19:50 ` Andy Grover
2014-01-10 20:15 ` Nicholas A. Bellinger
2014-01-10 20:46 ` Martin K. Petersen
2014-01-12 11:49 ` Sagi Grimberg
2014-01-10 20:40 ` Martin K. Petersen
2014-01-10 20:39 ` Martin K. Petersen
2014-01-12 12:13 ` Sagi Grimberg
2014-01-12 12:33 ` Martin K. Petersen
2014-01-12 12:47 ` Sagi Grimberg
2014-01-12 12:53 ` Martin K. Petersen
2014-01-12 16:37 ` Douglas Gilbert
2014-01-12 17:21 ` Martin K. Petersen
2014-01-12 18:53 ` Douglas Gilbert
2014-01-13 16:33 ` Sagi Grimberg
2014-01-12 12:13 ` Sagi Grimberg
2014-01-10 20:37 ` Martin K. Petersen
2014-01-08 20:15 ` [PATCH 08/14] target/spc: Expose ATO bit in control mode page Nicholas A. Bellinger
2014-01-10 20:57 ` Martin K. Petersen
2014-01-08 20:15 ` [PATCH 09/14] target/configfs: Expose protection device attributes Nicholas A. Bellinger
2014-01-09 11:01 ` Sagi Grimberg
2014-01-10 7:00 ` Nicholas A. Bellinger
2014-01-12 11:56 ` Sagi Grimberg
2014-01-10 21:01 ` Martin K. Petersen
2014-01-12 12:18 ` Sagi Grimberg
2014-01-12 12:43 ` Martin K. Petersen
2014-01-12 12:52 ` Sagi Grimberg
2014-01-13 18:30 ` Nicholas A. Bellinger
2014-01-13 18:52 ` James Bottomley
2014-01-13 19:27 ` Nicholas A. Bellinger
2014-01-13 19:43 ` James Bottomley
2014-01-13 20:19 ` Martin K. Petersen
2014-01-13 20:24 ` James Bottomley
2014-01-13 20:30 ` Martin K. Petersen
2014-01-08 20:15 ` [PATCH 10/14] target: Add protection SGLs to target_submit_cmd_map_sgls Nicholas A. Bellinger
2014-01-08 20:15 ` [PATCH 11/14] target/rd: Refactor rd_build_device_space + rd_release_device_space Nicholas A. Bellinger
2014-01-08 20:15 ` [PATCH 12/14] target/rd: Add support for protection SGL setup + release Nicholas A. Bellinger
2014-01-08 20:15 ` [PATCH 13/14] target/rd: Add DIF protection into rd_execute_rw Nicholas A. Bellinger
2014-01-09 10:32 ` Sagi Grimberg
2014-01-10 6:52 ` Nicholas A. Bellinger
2014-01-12 11:53 ` Sagi Grimberg
2014-01-13 19:22 ` Nicholas A. Bellinger
2014-01-10 21:06 ` Martin K. Petersen
2014-01-12 12:23 ` Sagi Grimberg
2014-01-08 20:15 ` [PATCH 14/14] tcm_loop: Enable DIF/DIX modes in SCSI host LLD Nicholas A. Bellinger
2014-01-10 21:09 ` Martin K. Petersen
2014-01-13 18:45 ` Nicholas A. Bellinger
2014-01-13 20:08 ` Martin K. Petersen
2014-01-10 2:00 ` [PATCH 00/14] target: Initial support for DIF Type1+Type3 emulation Martin K. Petersen
2014-01-10 5:57 ` Nicholas A. Bellinger
2014-01-15 18:03 ` sagi grimberg
2014-01-15 21:55 ` Nicholas A. Bellinger
2014-01-16 1:42 ` Martin K. Petersen
2014-01-16 2:32 ` Nicholas A. Bellinger
2014-01-16 3:04 ` Martin K. Petersen
2014-01-16 7:45 ` sagi grimberg
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=1389212157-14540-1-git-send-email-nab@daterainc.com \
--to=nab@daterainc.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=nab@linux-iscsi.org \
--cc=ogerlitz@mellanox.com \
--cc=sagig@mellanox.com \
--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
all inboxes | Powered by JetHome®