2005-04-10 02:36:03

by sai narasimhamurthy

[permalink] [raw]
Subject: increasing scsi_max_sg / max_segments for scsi writes/reads

Hi,
I had posted a question on increasing the scsi
read/write sectors per command. I figured out some of
the things, but many questions still exist.

I was wondering why the maximum writes I could get
from a single scsi write command could never exceed
204
4096B segments . I traced it to :

static const int scsi_max_sg = PAGE_SIZE /
sizeof(struct scatterlist)

in scsi_merge.c .(which amounts to 204)

Is this the limit of the maximum blocks we can
read/write through a single scsi command, atleast for
the given kernel (2.4.29) ? How can I increase
it??????

I am on a P3 Dell poweredgde 2400 .

Sai












__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com


2005-04-11 01:42:12

by Randy.Dunlap

[permalink] [raw]
Subject: Re: increasing scsi_max_sg / max_segments for scsi writes/reads

On Sat, 9 Apr 2005 19:35:52 -0700 (PDT) sai narasimhamurthy wrote:

| Hi,
| I had posted a question on increasing the scsi
| read/write sectors per command. I figured out some of
| the things, but many questions still exist.
|
| I was wondering why the maximum writes I could get
| from a single scsi write command could never exceed
| 204
| 4096B segments . I traced it to :
|
| static const int scsi_max_sg = PAGE_SIZE /
| sizeof(struct scatterlist)
|
| in scsi_merge.c .(which amounts to 204)
|
| Is this the limit of the maximum blocks we can
| read/write through a single scsi command, atleast for
| the given kernel (2.4.29) ? How can I increase
| it??????
|
| I am on a P3 Dell poweredgde 2400 .

Did you read the comment immediately above that
calculation?

/*
* scsi_malloc() can only dish out items of PAGE_SIZE or less, so we cannot
* build a request that requires an sg table allocation of more than that.
*/

so scsi_malloc() would need some reworking to handle more.

OTOH, it appears that this is all removed in 2.6.10++, so moving to
2.6.recent is probably your best choice.

---
~Randy

2005-04-18 06:17:38

by sai narasimhamurthy

[permalink] [raw]
Subject: Re: increasing scsi_max_sg / max_segments for scsi writes/reads

Hi ,
I tried working on scsi_malloc to increase burst size
, but to no avail ..all I got was hanged system every
time I started data transfers!
Has anyone worked on scsi_malloc , I am still trying
to figure out what changes were made in 2.6 to
overcome this problem of limited bursts.

Any pointers are very greatly welcome...I have never
worked on this part of the code before .


Sai










--- "Randy.Dunlap" <[email protected]> wrote:
> On Sat, 9 Apr 2005 19:35:52 -0700 (PDT) sai
> narasimhamurthy wrote:
>
> | Hi,
> | I had posted a question on increasing the scsi
> | read/write sectors per command. I figured out
> some of
> | the things, but many questions still exist.
> |
> | I was wondering why the maximum writes I could get
> | from a single scsi write command could never
> exceed
> | 204
> | 4096B segments . I traced it to :
> |
> | static const int scsi_max_sg = PAGE_SIZE /
> | sizeof(struct scatterlist)
> |
> | in scsi_merge.c .(which amounts to 204)
> |
> | Is this the limit of the maximum blocks we can
> | read/write through a single scsi command, atleast
> for
> | the given kernel (2.4.29) ? How can I increase
> | it??????
> |
> | I am on a P3 Dell poweredgde 2400 .
>
> Did you read the comment immediately above that
> calculation?
>
> /*
> * scsi_malloc() can only dish out items of
> PAGE_SIZE or less, so we cannot
> * build a request that requires an sg table
> allocation of more than that.
> */
>
> so scsi_malloc() would need some reworking to handle
> more.
>
> OTOH, it appears that this is all removed in
> 2.6.10++, so moving to
> 2.6.recent is probably your best choice.
>
> ---
> ~Randy
> -
> To unsubscribe from this list: send the line
> "unsubscribe linux-scsi" in
> the body of a message to [email protected]
> More majordomo info at
> http://vger.kernel.org/majordomo-info.html
>



__________________________________
Do you Yahoo!?
Yahoo! Small Business - Try our new resources site!
http://smallbusiness.yahoo.com/resources/

2005-04-18 14:13:22

by James Bottomley

[permalink] [raw]
Subject: Re: increasing scsi_max_sg / max_segments for scsi writes/reads

On Sun, 2005-04-17 at 23:17 -0700, sai narasimhamurthy wrote:
> I tried working on scsi_malloc to increase burst size
> , but to no avail ..all I got was hanged system every
> time I started data transfers!
> Has anyone worked on scsi_malloc , I am still trying
> to figure out what changes were made in 2.6 to
> overcome this problem of limited bursts.

The change in 2.6 was to dump scsi_malloc and use mempools instead for
the sg list.

> Any pointers are very greatly welcome...I have never
> worked on this part of the code before .

Upgrade to 2.6 ... seriously ... what you're trying to do is what 2.6
was designed for.

James