Commit 43f2f3d3 authored by Mark Haverkamp's avatar Mark Haverkamp Committed by Linus Torvalds

[PATCH] aacraid: Fix for controller load based timeouts

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: default avatarMark Haverkamp <markh@osdl.org>
Cc: James Bottomley <James.Bottomley@steeleye.com>
Acked-by: default avatarMark Salyzyn <mark_salyzyn@adaptec.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 2757a71c
...@@ -15,11 +15,7 @@ ...@@ -15,11 +15,7 @@
#define AAC_MAX_LUN (8) #define AAC_MAX_LUN (8)
#define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff) #define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff)
/* #define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)512)
* 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)
/* /*
* These macros convert from physical channels to virtual channels * These macros convert from physical channels to virtual channels
......
...@@ -374,7 +374,8 @@ static int aac_slave_configure(struct scsi_device *sdev) ...@@ -374,7 +374,8 @@ static int aac_slave_configure(struct scsi_device *sdev)
else else
scsi_adjust_queue_depth(sdev, 0, 1); 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); blk_queue_max_segment_size(sdev->request_queue, 65536);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment