From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: James Bottomley <James.Bottomley@steeleye.com>
Cc: Jeff Garzik <jeff@garzik.org>,
Andrew Morton <akpm@linux-foundation.org>,
Jens Axboe <jens.axboe@oracle.com>,
FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>,
linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org,
linux-ide@vger.kernel.org
Subject: Re: block/bsg.c
Date: Wed, 18 Jul 2007 22:32:58 +0200 [thread overview]
Message-ID: <200707182232.58961.bzolnier@gmail.com> (raw)
In-Reply-To: <1184767917.3464.13.camel@localhost.localdomain>
Hi,
On Wednesday 18 July 2007, James Bottomley wrote:
> On Wed, 2007-07-18 at 02:43 +0200, Bartlomiej Zolnierkiewicz wrote:
> > [ James, please remeber to cc: linux-ide on IDE patches, thanks. ]
>
> Blame Andrew ... I assumed he'd be reporting the problem to the relevant
> lists, so I just did a reply all ...
No need to blame anybody, especially since it seems that one more person
forgot about adding linux-ide ML. ;)
> > On Wednesday 18 July 2007, Jeff Garzik wrote:
> > > James Bottomley wrote:
> > > > @@ -1052,9 +1054,10 @@ int generic_ide_ioctl(ide_drive_t *drive, struct file *file, struct block_device
> > > > int err, (*setfunc)(ide_drive_t *, int);
> > > > u8 *val;
> > > >
> > > > - err = scsi_cmd_ioctl(file, bdev->bd_disk->queue, bdev->bd_disk, cmd, p);
> > > > - if (err != -ENOTTY)
> > > > - return err;
> > > > + switch (cmd) {
> > > > + case SG_IO:
> > > > + return scsi_cmd_ioctl(file, bdev->bd_disk->queue, bdev->bd_disk, cmd, p);
> > > > + }
> > > >
> > > > switch (cmd) {
> > > > case HDIO_GET_32BIT: val = &drive->io_32bit; goto read_val;
> > >
> > >
> > > At that point you might as well use an 'if'.
> > >
> > > But overall -- agreed. ACK.
> >
> > James/Jeff thanks for following the issue but NAK. ;)
> >
> > Causes regression wrt ide-floppy CDROMEJECT/CDROMCLOSETRAY support when
> > compared to 2.6.22 and SG_IO is not supported by ide-{disk,scsi,tape}.
>
> Well ... that was why I put the case statement in ... I was sure there
> would be other ioctls I missed.
The thing is that ide-{disk,scsi,tape} really don't support
REQ_TYPE_BLOCK_PC type requests so ide.c::generic_ide_ioctl()
is not the best place to add handling of SG_IO.
Patch attached.
> > Luckily Linus has already fixed the issue properly.
>
> Actually, no, that's just a reversion. I think we need the attached to
> complete all of this.
>
> > BTW cmd == 1 IOCTL is not defined/used by IDE driver.
>
> Andrew's trace clearly shows that something is sending cmd == 1 down, so
I still haven't got the trace. Andrew, please (re)send it in PM, thanks.
> I'm nearly positive at one time this was a legitimate ioctl for IDE.
Could be...
> Anyway it's probably time to kill this deprecated ioctl in SCSI.
Fully agreed.
Thanks,
Bart
[PATCH] ide: add support for SCSI ioctls to ide-floppy
Now that ide-floppy supports SG_IO we can add support for SCSI ioctls
(except deprecated SCSI_IOCTL_SEND_COMMAND and legacy CDROM_SEND_PACKET
ones - we can add them later iff really needed).
While at it remove handling of CDROMEJECT and CDROMCLOSETRAY ioctls from
generic_ide_ioctl():
- This prevents ide-{disk,tape,scsi} device drivers from obtaining
REQ_TYPE_BLOCK_PC type requests which are currently unsupported by
these drivers and which are potentially harmful (as reported by Andrew).
- There is no functionality loss since aforementioned ioctls will now be
handled by idefloppy_ioctl()->scsi_cmd_ioctl() (for devices using
ide-floppy driver) and by idecd_ioctl->cdrom_ioctl()->scsi_cmd_ioctl()
(for devices using ide-cd driver).
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Cc: Jens Axboe <jens.axboe@oracle.com>
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: James Bottomley <James.Bottomley@steeleye.com>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
---
drivers/ide/ide-floppy.c | 18 +++++++++++++++++-
drivers/ide/ide.c | 4 ----
2 files changed, 17 insertions(+), 5 deletions(-)
Index: b/drivers/ide/ide-floppy.c
===================================================================
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -99,6 +99,8 @@
#include <linux/bitops.h>
#include <linux/mutex.h>
+#include <scsi/scsi_ioctl.h>
+
#include <asm/byteorder.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
@@ -2099,7 +2101,21 @@ static int idefloppy_ioctl(struct inode
case IDEFLOPPY_IOCTL_FORMAT_GET_PROGRESS:
return idefloppy_get_format_progress(drive, argp);
}
- return generic_ide_ioctl(drive, file, bdev, cmd, arg);
+
+ /*
+ * skip SCSI_IOCTL_SEND_COMMAND (deprecated)
+ * and CDROM_SEND_PACKET (legacy) ioctls
+ */
+ if (cmd != CDROM_SEND_PACKET && cmd != SCSI_IOCTL_SEND_COMMAND)
+ err = scsi_cmd_ioctl(file, bdev->bd_disk->queue,
+ bdev->bd_disk, cmd, argp);
+ else
+ err = -ENOTTY;
+
+ if (err == -ENOTTY)
+ err = generic_ide_ioctl(drive, file, bdev, cmd, arg);
+
+ return err;
}
static int idefloppy_media_changed(struct gendisk *disk)
Index: b/drivers/ide/ide.c
===================================================================
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -1171,10 +1171,6 @@ int generic_ide_ioctl(ide_drive_t *drive
return 0;
}
- case CDROMEJECT:
- case CDROMCLOSETRAY:
- return scsi_cmd_ioctl(file, bdev->bd_disk->queue, bdev->bd_disk, cmd, p);
-
case HDIO_GET_BUSSTATE:
if (!capable(CAP_SYS_ADMIN))
return -EACCES;
next parent reply other threads:[~2007-07-18 20:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20070716165706.348f6bbf.akpm@linux-foundation.org>
[not found] ` <200707180243.13368.bzolnier@gmail.com>
[not found] ` <1184767917.3464.13.camel@localhost.localdomain>
2007-07-18 20:32 ` Bartlomiej Zolnierkiewicz [this message]
2007-07-18 21:32 ` block/bsg.c James Bottomley
[not found] <20070717065940.GZ5195@kernel.dk>
[not found] ` <20070717190705T.fujita.tomonori@lab.ntt.co.jp>
[not found] ` <20070717101928.GK5195@kernel.dk>
2007-07-17 20:52 ` block/bsg.c Bartlomiej Zolnierkiewicz
2007-07-17 21:34 ` block/bsg.c Andrew Morton
2007-07-17 23:19 ` block/bsg.c Bartlomiej Zolnierkiewicz
2007-07-17 22:26 ` block/bsg.c FUJITA Tomonori
2007-07-18 20:39 ` block/bsg.c Bartlomiej Zolnierkiewicz
2007-07-18 23:44 ` block/bsg.c FUJITA Tomonori
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200707182232.58961.bzolnier@gmail.com \
--to=bzolnier@gmail.com \
--cc=James.Bottomley@steeleye.com \
--cc=akpm@linux-foundation.org \
--cc=fujita.tomonori@lab.ntt.co.jp \
--cc=jeff@garzik.org \
--cc=jens.axboe@oracle.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).