Re: [PATCH 6/6] bsg: add SG_IO to SG v4
On Wed, Dec 20 2006, Jens Axboe wrote: > On Wed, Dec 20 2006, FUJITA Tomonori wrote: > > This adds SG_IO support to SG v4. > > > > Signed-off-by: FUJITA Tomonori <[EMAIL PROTECTED]> > > --- > > block/bsg.c | 23 +-- > > 1 files changed, 21 insertions(+), 2 deletions(-) > > > > diff --git a/block/bsg.c b/block/bsg.c > > index 6d139d2..9dc5d36 100644 > > --- a/block/bsg.c > > +++ b/block/bsg.c > > @@ -945,8 +945,27 @@ bsg_ioctl(struct inode *inode, struct fi > > void __user *uarg = (void __user *) arg; > > return scsi_cmd_ioctl(file, bd->disk, cmd, uarg); > > } > > - case SG_IO: > > - return -EINVAL; > > + case SG_IO: { > > + struct request *rq; > > + struct bio *bio; > > + struct sg_io_v4 hdr; > > + > > + if (copy_from_user(&hdr, uarg, sizeof(hdr))) > > + return -EFAULT; > > + > > + rq = bsg_map_hdr(bd, &hdr); > > + if (IS_ERR(rq)) > > + return PTR_ERR(rq); > > + > > + bio = rq->bio; > > Pointless assignment. In fact the bio can be completely removed. > > + blk_execute_rq(bd->queue, bd->disk, rq, 0); > > + blk_complete_sgv4_hdr_rq(rq, &hdr, bio); My mistake, the bio assignment is fine and of course needed. -- Jens Axboe - 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
Re: [PATCH 6/6] bsg: add SG_IO to SG v4
On Wed, Dec 20 2006, FUJITA Tomonori wrote: > This adds SG_IO support to SG v4. > > Signed-off-by: FUJITA Tomonori <[EMAIL PROTECTED]> > --- > block/bsg.c | 23 +-- > 1 files changed, 21 insertions(+), 2 deletions(-) > > diff --git a/block/bsg.c b/block/bsg.c > index 6d139d2..9dc5d36 100644 > --- a/block/bsg.c > +++ b/block/bsg.c > @@ -945,8 +945,27 @@ bsg_ioctl(struct inode *inode, struct fi > void __user *uarg = (void __user *) arg; > return scsi_cmd_ioctl(file, bd->disk, cmd, uarg); > } > - case SG_IO: > - return -EINVAL; > + case SG_IO: { > + struct request *rq; > + struct bio *bio; > + struct sg_io_v4 hdr; > + > + if (copy_from_user(&hdr, uarg, sizeof(hdr))) > + return -EFAULT; > + > + rq = bsg_map_hdr(bd, &hdr); > + if (IS_ERR(rq)) > + return PTR_ERR(rq); > + > + bio = rq->bio; Pointless assignment. In fact the bio can be completely removed. > + blk_execute_rq(bd->queue, bd->disk, rq, 0); > + blk_complete_sgv4_hdr_rq(rq, &hdr, bio); > + > + if (copy_to_user(uarg, &hdr, sizeof(hdr))) > + return -EFAULT; > + else > + return 0; Kill the else. I'll make both changes. Applying your series as-is, and making the changes I noted in the previous mails. -- Jens Axboe - 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
[PATCH 6/6] bsg: add SG_IO to SG v4
This adds SG_IO support to SG v4. Signed-off-by: FUJITA Tomonori <[EMAIL PROTECTED]> --- block/bsg.c | 23 +-- 1 files changed, 21 insertions(+), 2 deletions(-) diff --git a/block/bsg.c b/block/bsg.c index 6d139d2..9dc5d36 100644 --- a/block/bsg.c +++ b/block/bsg.c @@ -945,8 +945,27 @@ bsg_ioctl(struct inode *inode, struct fi void __user *uarg = (void __user *) arg; return scsi_cmd_ioctl(file, bd->disk, cmd, uarg); } - case SG_IO: - return -EINVAL; + case SG_IO: { + struct request *rq; + struct bio *bio; + struct sg_io_v4 hdr; + + if (copy_from_user(&hdr, uarg, sizeof(hdr))) + return -EFAULT; + + rq = bsg_map_hdr(bd, &hdr); + if (IS_ERR(rq)) + return PTR_ERR(rq); + + bio = rq->bio; + blk_execute_rq(bd->queue, bd->disk, rq, 0); + blk_complete_sgv4_hdr_rq(rq, &hdr, bio); + + if (copy_to_user(uarg, &hdr, sizeof(hdr))) + return -EFAULT; + else + return 0; + } /* * block device ioctls */ -- 1.4.3.2 - 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