+
+extern void sd_iostats_init(void);
+extern void sd_iostats_fini(void);
-+void sd_iostats_start_req(struct scsi_cmnd *SCpnt);
++void sd_iostats_start_req(struct request *rq);
+void sd_iostats_finish_req(struct scsi_cmnd *SCpnt);
+#else
+static inline void sd_iostats_init(void) {}
+static inline void sd_iostats_fini(void) {}
-+static inline void sd_iostats_start_req(struct scsi_cmnd *SCpnt) {}
++static inline void sd_iostats_start_req(struct request *rq) {}
+static inline void sd_iostats_finish_req(struct scsi_cmnd *SCpnt) {}
+#endif
+
mempool_t *sd_cdb_pool;
@@ -571,6 +589,8 @@
- if (host_dif || scsi_prot_sg_count(SCpnt))
- sd_prot_op(SCpnt, host_dif);
-
-+ sd_iostats_start_req(SCpnt);
-+
- /*
- * We shouldn't disconnect in the middle of a sector, so with a dumb
- * host adapter, it's safe to assume that we can at least transfer
+ */
+ ret = BLKPREP_OK;
+ out:
++ if (rq->rq_disk && ret == BLKPREP_OK)
++ sd_iostats_start_req(rq);
+ return scsi_prep_return(q, rq, ret);
+ }
+
@@ -1091,6 +1111,7 @@
break;
}
+ spin_unlock_irqrestore(&stats->iostat_lock, irqflags);
+}
+
-+void sd_iostats_start_req(struct scsi_cmnd *SCpnt)
++void sd_iostats_start_req(struct request *rq)
+{
-+ struct request *rq = SCpnt->request;
++ struct scsi_cmnd *SCpnt = rq->special;
+ iostat_stats_t *stats;
+ iostat_counter_t *counter;
+ int bucket;
dev_read_only-2.6.27-vanilla.patch
export-2.6.27-vanilla.patch
export-show_task-2.6.27-vanilla.patch
-sd_iostats-2.6.27-vanilla.patch
+sd_iostats-2.6.32-vanilla.patch
md-mmp-unplug-dev-sles11.patch
quota-support-64-bit-quota-format.patch
jbd2-jcberr-2.6-sles11.patch