projects/linux·commit 43f2f3d3

[PATCH] aacraid: Fix for controller load based timeouts

43f2f3d3 · Mark Haverkamp <[email protected]> · 2005-08-01 21:11:37 -07:00

Martin Drab found that he could get aacraid timeouts with high load on his
controller / disk drive combinations.  After some experimentation Mark
Salyzyn has come up with a patch to reduce the default max_sectors to
something that will keep the controller from being overloaded and will
eliminate the timeout issues.

Signed-off-by: Mark Haverkamp <[email protected]>
Cc: James Bottomley <[email protected]>
Acked-by: Mark Salyzyn <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
43f2f3d343f9d00a94a9242547a59d9dfb2338c4
Parents
2757a71c

Changes

2 files changed · +3 −6

FileStatusAddDelContent
drivers/scsi/aacraid/aacraid.hmodified+1−5View file
drivers/scsi/aacraid/linit.cmodified+2−1View file

drivers/scsi/aacraid/aacraid.h

View file
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index 3a11a53..4ab0786 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -15,11 +15,7 @@
#define AAC_MAX_LUN (8)
#define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff)
-/*
- * max_sectors is an unsigned short, otherwise limit is 0x100000000 / 512
- * Linux has starvation problems if we permit larger than 4MB I/O ...
- */
-#define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)8192)
+#define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)512)
/*
* These macros convert from physical channels to virtual channels

drivers/scsi/aacraid/linit.c

View file
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index c1a4f97..562da90 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -374,7 +374,8 @@ static int aac_slave_configure(struct scsi_device *sdev)
else
scsi_adjust_queue_depth(sdev, 0, 1);
- if (host->max_sectors < AAC_MAX_32BIT_SGBCOUNT)
+ if (!(((struct aac_dev *)host->hostdata)->adapter_info.options
+ & AAC_OPT_NEW_COMM))
blk_queue_max_segment_size(sdev->request_queue, 65536);
return 0;