Commit f89166c0 authored by Darek Stojaczyk's avatar Darek Stojaczyk
Browse files

scsi: remove bdev_scsi_mode_select_page()



The function didn't do anything.

Change-Id: Id44a7d0c129ab60751eda382911935d677730ec9
Signed-off-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/463066


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
parent fb154346
Loading
Loading
Loading
Loading
+1 −119
Original line number Diff line number Diff line
@@ -1159,100 +1159,6 @@ bdev_scsi_mode_sense(struct spdk_bdev *bdev, int md,
	return total;
}

static int
bdev_scsi_mode_select_page(struct spdk_bdev *bdev,
			   uint8_t *cdb, int pf, int sp,
			   uint8_t *data, size_t len)
{
	size_t hlen, plen;
	int spf, page, subpage;
	int rc;

	/* vendor specific */
	if (pf == 0) {
		return 0;
	}

	if (len < 1) {
		return 0;
	}

	spf = !!(data[0] & 0x40);
	page = data[0] & 0x3f;
	if (spf) {
		/* Sub_page mode page format */
		hlen = 4;
		if (len < hlen) {
			return 0;
		}
		subpage = data[1];

		plen = from_be16(&data[2]);
	} else {
		/* Page_0 mode page format */
		hlen = 2;
		if (len < hlen) {
			return 0;
		}
		subpage = 0;
		plen = data[1];
	}

	plen += hlen;
	if (len < plen) {
		return 0;
	}

	switch (page) {
	case 0x08: { /* Caching */
		/* int wce; */

		SPDK_DEBUGLOG(SPDK_LOG_SCSI, "MODE_SELECT Caching\n");
		if (subpage != 0x00) {
			break;
		}

		if (plen != 0x12 + hlen) {
			/* unknown format */
			break;
		}

		/* TODO: */
#if 0
		wce = data[2] & 0x4; /* WCE */

		fd = bdev->fd;

		rc = fcntl(fd, F_GETFL, 0);
		if (rc != -1) {
			if (wce) {
				SPDK_DEBUGLOG(SPDK_LOG_SCSI, "MODE_SELECT Writeback cache enable\n");
				rc = fcntl(fd, F_SETFL, (rc & ~O_FSYNC));
				bdev->write_cache = 1;
			} else {
				rc = fcntl(fd, F_SETFL, (rc | O_FSYNC));
				bdev->write_cache = 0;
			}
		}
#endif

		break;
	}
	default:
		/* not supported */
		break;
	}

	len -= plen;
	if (len != 0) {
		rc = bdev_scsi_mode_select_page(bdev, cdb, pf, sp, &data[plen], len);
		if (rc < 0) {
			return rc;
		}
	}
	return 0;
}

static void
bdev_scsi_task_complete_cmd(struct spdk_bdev_io *bdev_io, bool success,
			    void *cb_arg)
@@ -1799,8 +1705,7 @@ bdev_scsi_process_primary(struct spdk_scsi_task *task)
	uint8_t *data = NULL;
	int rc = 0;
	int pllen, md = 0;
	int pf, sp;
	int bdlen = 0, llba;
	int llba;
	int dbd, pc, page, subpage;
	int cmd_parsed = 0;

@@ -1878,36 +1783,13 @@ bdev_scsi_process_primary(struct spdk_scsi_task *task)
		data_len = rc;
		if (cdb[0] == SPDK_SPC_MODE_SELECT_6) {
			rc = bdev_scsi_check_len(task, data_len, 4);
			if (rc >= 0) {
				bdlen = data[3];
			}

		} else {
			rc = bdev_scsi_check_len(task, data_len, 8);
			if (rc >= 0) {
				bdlen = from_be16(&data[6]);
			}
		}

		if (rc < 0) {
			break;
		}
		pf = !!(cdb[1] & 0x10);
		sp = !!(cdb[1] & 0x1);

		/* page data */
		rc = bdev_scsi_mode_select_page(
			     bdev, cdb,
			     pf, sp,
			     &data[md + bdlen],
			     pllen - (md + bdlen));
		if (rc < 0) {
			spdk_scsi_task_set_status(task, SPDK_SCSI_STATUS_CHECK_CONDITION,
						  SPDK_SCSI_SENSE_NO_SENSE,
						  SPDK_SCSI_ASC_NO_ADDITIONAL_SENSE,
						  SPDK_SCSI_ASCQ_CAUSE_NOT_REPORTABLE);
			break;
		}

		rc = pllen;
		data_len = 0;