]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/target/target_core_cdb.c
target: remove target_get_task_cdb
[mirror_ubuntu-bionic-kernel.git] / drivers / target / target_core_cdb.c
index 30a67707036ff962dd0875437145ac3dc11c601f..8e6b91d0380dfb0505d8cca25d62958d7092f428 100644 (file)
@@ -432,6 +432,7 @@ static int
 target_emulate_evpd_b0(struct se_cmd *cmd, unsigned char *buf)
 {
        struct se_device *dev = cmd->se_dev;
+       u32 max_sectors;
        int have_tp = 0;
 
        /*
@@ -456,7 +457,9 @@ target_emulate_evpd_b0(struct se_cmd *cmd, unsigned char *buf)
        /*
         * Set MAXIMUM TRANSFER LENGTH
         */
-       put_unaligned_be32(dev->se_sub_dev->se_dev_attrib.fabric_max_sectors, &buf[8]);
+       max_sectors = min(dev->se_sub_dev->se_dev_attrib.fabric_max_sectors,
+                         dev->se_sub_dev->se_dev_attrib.max_sectors);
+       put_unaligned_be32(max_sectors, &buf[8]);
 
        /*
         * Set OPTIMAL TRANSFER LENGTH
@@ -1145,52 +1148,3 @@ int target_emulate_noop(struct se_task *task)
        transport_complete_task(task, 1);
        return 0;
 }
-
-/*
- * Write a CDB into @cdb that is based on the one the intiator sent us,
- * but updated to only cover the sectors that the current task handles.
- */
-void target_get_task_cdb(struct se_task *task, unsigned char *cdb)
-{
-       struct se_cmd *cmd = task->task_se_cmd;
-       unsigned int cdb_len = scsi_command_size(cmd->t_task_cdb);
-
-       memcpy(cdb, cmd->t_task_cdb, cdb_len);
-       if (cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) {
-               unsigned long long lba = task->task_lba;
-               u32 sectors = task->task_sectors;
-
-               switch (cdb_len) {
-               case 6:
-                       /* 21-bit LBA and 8-bit sectors */
-                       cdb[1] = (lba >> 16) & 0x1f;
-                       cdb[2] = (lba >> 8) & 0xff;
-                       cdb[3] = lba & 0xff;
-                       cdb[4] = sectors & 0xff;
-                       break;
-               case 10:
-                       /* 32-bit LBA and 16-bit sectors */
-                       put_unaligned_be32(lba, &cdb[2]);
-                       put_unaligned_be16(sectors, &cdb[7]);
-                       break;
-               case 12:
-                       /* 32-bit LBA and 32-bit sectors */
-                       put_unaligned_be32(lba, &cdb[2]);
-                       put_unaligned_be32(sectors, &cdb[6]);
-                       break;
-               case 16:
-                       /* 64-bit LBA and 32-bit sectors */
-                       put_unaligned_be64(lba, &cdb[2]);
-                       put_unaligned_be32(sectors, &cdb[10]);
-                       break;
-               case 32:
-                       /* 64-bit LBA and 32-bit sectors, extended CDB */
-                       put_unaligned_be64(lba, &cdb[12]);
-                       put_unaligned_be32(sectors, &cdb[28]);
-                       break;
-               default:
-                       BUG();
-               }
-       }
-}
-EXPORT_SYMBOL(target_get_task_cdb);