On Thu, May 21, 2015 at 09:56:21AM +0200, Richard Weinberger wrote:
On Wed, May 20, 2015 at 9:33 PM, Brian NorrisI suppose that makes more sense.
<computersforpeace@xxxxxxxxx> wrote:
On Wed, May 13, 2015 at 02:29:16PM +0800, Wenlin Kang wrote:I'd vote for -ENOTTY as this is what HDIO_GETGEIO returns
Modify function blktrans_getgeo()'s return value to -ENXIO whenGood catch. I don't think ENXIO is correct in this case, though. Maybe
dev->tr->getgeo == NULL.
We shouldn't make the return value to 0 when dev->tr->getgeo == NULL,
because the function blktrans_getgeo() has an output value "hd_geometry"
which is usually used by some application, if return 0, it will make some
application get the wrong information.
Signed-off-by: Wenlin Kang <wenlin.kang@xxxxxxxxxxxxx>
---
drivers/mtd/mtd_blkdevs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c
index 2b0c5287..f8bb16e 100644
--- a/drivers/mtd/mtd_blkdevs.c
+++ b/drivers/mtd/mtd_blkdevs.c
@@ -273,7 +273,7 @@ static int blktrans_getgeo(struct block_device *bdev, struct hd_geometry *geo)
if (!dev->mtd)
goto unlock;
- ret = dev->tr->getgeo ? dev->tr->getgeo(dev, geo) : 0;
+ ret = dev->tr->getgeo ? dev->tr->getgeo(dev, geo) : -ENXIO;
-EOPNOTSUPP or -ENOSYS? The latter might make more sense I guess.
if the function is not implemented and blktrans_getgeo()
is only a wrapper around that.
See https://www.kernel.org/doc/Documentation/ioctl/hdio.txtBut this only mentions EINVAL...
and block/ioctl.c.Anyway, I pushed EOPNOTSUPP, but I can fix that up if we agree.
Brian