Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[firefly-linux-kernel-4.4.55.git] / drivers / target / target_core_iblock.c
index 2f74e17ad3e6e99760fff9a45ec6b4867da7594d..c73f4a950e230725b5c84d8200f5692cef7247ee 100644 (file)
@@ -391,10 +391,19 @@ iblock_execute_unmap(struct se_cmd *cmd)
        sense_reason_t ret = 0;
        int dl, bd_dl, err;
 
+       /* We never set ANC_SUP */
+       if (cmd->t_task_cdb[1])
+               return TCM_INVALID_CDB_FIELD;
+
+       if (cmd->data_length == 0) {
+               target_complete_cmd(cmd, SAM_STAT_GOOD);
+               return 0;
+       }
+
        if (cmd->data_length < 8) {
                pr_warn("UNMAP parameter list length %u too small\n",
                        cmd->data_length);
-               return TCM_INVALID_PARAMETER_LIST;
+               return TCM_PARAMETER_LIST_LENGTH_ERROR;
        }
 
        buf = transport_kmap_data_sg(cmd);
@@ -464,7 +473,7 @@ iblock_execute_write_same_unmap(struct se_cmd *cmd)
        int rc;
 
        rc = blkdev_issue_discard(ib_dev->ibd_bd, cmd->t_task_lba,
-                       spc_get_write_same_sectors(cmd), GFP_KERNEL, 0);
+                       sbc_get_write_same_sectors(cmd), GFP_KERNEL, 0);
        if (rc < 0) {
                pr_warn("blkdev_issue_discard() failed: %d\n", rc);
                return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
@@ -482,7 +491,7 @@ iblock_execute_write_same(struct se_cmd *cmd)
        struct bio *bio;
        struct bio_list list;
        sector_t block_lba = cmd->t_task_lba;
-       sector_t sectors = spc_get_write_same_sectors(cmd);
+       sector_t sectors = sbc_get_write_same_sectors(cmd);
 
        sg = &cmd->t_data_sg[0];