07 Mar, 2014

1 commit

  • When copying between device and command protection scatters
    we must take into account that device scatters might be offset
    and we might copy outside scatter range. Thus for each cmd prot
    scatter we must take the min between cmd prot scatter, dev prot
    scatter, and whats left (and loop in case we havn't copied enough
    from/to cmd prot scatter).

    Example (single t_prot_sg of len 2048):
    kernel: sbc_dif_copy_prot: se_cmd=ffff880380aaf970, left=2048, len=2048, dev_prot_sg_offset=3072, dev_prot_sg_len=4096
    kernel: isert: se_cmd=ffff880380aaf970 PI error found type 0 at sector 0x2600 expected 0x0 vs actual 0x725f, lba=2580

    Instead of copying 2048 from offset 3072 (copying junk outside sg
    limit 4096), we must to copy 1024 and continue to next sg until
    we complete cmd prot scatter.

    This issue was found using iSER T10-PI offload over rd_mcp (wasn't
    discovered with fileio since file_dev prot sglists are never offset).

    Changes from v1:
    - Fix sbc_copy_prot copy length miss-calculation

    Changes from v0:
    - Removed psg->offset consideration for psg_len computation
    - Removed sg->offset consideration for offset condition
    - Added copied consideraiton for len computation
    - Added copied offset to paddr when doing memcpy

    Signed-off-by: Sagi Grimberg
    Signed-off-by: Nicholas Bellinger

    Sagi Grimberg
     

05 Mar, 2014

3 commits

  • This patch addresses a couple of different hug shutdown issues
    related to wait_event() + isert_conn->state. First, it changes
    isert_conn->conn_wait + isert_conn->conn_wait_comp_err from
    waitqueues to completions, and sets ISER_CONN_TERMINATING from
    within isert_disconnect_work().

    Second, it splits isert_free_conn() into isert_wait_conn() that
    is called earlier in iscsit_close_connection() to ensure that
    all outstanding commands have completed before continuing.

    Finally, it breaks isert_cq_comp_err() into seperate TX / RX
    related code, and adds logic in isert_cq_rx_comp_err() to wait
    for outstanding commands to complete before setting ISER_CONN_DOWN
    and calling complete(&isert_conn->conn_wait_comp_err).

    Acked-by: Sagi Grimberg
    Cc: Or Gerlitz
    Cc: #3.10+
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • There are a handful of uses of list_empty() for cmd->i_conn_node
    within iser-target code that expect to return false once a cmd
    has been removed from the per connect list.

    This patch changes all uses of list_del -> list_del_init in order
    to ensure that list_empty() returns false as expected.

    Acked-by: Sagi Grimberg
    Cc: Or Gerlitz
    Cc: #3.10+
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch fixes a bug in iscsit_get_tpg_from_np() where the
    tpg->tpg_state sanity check was looking for TPG_STATE_FREE,
    instead of != TPG_STATE_ACTIVE.

    The latter is expected during a normal TPG shutdown once the
    tpg_state goes into TPG_STATE_INACTIVE in order to reject any
    new incoming login attempts.

    Cc: #3.10+
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     

24 Feb, 2014

3 commits

  • Because then this sg is passed to sbc_copy_prot which will
    hit a protection fault in cases we have more than a single sg.

    Signed-off-by: Sagi Grimberg
    Signed-off-by: Nicholas Bellinger

    Sagi Grimberg
     
  • This patch adds the three missing DIF related sense codes within
    transport_generic_request_failure(), which are required to ensure
    that the correct ASC/ASQC is generated by the subsequent call to
    transport_send_check_condition_and_sense().

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch fixes a bug in sbc_dif_copy_prot() where the updated addr
    offset did not take into account the case where the associated
    scatterlist had not been incremented.

    This addresses the case where incoming protection scatterlists may
    contain a length smaller than PAGE_SIZE across multiple entires,
    when the target protection scatterlists are always being explicitly
    filled up to PAGE_SIZE before adding another entry.

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     

13 Feb, 2014

6 commits

  • Need to take into account that protection sg_list
    (copy-buffer) may consist of multiple entries.

    Changes from v0:
    - Changed commit description

    Signed-off-by: Sagi Grimberg
    Signed-off-by: Nicholas Bellinger

    Sagi Grimberg
     
  • The CMD_T_FAILED flag is set used in one place to record the result of a
    trivial test, and it is only tested once, few lines later. We might as
    well make the code simpler and easier to read by directly doing the test
    of "success" where we want to use it.

    Signed-off-by: Roland Dreier
    Signed-off-by: Nicholas Bellinger

    Roland Dreier
     
  • This patch fixes Status SNACK handling of BegRun=0 to allow
    for all unacknowledged respones to be resent, instead of
    always assuming that BegRun would be an explicit value less
    than the current ExpStatSN.

    Reported-by: santosh kulkarni
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • Commit fbfe858fea2a ("target_core_spc: Include target device
    descriptor in VPD page 83") added a new length variable, but (due to a
    cut and paste mistake?) just checks scsi_name_len against 256 twice.
    Fix this to check scsi_target_len for overflow too.

    Signed-off-by: Roland Dreier
    Signed-off-by: Nicholas Bellinger

    Roland Dreier
     
  • This patch changes core_alua_state_lba_dependent() to use do_div()
    instead sector_div() to avoid the following link error on 32-bit
    with CONFIG_LBDAF=n as reported by Jim:

    buildlog-1391099072.txt-drivers/built-in.o: In function `target_alua_state_check':
    buildlog-1391099072.txt-(.text+0x928d93): undefined reference to `__umoddi3'
    buildlog-1391099072.txt:make: *** [vmlinux] Error 1 --
    buildlog-1391101753.txt- CC init/version.o
    buildlog-1391101753.txt- LD init/built-in.o
    buildlog-1391101753.txt-drivers/built-in.o: In function `core_alua_state_lba_dependent':
    buildlog-1391101753.txt-/home/jim/linux/drivers/target/target_core_alua.c:503: undefined reference to `__umoddi3'
    buildlog-1391101753.txt:make: *** [vmlinux] Error 1

    Reported-by: Jim Davis
    Cc: Hannes Reinecke
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch addresses a >= v3.11 free-after-use regression
    in core_scsi3_emulate_pro_register() that was introduced
    in the following commit:

    commit bc118fe4c4a8cfa453491ba77c0a146a6d0e73e0
    Author: Andy Grover
    Date: Thu May 16 10:41:04 2013 -0700

    target: Further refactoring of core_scsi3_emulate_pro_register()

    To avoid the free-after-use, save an type value before hand, and
    only call core_scsi3_put_pr_reg() with a valid *pr_reg.

    Reported-by: Dan Carpenter
    Cc: Andy Grover
    Cc: #3.11+
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     

01 Feb, 2014

1 commit

  • Pull SCSI target updates from Nicholas Bellinger:
    "The highlights this round include:

    - add support for SCSI Referrals (Hannes)
    - add support for T10 DIF into target core (nab + mkp)
    - add support for T10 DIF emulation in FILEIO + RAMDISK backends (Sagi + nab)
    - add support for T10 DIF -> bio_integrity passthrough in IBLOCK backend (nab)
    - prep changes to iser-target for >= v3.15 T10 DIF support (Sagi)
    - add support for qla2xxx N_Port ID Virtualization - NPIV (Saurav + Quinn)
    - allow percpu_ida_alloc() to receive task state bitmask (Kent)
    - fix >= v3.12 iscsi-target session reset hung task regression (nab)
    - fix >= v3.13 percpu_ref se_lun->lun_ref_active race (nab)
    - fix a long-standing network portal creation race (Andy)"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (51 commits)
    target: Fix percpu_ref_put race in transport_lun_remove_cmd
    target/iscsi: Fix network portal creation race
    target: Report bad sector in sense data for DIF errors
    iscsi-target: Convert gfp_t parameter to task state bitmask
    iscsi-target: Fix connection reset hang with percpu_ida_alloc
    percpu_ida: Make percpu_ida_alloc + callers accept task state bitmask
    iscsi-target: Pre-allocate more tags to avoid ack starvation
    qla2xxx: Configure NPIV fc_vport via tcm_qla2xxx_npiv_make_lport
    qla2xxx: Enhancements to enable NPIV support for QLOGIC ISPs with TCM/LIO.
    qla2xxx: Fix scsi_host leak on qlt_lport_register callback failure
    IB/isert: pass scatterlist instead of cmd to fast_reg_mr routine
    IB/isert: Move fastreg descriptor creation to a function
    IB/isert: Avoid frwr notation, user fastreg
    IB/isert: seperate connection protection domains and dma MRs
    tcm_loop: Enable DIF/DIX modes in SCSI host LLD
    target/rd: Add DIF protection into rd_execute_rw
    target/rd: Add support for protection SGL setup + release
    target/rd: Refactor rd_build_device_space + rd_release_device_space
    target/file: Add DIF protection support to fd_execute_rw
    target/file: Add DIF protection init/format support
    ...

    Linus Torvalds
     

30 Jan, 2014

2 commits

  • This patch fixes a percpu_ref_put race for se_lun->lun_ref in
    transport_lun_remove_cmd() where ->lun_ref could end up being
    put more than once per command via different target completion
    and fabric release contexts.

    It adds a cmpxchg() for se_cmd->lun_ref_active to ensure that
    percpu_ref_put() is only ever called once per se_cmd.

    This bug was manifesting itself as a LUN shutdown regression
    bug in >= v3.13 code, where percpu_ref_kill() would end up
    hanging indefinately due to the incorrect percpu_ref count.

    (Change se_cmd->lun_ref_active from bool -> int to force at
    least a 4-byte cmpxchg with MIPS ll/sc ins. - Fengguang)

    Reported-by: Tommy Apel
    Cc: Tommy Apel
    Cc: #3.13+
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • When creating network portals rapidly, such as when restoring a
    configuration, LIO's code to reuse existing portals can return a false
    negative if the thread hasn't run yet and set np_thread_state to
    ISCSI_NP_THREAD_ACTIVE. This causes an error in the network stack
    when attempting to bind to the same address/port.

    This patch sets NP_THREAD_ACTIVE before the np is placed on g_np_list,
    so even if the thread hasn't run yet, iscsit_get_np will return the
    existing np.

    Also, convert np_lock -> np_mutex + hold across adding new net portal
    to g_np_list to prevent a race where two threads may attempt to create
    the same network portal, resulting in one of them failing.

    (nab: Add missing mutex_unlocks in iscsit_add_np failure paths)
    (DanC: Fix incorrect spin_unlock -> spin_unlock_bh)

    Signed-off-by: Andy Grover
    Cc: #3.1+
    Signed-off-by: Nicholas Bellinger

    Andy Grover
     

25 Jan, 2014

3 commits

  • SPC-4 states that data-integrity errors shall also report
    the failed sector in CHECK_CONDITION response sense data
    information field.

    Signed-off-by: Sagi Grimberg
    Signed-off-by: Nicholas Bellinger

    Sagi Grimberg
     
  • This patch propigates the use of task state bitmask now used by
    percpu_ida_alloc() up the iscsi-target callchain, replacing the
    use of GFP_ATOMIC for TASK_RUNNING, and GFP_KERNEL for
    TASK_INTERRUPTIBLE.

    Also, drop the unnecessary gfp_t parameter to isert_allocate_cmd(),
    and just pass TASK_INTERRUPTIBLE into iscsit_allocate_cmd().

    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch addresses a bug where connection reset would hang
    indefinately once percpu_ida_alloc() was starved for tags, due
    to the fact that it always assumed uninterruptible sleep mode.

    So now make percpu_ida_alloc() check for signal_pending_state() for
    making interruptible sleep optional, and convert iscsit_allocate_cmd()
    to set TASK_INTERRUPTIBLE for GFP_KERNEL, or TASK_RUNNING for
    GFP_ATOMIC.

    Reported-by: Linus Torvalds
    Cc: Kent Overstreet
    Cc: #3.12+
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     

24 Jan, 2014

1 commit

  • This patch changes percpu_ida_alloc() + callers to accept task state
    bitmask for prepare_to_wait() for code like target/iscsi that needs
    it for interruptible sleep, that is provided in a subsequent patch.

    It now expects TASK_UNINTERRUPTIBLE when the caller is able to sleep
    waiting for a new tag, or TASK_RUNNING when the caller cannot sleep,
    and is forced to return a negative value when no tags are available.

    v2 changes:
    - Include blk-mq + tcm_fc + vhost/scsi + target/iscsi changes
    - Drop signal_pending_state() call
    v3 changes:
    - Only call prepare_to_wait() + finish_wait() when != TASK_RUNNING
    (PeterZ)

    Reported-by: Linus Torvalds
    Cc: Linus Torvalds
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Cc: Jens Axboe
    Signed-off-by: Kent Overstreet
    Cc: #3.12+
    Signed-off-by: Nicholas Bellinger

    Kent Overstreet
     

19 Jan, 2014

7 commits

  • This patch addresses an traditional iscsi-target fabric ack starvation
    issue where iscsit_allocate_cmd() -> percpu_ida_alloc_state() ends up
    hitting slow path percpu-ida code, because iscsit_ack_from_expstatsn()
    is expected to free ack'ed tags after tag allocation.

    This is done to take into account the tags waiting to be acknowledged
    and released in iscsit_ack_from_expstatsn(), but who's number are not
    directly limited by the CmdSN Window queue_depth being enforced by
    the target.

    So that said, this patch bumps up the pre-allocated number of
    per session tags to:

    (max(queue_depth, ISCSIT_MIN_TAGS) * 2) + ISCSIT_EXTRA_TAGS

    for good measure to avoid the percpu_ida_alloc_state() slow path.

    Cc: #3.12+
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch updates tcm_loop_driver_probe() to set protection
    information using scsi_host_set_prot() and scsi_host_set_guard(),
    which currently enabled all modes of DIF/DIX protection, minus
    DIX TYPE0.

    Also, update tcm_loop_submission_work() to pass struct scsi_cmnd
    related protection into target_submit_cmd_map_sgls() during CDB
    dispatch.

    Reviewed-by: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds support for DIF protection into rd_execute_rw() code
    for WRITE/READ I/O using sbc_dif_verify_[write,read]() logic.

    It also adds rd_get_prot_table() for locating protection SGLs
    assoicated with the ramdisk backend device.

    v2 changes:
    - Make rd_execute_rw() to u32 sectors count instead of sector_t
    - Drop SCF_PROT usage

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds rd_build_prot_space() + rd_release_prot_space() logic
    to setup + release protection information scatterlists.

    It also adds rd_init_prot() + rd_free_prot() se_subsystem_api
    callbacks used by target core code for setup + release of
    protection information.

    v2 changes:
    - Drop unused sg_table from rd_release_prot_space (Wei)
    - Drop rd_release_prot_space call from rd_free_device

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch refactors rd_build_device_space() + rd_release_device_space()
    into rd_allocate_sgl_table() + rd_release_device_space() so that they
    may be used seperatly for setup + release of protection information
    scatterlists.

    Also add explicit memset of pages within rd_allocate_sgl_table() based
    upon passed 'init_payload' value.

    v2 changes:
    - Drop unused sg_table from rd_release_device_space (Wei)

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds support for DIF protection into fd_execute_rw() code
    for WRITE/READ I/O using sbc_dif_verify_[write,read]() logic.

    It adds fd_do_prot_rw() for handling interface with FILEIO PI, and
    uses a locally allocated fd_prot->prot_buf + fd_prot->prot_sg for
    interacting with SBC DIF verify emulation code.

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds support for DIF protection init/format support into
    the FILEIO backend.

    It involves using a seperate $FILE.protection for storing PI that is
    opened via fd_init_prot() using the common pi_prot_type attribute.
    The actual formatting of the protection is done via fd_format_prot()
    using the common pi_prot_format attribute, that will populate the
    initial PI data based upon the currently configured pi_prot_type.

    Based on original FILEIO code from Sagi.

    v1 changes:
    - Fix sparse warnings in fd_init_format_buf (Fengguang)

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     

18 Jan, 2014

10 commits

  • This patch adds blk_integrity passthrough support for block_device
    backends using IBLOCK.

    This includes iblock_alloc_bip() + setup of bio_integrity_payload
    information that attaches to the leading struct bio once bio_list
    is populated during fast-path iblock_execute_rw() I/O dispatch.

    It also updates setup in iblock_configure_device() to detect modes
    of protection + se dev->dev_attrib.pi_prot_type accordingly, along
    with creating required bio_set integrity mempools.

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds support to target_submit_cmd_map_sgls() for
    accepting 'sgl_prot' + 'sgl_prot_count' parameters for
    DIF protection information.

    Note the passed parameters are stored at se_cmd->t_prot_sg
    and se_cmd->t_prot_nents respectively.

    Also, update tcm_loop and vhost-scsi fabrics usage of
    target_submit_cmd_map_sgls() to take into account the
    new parameters.

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds support for exposing DIF protection device
    attributes via configfs. This includes:

    pi_prot_type: Protection Type (0, 1, 3 currently support)
    pi_prot_format: Protection Format Operation (FILEIO only)

    Within se_dev_set_pi_prot_type() it also adds the se_subsystem_api
    device callbacks to setup per device protection information.

    v2 changes:
    - Drop pi_guard_type + pi_prot_version related code (MKP)
    - Add pi_prot_format logic (Sagi)
    - Add ->free_prot callback in target_free_device
    - Add hw_pi_prot_type read-only attribute

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch updates spc_modesense_control() to set the Application
    Tag Owner (ATO) bit when when DIF emulation is enabled by the
    backend device.

    Reviewed-by: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch updates sbc_emulate_readcapacity_16() to set
    P_TYPE and PROT_EN bits when DIF emulation is enabled by
    the backend device.

    Reviewed-by: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch updates spc_emulate_evpd_86() (extended INQUIRY) to
    report GRD_CHK (Guard Check) and REF_CHK (Reference Check) bits
    when DIF emulation is enabled by the backend device.

    Reviewed-by: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch updates spc_emulate_inquiry_std() to set the
    PROTECT bit when DIF emulation is enabled by the backend
    device.

    Reviewed-by: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds support for DIF read/write verify emulation
    for TARGET_DIF_TYPE1_PROT + TARGET_DIF_TYPE3_PROT operation.

    This includes sbc_dif_verify_write() + sbc_dif_verify_read()
    calls accessable by backend drivers to perform DIF verify
    for SGL based data and protection information.

    Also included is sbc_dif_copy_prot() logic to copy protection
    information to/from backend provided protection SGLs.

    Based on scsi_debug.c DIF TYPE1+TYPE3 emulation.

    v2 changes:
    - Select CRC_T10DIF for TARGET_CORE in Kconfig (Fengguang)
    - Drop IP checksum logic from sbc_dif_v1_verify (MKP)
    - Fix offset on app_tag = 0xffff in sbc_dif_verify_read()

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds sbc_check_prot() for performing various DIF
    related CDB sanity checks, along with setting cmd->prot_type
    once sanity checks have passed.

    Also, add calls in sbc_parse_cdb() for READ_[10,12,16] +
    WRITE_[10,12,16] to perform DIF sanity checking.

    v2 changes:
    - Make sbc_check_prot defined as static (Fengguang + Wei)
    - Remove unprotected READ/WRITE warning (mkp)
    - Populate cmd->prot_type + friends (Sagi)
    - Drop SCF_PROT usage

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • This patch adds support for DIF related CHECK_CONDITION ASC/ASCQ
    exception cases into transport_send_check_condition_and_sense().

    This includes:

    LOGICAL BLOCK GUARD CHECK FAILED
    LOGICAL BLOCK APPLICATION TAG CHECK FAILED
    LOGICAL BLOCK REFERENCE TAG CHECK FAILED

    that used by DIF TYPE1 and TYPE3 failure cases.

    Cc: Martin K. Petersen
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Sagi Grimberg
    Cc: Or Gerlitz
    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     

10 Jan, 2014

3 commits

  • This patch converts the temporary buffer in spc_emulate_inquiry() to
    use dynamically allocated memory, instead of local stack memory.

    Also bump SE_INQUIRY_BUF up to 1024 bytes to be safe when handling
    multiple large SCSI name descriptors for EVPD=0x83.

    Signed-off-by: Nicholas Bellinger

    Nicholas Bellinger
     
  • When a writing to a command-provided buffer we need to ensure
    that we're not writing past the end of it.
    At the same time we need to continue processing as typically
    the final data length (ie the required size of the buffer)
    need to be returned.

    Signed-off-by: Hannes Reinecke
    Signed-off-by: Nicholas Bellinger

    Hannes Reinecke
     
  • Mark functions ft_tpg_alloc_fabric_acl(), ft_register_configfs() and
    ft_deregister_configfs() as static in tcm_fc/tfc_conf.c because they are
    not used outside this file.

    This eliminates the following warnings in tcm_fc/tfc_conf.c:
    drivers/target/tcm_fc/tfc_conf.c:270:21: warning: no previous prototype for ‘ft_tpg_alloc_fabric_acl’ [-Wmissing-prototypes]
    drivers/target/tcm_fc/tfc_conf.c:555:5: warning: no previous prototype for ‘ft_register_configfs’ [-Wmissing-prototypes]
    drivers/target/tcm_fc/tfc_conf.c:602:6: warning: no previous prototype for ‘ft_deregister_configfs’ [-Wmissing-prototypes]

    Signed-off-by: Rashika Kheria
    Reviewed-by: Josh Triplett
    Signed-off-by: Nicholas Bellinger

    Rashika Kheria