From eea65280701ddbcd2f5f13e65189b6a648d74a5d Mon Sep 17 00:00:00 2001 From: "Martin K. Petersen" Date: Fri, 19 Sep 2008 18:47:19 -0400 Subject: [PATCH] --- yaml --- r: 115464 b: refs/heads/master c: bd623e79fb6bca7ab685bb1f7376476a81ce10bb h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/scsi/sd.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 0154047eb688..70118cbfc4c6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c82dc88ddaf17112841dd3a6b08352968555ee08 +refs/heads/master: bd623e79fb6bca7ab685bb1f7376476a81ce10bb diff --git a/trunk/drivers/scsi/sd.c b/trunk/drivers/scsi/sd.c index a7b53be63367..fec034557c38 100644 --- a/trunk/drivers/scsi/sd.c +++ b/trunk/drivers/scsi/sd.c @@ -384,7 +384,7 @@ static int sd_prep_fn(struct request_queue *q, struct request *rq) sector_t block = rq->sector; sector_t threshold; unsigned int this_count = rq->nr_sectors; - int ret; + int ret, host_dif; if (rq->cmd_type == REQ_TYPE_BLOCK_PC) { ret = scsi_setup_blk_pc_cmnd(sdp, rq); @@ -515,7 +515,8 @@ static int sd_prep_fn(struct request_queue *q, struct request *rq) rq->nr_sectors)); /* Set RDPROTECT/WRPROTECT if disk is formatted with DIF */ - if (scsi_host_dif_capable(sdp->host, sdkp->protection_type)) + host_dif = scsi_host_dif_capable(sdp->host, sdkp->protection_type); + if (host_dif) SCpnt->cmnd[1] = 1 << 5; else SCpnt->cmnd[1] = 0; @@ -573,7 +574,7 @@ static int sd_prep_fn(struct request_queue *q, struct request *rq) SCpnt->sdb.length = this_count * sdp->sector_size; /* If DIF or DIX is enabled, tell HBA how to handle request */ - if (sdkp->protection_type || scsi_prot_sg_count(SCpnt)) + if (host_dif || scsi_prot_sg_count(SCpnt)) sd_dif_op(SCpnt, sdkp->protection_type, scsi_prot_sg_count(SCpnt)); /*