* [PATCH 4/6] bsg: add sg_io_v4 structure @ 2006-12-20 5:43 FUJITA Tomonori 2006-12-20 10:13 ` Jens Axboe 0 siblings, 1 reply; 6+ messages in thread From: FUJITA Tomonori @ 2006-12-20 5:43 UTC (permalink / raw) To: linux-scsi; +Cc: jens.axboe, dougg This patch adds sg_io_v4 structure that Doug proposed last month. There's one major change from the RFC. I dropped iovec, which needs compat stuff. The bsg code simply calls blk_rq_map_user against dout_xferp/din_xferp. So if possible, the page frames are directly mapped. If not possible, the block layer allocates new page frames and does memory copies. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> --- include/linux/bsg.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-) diff --git a/include/linux/bsg.h b/include/linux/bsg.h index dc0d728..0d212cc 100644 --- a/include/linux/bsg.h +++ b/include/linux/bsg.h @@ -1,6 +1,47 @@ #ifndef BSG_H #define BSG_H +struct sg_io_v4 { + int32_t guard; /* [i] 'Q' to differentiate from v3 */ + uint32_t protocol; /* [i] 0 -> SCSI , .... */ + uint32_t subprotocol; /* [i] 0 -> SCSI command, 1 -> SCSI task + management function, .... */ + + uint32_t request_len; /* [i] in bytes */ + uint64_t request; /* [i], [*i] {SCSI: cdb} */ + uint32_t request_attr; /* [i] {SCSI: task attribute} */ + uint32_t request_tag; /* [i] {SCSI: task tag (only if flagged)} */ + uint32_t request_priority; /* [i] {SCSI: task priority} */ + uint32_t max_response_len; /* [i] in bytes */ + uint64_t response; /* [i], [*o] {SCSI: (auto)sense data} */ + + /* "din_" for data in (from device); "dout_" for data out (to device) */ + uint32_t dout_xfer_len; /* [i] bytes to be transferred to device */ + uint32_t din_xfer_len; /* [i] bytes to be transferred from device */ + uint64_t dout_xferp; /* [i], [*i] */ + uint64_t din_xferp; /* [i], [*o] */ + + uint32_t timeout; /* [i] units: millisecond */ + uint32_t flags; /* [i] bit mask */ + uint64_t usr_ptr; /* [i->o] unused internally */ + uint32_t spare_in; /* [i] */ + + uint32_t driver_status; /* [o] 0 -> ok */ + uint32_t transport_status; /* [o] 0 -> ok */ + uint32_t device_status; /* [o] {SCSI: command completion status} */ + uint32_t retry_delay; /* [o] {SCSI: status auxiliary information} */ + uint32_t info; /* [o] additional information */ + uint32_t duration; /* [o] time to complete, in milliseconds */ + uint32_t response_len; /* [o] bytes of response actually written */ + int32_t din_resid; /* [o] actual_din_xfer_len - din_xfer_len */ + uint32_t generated_tag; /* [o] {SCSI: task tag that transport chose} */ + uint32_t spare_out; /* [o] */ + + uint32_t padding; +}; + +#ifdef __KERNEL__ + #if defined(CONFIG_BLK_DEV_BSG) struct bsg_class_device { struct class_device *class_dev; @@ -18,4 +59,6 @@ #define bsg_register_disk(disk) (0) #define bsg_unregister_disk(disk) do { } while (0) #endif +#endif /* __KERNEL__ */ + #endif -- 1.4.3.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 4/6] bsg: add sg_io_v4 structure 2006-12-20 5:43 [PATCH 4/6] bsg: add sg_io_v4 structure FUJITA Tomonori @ 2006-12-20 10:13 ` Jens Axboe 2006-12-20 22:29 ` FUJITA Tomonori 0 siblings, 1 reply; 6+ messages in thread From: Jens Axboe @ 2006-12-20 10:13 UTC (permalink / raw) To: FUJITA Tomonori; +Cc: linux-scsi, dougg On Wed, Dec 20 2006, FUJITA Tomonori wrote: > This patch adds sg_io_v4 structure that Doug proposed last month. > > There's one major change from the RFC. I dropped iovec, which needs > compat stuff. The bsg code simply calls blk_rq_map_user against > dout_xferp/din_xferp. So if possible, the page frames are directly > mapped. If not possible, the block layer allocates new page frames and > does memory copies. > > Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> > --- > include/linux/bsg.h | 43 +++++++++++++++++++++++++++++++++++++++++++ > 1 files changed, 43 insertions(+), 0 deletions(-) > > diff --git a/include/linux/bsg.h b/include/linux/bsg.h > index dc0d728..0d212cc 100644 > --- a/include/linux/bsg.h > +++ b/include/linux/bsg.h > @@ -1,6 +1,47 @@ > #ifndef BSG_H > #define BSG_H > > +struct sg_io_v4 { > + int32_t guard; /* [i] 'Q' to differentiate from v3 */ > + uint32_t protocol; /* [i] 0 -> SCSI , .... */ I prefer using the u32 types and so on for explicitly sized variables. I'll make that change. -- Jens Axboe ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 4/6] bsg: add sg_io_v4 structure 2006-12-20 10:13 ` Jens Axboe @ 2006-12-20 22:29 ` FUJITA Tomonori 2006-12-21 7:28 ` Jens Axboe 0 siblings, 1 reply; 6+ messages in thread From: FUJITA Tomonori @ 2006-12-20 22:29 UTC (permalink / raw) To: jens.axboe; +Cc: tomof, linux-scsi, dougg From: Jens Axboe <jens.axboe@oracle.com> Subject: Re: [PATCH 4/6] bsg: add sg_io_v4 structure Date: Wed, 20 Dec 2006 11:13:14 +0100 > On Wed, Dec 20 2006, FUJITA Tomonori wrote: > > This patch adds sg_io_v4 structure that Doug proposed last month. > > > > There's one major change from the RFC. I dropped iovec, which needs > > compat stuff. The bsg code simply calls blk_rq_map_user against > > dout_xferp/din_xferp. So if possible, the page frames are directly > > mapped. If not possible, the block layer allocates new page frames and > > does memory copies. > > > > Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> > > --- > > include/linux/bsg.h | 43 +++++++++++++++++++++++++++++++++++++++++++ > > 1 files changed, 43 insertions(+), 0 deletions(-) > > > > diff --git a/include/linux/bsg.h b/include/linux/bsg.h > > index dc0d728..0d212cc 100644 > > --- a/include/linux/bsg.h > > +++ b/include/linux/bsg.h > > @@ -1,6 +1,47 @@ > > #ifndef BSG_H > > #define BSG_H > > > > +struct sg_io_v4 { > > + int32_t guard; /* [i] 'Q' to differentiate from v3 */ > > + uint32_t protocol; /* [i] 0 -> SCSI , .... */ > > I prefer using the u32 types and so on for explicitly sized variables. > I'll make that change. I see though we need to use __u32 instead of u32, don't we? ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 4/6] bsg: add sg_io_v4 structure 2006-12-20 22:29 ` FUJITA Tomonori @ 2006-12-21 7:28 ` Jens Axboe 2006-12-22 4:46 ` FUJITA Tomonori 0 siblings, 1 reply; 6+ messages in thread From: Jens Axboe @ 2006-12-21 7:28 UTC (permalink / raw) To: FUJITA Tomonori; +Cc: linux-scsi, dougg On Thu, Dec 21 2006, FUJITA Tomonori wrote: > From: Jens Axboe <jens.axboe@oracle.com> > Subject: Re: [PATCH 4/6] bsg: add sg_io_v4 structure > Date: Wed, 20 Dec 2006 11:13:14 +0100 > > > On Wed, Dec 20 2006, FUJITA Tomonori wrote: > > > This patch adds sg_io_v4 structure that Doug proposed last month. > > > > > > There's one major change from the RFC. I dropped iovec, which needs > > > compat stuff. The bsg code simply calls blk_rq_map_user against > > > dout_xferp/din_xferp. So if possible, the page frames are directly > > > mapped. If not possible, the block layer allocates new page frames and > > > does memory copies. > > > > > > Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> > > > --- > > > include/linux/bsg.h | 43 +++++++++++++++++++++++++++++++++++++++++++ > > > 1 files changed, 43 insertions(+), 0 deletions(-) > > > > > > diff --git a/include/linux/bsg.h b/include/linux/bsg.h > > > index dc0d728..0d212cc 100644 > > > --- a/include/linux/bsg.h > > > +++ b/include/linux/bsg.h > > > @@ -1,6 +1,47 @@ > > > #ifndef BSG_H > > > #define BSG_H > > > > > > +struct sg_io_v4 { > > > + int32_t guard; /* [i] 'Q' to differentiate from v3 */ > > > + uint32_t protocol; /* [i] 0 -> SCSI , .... */ > > > > I prefer using the u32 types and so on for explicitly sized variables. > > I'll make that change. > > I see though we need to use __u32 instead of u32, don't we? Yep, we should. -- Jens Axboe ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 4/6] bsg: add sg_io_v4 structure 2006-12-21 7:28 ` Jens Axboe @ 2006-12-22 4:46 ` FUJITA Tomonori 2006-12-22 8:42 ` Jens Axboe 0 siblings, 1 reply; 6+ messages in thread From: FUJITA Tomonori @ 2006-12-22 4:46 UTC (permalink / raw) To: jens.axboe; +Cc: tomof, linux-scsi, dougg From: Jens Axboe <jens.axboe@oracle.com> Subject: Re: [PATCH 4/6] bsg: add sg_io_v4 structure Date: Thu, 21 Dec 2006 08:28:23 +0100 > On Thu, Dec 21 2006, FUJITA Tomonori wrote: > > From: Jens Axboe <jens.axboe@oracle.com> > > Subject: Re: [PATCH 4/6] bsg: add sg_io_v4 structure > > Date: Wed, 20 Dec 2006 11:13:14 +0100 > > > > > On Wed, Dec 20 2006, FUJITA Tomonori wrote: > > > > This patch adds sg_io_v4 structure that Doug proposed last month. > > > > > > > > There's one major change from the RFC. I dropped iovec, which needs > > > > compat stuff. The bsg code simply calls blk_rq_map_user against > > > > dout_xferp/din_xferp. So if possible, the page frames are directly > > > > mapped. If not possible, the block layer allocates new page frames and > > > > does memory copies. > > > > > > > > Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> > > > > --- > > > > include/linux/bsg.h | 43 +++++++++++++++++++++++++++++++++++++++++++ > > > > 1 files changed, 43 insertions(+), 0 deletions(-) > > > > > > > > diff --git a/include/linux/bsg.h b/include/linux/bsg.h > > > > index dc0d728..0d212cc 100644 > > > > --- a/include/linux/bsg.h > > > > +++ b/include/linux/bsg.h > > > > @@ -1,6 +1,47 @@ > > > > #ifndef BSG_H > > > > #define BSG_H > > > > > > > > +struct sg_io_v4 { > > > > + int32_t guard; /* [i] 'Q' to differentiate from v3 */ > > > > + uint32_t protocol; /* [i] 0 -> SCSI , .... */ > > > > > > I prefer using the u32 types and so on for explicitly sized variables. > > > I'll make that change. > > > > I see though we need to use __u32 instead of u32, don't we? > > Yep, we should. Are you waiting for a patch? --- >From 94512209b34bf05ff8ee7830889cd811f0ef17fe Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Date: Fri, 22 Dec 2006 09:23:03 +0900 Subject: [PATCH] Replace s32, u32 and u64 with __s32, __u32 and __u64 in bsg.h for userspace Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> --- include/linux/bsg.h | 58 +++++++++++++++++++++++++------------------------- 1 files changed, 29 insertions(+), 29 deletions(-) diff --git a/include/linux/bsg.h b/include/linux/bsg.h index f968726..2154a6d 100644 --- a/include/linux/bsg.h +++ b/include/linux/bsg.h @@ -2,42 +2,42 @@ #ifndef BSG_H #define BSG_H struct sg_io_v4 { - s32 guard; /* [i] 'Q' to differentiate from v3 */ - u32 protocol; /* [i] 0 -> SCSI , .... */ - u32 subprotocol; /* [i] 0 -> SCSI command, 1 -> SCSI task + __s32 guard; /* [i] 'Q' to differentiate from v3 */ + __u32 protocol; /* [i] 0 -> SCSI , .... */ + __u32 subprotocol; /* [i] 0 -> SCSI command, 1 -> SCSI task management function, .... */ - u32 request_len; /* [i] in bytes */ - u64 request; /* [i], [*i] {SCSI: cdb} */ - u32 request_attr; /* [i] {SCSI: task attribute} */ - u32 request_tag; /* [i] {SCSI: task tag (only if flagged)} */ - u32 request_priority; /* [i] {SCSI: task priority} */ - u32 max_response_len; /* [i] in bytes */ - u64 response; /* [i], [*o] {SCSI: (auto)sense data} */ + __u32 request_len; /* [i] in bytes */ + __u64 request; /* [i], [*i] {SCSI: cdb} */ + __u32 request_attr; /* [i] {SCSI: task attribute} */ + __u32 request_tag; /* [i] {SCSI: task tag (only if flagged)} */ + __u32 request_priority; /* [i] {SCSI: task priority} */ + __u32 max_response_len; /* [i] in bytes */ + __u64 response; /* [i], [*o] {SCSI: (auto)sense data} */ /* "din_" for data in (from device); "dout_" for data out (to device) */ - u32 dout_xfer_len; /* [i] bytes to be transferred to device */ - u32 din_xfer_len; /* [i] bytes to be transferred from device */ - u64 dout_xferp; /* [i], [*i] */ - u64 din_xferp; /* [i], [*o] */ + __u32 dout_xfer_len; /* [i] bytes to be transferred to device */ + __u32 din_xfer_len; /* [i] bytes to be transferred from device */ + __u64 dout_xferp; /* [i], [*i] */ + __u64 din_xferp; /* [i], [*o] */ - u32 timeout; /* [i] units: millisecond */ - u32 flags; /* [i] bit mask */ - u64 usr_ptr; /* [i->o] unused internally */ - u32 spare_in; /* [i] */ + __u32 timeout; /* [i] units: millisecond */ + __u32 flags; /* [i] bit mask */ + __u64 usr_ptr; /* [i->o] unused internally */ + __u32 spare_in; /* [i] */ - u32 driver_status; /* [o] 0 -> ok */ - u32 transport_status; /* [o] 0 -> ok */ - u32 device_status; /* [o] {SCSI: command completion status} */ - u32 retry_delay; /* [o] {SCSI: status auxiliary information} */ - u32 info; /* [o] additional information */ - u32 duration; /* [o] time to complete, in milliseconds */ - u32 response_len; /* [o] bytes of response actually written */ - s32 din_resid; /* [o] actual_din_xfer_len - din_xfer_len */ - u32 generated_tag; /* [o] {SCSI: task tag that transport chose} */ - u32 spare_out; /* [o] */ + __u32 driver_status; /* [o] 0 -> ok */ + __u32 transport_status; /* [o] 0 -> ok */ + __u32 device_status; /* [o] {SCSI: command completion status} */ + __u32 retry_delay; /* [o] {SCSI: status auxiliary information} */ + __u32 info; /* [o] additional information */ + __u32 duration; /* [o] time to complete, in milliseconds */ + __u32 response_len; /* [o] bytes of response actually written */ + __s32 din_resid; /* [o] actual_din_xfer_len - din_xfer_len */ + __u32 generated_tag; /* [o] {SCSI: task tag that transport chose} */ + __u32 spare_out; /* [o] */ - u32 padding; + __u32 padding; }; #ifdef __KERNEL__ -- 1.4.3.2 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 4/6] bsg: add sg_io_v4 structure 2006-12-22 4:46 ` FUJITA Tomonori @ 2006-12-22 8:42 ` Jens Axboe 0 siblings, 0 replies; 6+ messages in thread From: Jens Axboe @ 2006-12-22 8:42 UTC (permalink / raw) To: FUJITA Tomonori; +Cc: linux-scsi, dougg On Fri, Dec 22 2006, FUJITA Tomonori wrote: > From: Jens Axboe <jens.axboe@oracle.com> > Subject: Re: [PATCH 4/6] bsg: add sg_io_v4 structure > Date: Thu, 21 Dec 2006 08:28:23 +0100 > > > On Thu, Dec 21 2006, FUJITA Tomonori wrote: > > > From: Jens Axboe <jens.axboe@oracle.com> > > > Subject: Re: [PATCH 4/6] bsg: add sg_io_v4 structure > > > Date: Wed, 20 Dec 2006 11:13:14 +0100 > > > > > > > On Wed, Dec 20 2006, FUJITA Tomonori wrote: > > > > > This patch adds sg_io_v4 structure that Doug proposed last month. > > > > > > > > > > There's one major change from the RFC. I dropped iovec, which needs > > > > > compat stuff. The bsg code simply calls blk_rq_map_user against > > > > > dout_xferp/din_xferp. So if possible, the page frames are directly > > > > > mapped. If not possible, the block layer allocates new page frames and > > > > > does memory copies. > > > > > > > > > > Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> > > > > > --- > > > > > include/linux/bsg.h | 43 +++++++++++++++++++++++++++++++++++++++++++ > > > > > 1 files changed, 43 insertions(+), 0 deletions(-) > > > > > > > > > > diff --git a/include/linux/bsg.h b/include/linux/bsg.h > > > > > index dc0d728..0d212cc 100644 > > > > > --- a/include/linux/bsg.h > > > > > +++ b/include/linux/bsg.h > > > > > @@ -1,6 +1,47 @@ > > > > > #ifndef BSG_H > > > > > #define BSG_H > > > > > > > > > > +struct sg_io_v4 { > > > > > + int32_t guard; /* [i] 'Q' to differentiate from v3 */ > > > > > + uint32_t protocol; /* [i] 0 -> SCSI , .... */ > > > > > > > > I prefer using the u32 types and so on for explicitly sized variables. > > > > I'll make that change. > > > > > > I see though we need to use __u32 instead of u32, don't we? > > > > Yep, we should. > > Are you waiting for a patch? Not really, just didn't get to it yet. But I'll take the patch, thanks :-) Could you do the __user annotations as well? -- Jens Axboe ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-12-22 8:40 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-12-20 5:43 [PATCH 4/6] bsg: add sg_io_v4 structure FUJITA Tomonori 2006-12-20 10:13 ` Jens Axboe 2006-12-20 22:29 ` FUJITA Tomonori 2006-12-21 7:28 ` Jens Axboe 2006-12-22 4:46 ` FUJITA Tomonori 2006-12-22 8:42 ` Jens Axboe
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox