patch-2.4.7 linux/drivers/scsi/scsi_merge.c
Next file: linux/drivers/scsi/scsi_obsolete.c
Previous file: linux/drivers/scsi/scsi_lib.c
Back to the patch index
Back to the overall index
- Lines: 45
- Date:
Thu Jul 5 11:28:17 2001
- Orig file:
v2.4.6/linux/drivers/scsi/scsi_merge.c
- Orig date:
Fri Feb 9 11:30:23 2001
diff -u --recursive --new-file v2.4.6/linux/drivers/scsi/scsi_merge.c linux/drivers/scsi/scsi_merge.c
@@ -417,6 +417,9 @@
max_segments = 64;
#endif
+ if ((req->nr_sectors + (bh->b_size >> 9)) > SHpnt->max_sectors)
+ return 0;
+
if (use_clustering) {
/*
* See if we can do this without creating another
@@ -473,6 +476,9 @@
max_segments = 64;
#endif
+ if ((req->nr_sectors + (bh->b_size >> 9)) > SHpnt->max_sectors)
+ return 0;
+
if (use_clustering) {
/*
* See if we can do this without creating another
@@ -597,6 +603,13 @@
Scsi_Device *SDpnt;
struct Scsi_Host *SHpnt;
+ /*
+ * First check if the either of the requests are re-queued
+ * requests. Can't merge them if they are.
+ */
+ if (req->special || next->special)
+ return 0;
+
SDpnt = (Scsi_Device *) q->queuedata;
SHpnt = SDpnt->host;
@@ -624,6 +637,10 @@
return 0;
}
#endif
+
+ if ((req->nr_sectors + next->nr_sectors) > SHpnt->max_sectors)
+ return 0;
+
/*
* The main question is whether the two segments at the boundaries
* would be considered one or two.
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)