diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2007-02-13 09:21:52 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2007-02-16 10:40:56 -0500 |
commit | 930e99bd1320d78c7d8866595e81b8fc7dc8739b (patch) | |
tree | e079f35c0aa2b58cf41675c66b7cfa96e6b068f6 /drivers/scsi | |
parent | 8f3334edae93f8b664417f4140d4d9dc9a003fe4 (diff) |
[SCSI] tgt: fix the user/kernel ring buffer interface
This patches fixes two bugs in the scsi target infrastructure's
user/kernel interface.
- It wrongly assumes that the ring buffer size of the interface (64KB)
is larger than or equal to the system page size. This patch sets the
ring buffer size to PAGE_SIZE if the system page size is larger.
- It uses PAGE_SIZE in the header file exported to userspace. This
patch removes it.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/scsi_tgt_if.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_tgt_if.c b/drivers/scsi/scsi_tgt_if.c index f2344ab8deff..0e08817fdecf 100644 --- a/drivers/scsi/scsi_tgt_if.c +++ b/drivers/scsi/scsi_tgt_if.c | |||
@@ -33,6 +33,14 @@ | |||
33 | 33 | ||
34 | #include "scsi_tgt_priv.h" | 34 | #include "scsi_tgt_priv.h" |
35 | 35 | ||
36 | #if TGT_RING_SIZE < PAGE_SIZE | ||
37 | # define TGT_RING_SIZE PAGE_SIZE | ||
38 | #endif | ||
39 | |||
40 | #define TGT_RING_PAGES (TGT_RING_SIZE >> PAGE_SHIFT) | ||
41 | #define TGT_EVENT_PER_PAGE (PAGE_SIZE / sizeof(struct tgt_event)) | ||
42 | #define TGT_MAX_EVENTS (TGT_EVENT_PER_PAGE * TGT_RING_PAGES) | ||
43 | |||
36 | struct tgt_ring { | 44 | struct tgt_ring { |
37 | u32 tr_idx; | 45 | u32 tr_idx; |
38 | unsigned long tr_pages[TGT_RING_PAGES]; | 46 | unsigned long tr_pages[TGT_RING_PAGES]; |