* [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value
@ 2015-05-13 6:29 Wenlin Kang
2015-05-20 19:33 ` Brian Norris
0 siblings, 1 reply; 12+ messages in thread
From: Wenlin Kang @ 2015-05-13 6:29 UTC (permalink / raw)
To: dwmw2, computersforpeace; +Cc: linux-mtd, linux-kernel
Modify function blktrans_getgeo()'s return value to -ENXIO when
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@windriver.com>
---
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;
unlock:
mutex_unlock(&dev->lock);
blktrans_dev_put(dev);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value
2015-05-13 6:29 [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value Wenlin Kang
@ 2015-05-20 19:33 ` Brian Norris
2015-05-20 19:47 ` nick
2015-05-21 7:56 ` Richard Weinberger
0 siblings, 2 replies; 12+ messages in thread
From: Brian Norris @ 2015-05-20 19:33 UTC (permalink / raw)
To: Wenlin Kang; +Cc: linux-mtd, dwmw2, linux-kernel
Hi Wenlin,
In the subject:
s/rerurn/return/
On Wed, May 13, 2015 at 02:29:16PM +0800, Wenlin Kang wrote:
> Modify function blktrans_getgeo()'s return value to -ENXIO when
> 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@windriver.com>
> ---
> 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;
Good catch. I don't think ENXIO is correct in this case, though. Maybe
-EOPNOTSUPP or -ENOSYS? The latter might make more sense I guess.
> unlock:
> mutex_unlock(&dev->lock);
> blktrans_dev_put(dev);
Thanks,
Brian
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value
2015-05-20 19:33 ` Brian Norris
@ 2015-05-20 19:47 ` nick
2015-05-21 6:49 ` Wenlin Kang
2015-05-21 7:56 ` Richard Weinberger
1 sibling, 1 reply; 12+ messages in thread
From: nick @ 2015-05-20 19:47 UTC (permalink / raw)
To: Brian Norris, Wenlin Kang; +Cc: dwmw2, linux-mtd, linux-kernel
On 2015-05-20 03:33 PM, Brian Norris wrote:
> Hi Wenlin,
>
> In the subject:
>
> s/rerurn/return/
>
> On Wed, May 13, 2015 at 02:29:16PM +0800, Wenlin Kang wrote:
>> Modify function blktrans_getgeo()'s return value to -ENXIO when
>> 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@windriver.com>
>> ---
>> 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;
>
> Good catch. I don't think ENXIO is correct in this case, though. Maybe
> -EOPNOTSUPP or -ENOSYS? The latter might make more sense I guess.
>
I would recommend -EOPNOTSUPP as this as nothing to do with unimplemented
functions or hardware support. This is just unsupported due to the value
being NULL and therefore the hardware support is not there.
Just My Option,
Nick
>> unlock:
>> mutex_unlock(&dev->lock);
>> blktrans_dev_put(dev);
>
> Thanks,
> Brian
>
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value
2015-05-20 19:47 ` nick
@ 2015-05-21 6:49 ` Wenlin Kang
2015-05-21 7:37 ` Brian Norris
0 siblings, 1 reply; 12+ messages in thread
From: Wenlin Kang @ 2015-05-21 6:49 UTC (permalink / raw)
To: nick, Brian Norris; +Cc: dwmw2, linux-mtd, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 2084 bytes --]
On 2015年05月21日 03:47, nick wrote:
>
> On 2015-05-20 03:33 PM, Brian Norris wrote:
>> Hi Wenlin,
>>
>> In the subject:
>>
>> s/rerurn/return/
Thanks for pointing out this, I will modify it.
>>
>> On Wed, May 13, 2015 at 02:29:16PM +0800, Wenlin Kang wrote:
>>> Modify function blktrans_getgeo()'s return value to -ENXIO when
>>> 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@windriver.com>
>>> ---
>>> 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;
>> Good catch. I don't think ENXIO is correct in this case, though. Maybe
>> -EOPNOTSUPP or -ENOSYS? The latter might make more sense I guess.
>>
> I would recommend -EOPNOTSUPP as this as nothing to do with unimplemented
> functions or hardware support. This is just unsupported due to the value
> being NULL and therefore the hardware support is not there.
> Just My Option,
> Nick
As you said, -EOPNOTSUPP might be better,thanks.
Hi Brian
I have remade the patch and attached it, would you please check it
again? thanks.
>>> unlock:
>>> mutex_unlock(&dev->lock);
>>> blktrans_dev_put(dev);
>> Thanks,
>> Brian
>>
>> ______________________________________________________
>> Linux MTD discussion mailing list
>> http://lists.infradead.org/mailman/listinfo/linux-mtd/
>>
>
--
Thanks,
Wenlin Kang
[-- Attachment #2: 0001-mtd-blktrans-change-blktrans_getgeo-return-value.patch --]
[-- Type: text/x-diff, Size: 1216 bytes --]
>From d8fa6589438a6992ed13b91c0124ed6cd8114eff Mon Sep 17 00:00:00 2001
From: Wenlin Kang <wenlin.kang@windriver.com>
Date: Thu, 21 May 2015 14:11:58 +0800
Subject: [PATCH] mtd: blktrans: change blktrans_getgeo return value
Modify function blktrans_getgeo()'s return value to -EOPNOTSUPP when
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@windriver.com>
---
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..2012216 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) : -EOPNOTSUPP;
unlock:
mutex_unlock(&dev->lock);
blktrans_dev_put(dev);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value
2015-05-21 6:49 ` Wenlin Kang
@ 2015-05-21 7:37 ` Brian Norris
2015-05-21 8:01 ` Wenlin Kang
0 siblings, 1 reply; 12+ messages in thread
From: Brian Norris @ 2015-05-21 7:37 UTC (permalink / raw)
To: Wenlin Kang; +Cc: dwmw2, linux-mtd, linux-kernel
On Thu, May 21, 2015 at 02:49:38PM +0800, Wenlin Kang wrote:
> On 2015年05月21日 03:47, nick wrote:
> >On 2015-05-20 03:33 PM, Brian Norris wrote:
> >>On Wed, May 13, 2015 at 02:29:16PM +0800, Wenlin Kang wrote:
> >>>Modify function blktrans_getgeo()'s return value to -ENXIO when
> >>>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@windriver.com>
> >>>---
> >>> 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;
> >>Good catch. I don't think ENXIO is correct in this case, though. Maybe
> >>-EOPNOTSUPP or -ENOSYS? The latter might make more sense I guess.
> >>
> >I would recommend -EOPNOTSUPP as this as nothing to do with unimplemented
> >functions or hardware support. This is just unsupported due to the value
> >being NULL and therefore the hardware support is not there.
> >Just My Option,
> >Nick
>
> As you said, -EOPNOTSUPP might be better,thanks.
Nick's opinion is irrelevant here:
https://lkml.org/lkml/2014/8/4/206
> I have remade the patch and attached it, would you please check it
> again? thanks.
Please send patches inline (e.g., via git-send-email), not as
attachments. But this is pretty trivial, and it's what I already tested.
So, applied to l2-mtd.git.
Brian
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value
2015-05-20 19:33 ` Brian Norris
2015-05-20 19:47 ` nick
@ 2015-05-21 7:56 ` Richard Weinberger
2015-05-21 8:05 ` Brian Norris
1 sibling, 1 reply; 12+ messages in thread
From: Richard Weinberger @ 2015-05-21 7:56 UTC (permalink / raw)
To: Brian Norris
Cc: David Woodhouse, linux-mtd@lists.infradead.org, LKML, Wenlin Kang
On Wed, May 20, 2015 at 9:33 PM, Brian Norris
<computersforpeace@gmail.com> wrote:
> Hi Wenlin,
>
> In the subject:
>
> s/rerurn/return/
>
> On Wed, May 13, 2015 at 02:29:16PM +0800, Wenlin Kang wrote:
>> Modify function blktrans_getgeo()'s return value to -ENXIO when
>> 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@windriver.com>
>> ---
>> 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;
>
> Good catch. I don't think ENXIO is correct in this case, though. Maybe
> -EOPNOTSUPP or -ENOSYS? The latter might make more sense I guess.
I'd vote for -ENOTTY as this is what HDIO_GETGEIO returns
if the function is not implemented and blktrans_getgeo()
is only a wrapper around that.
See https://www.kernel.org/doc/Documentation/ioctl/hdio.txt
and block/ioctl.c.
--
Thanks,
//richard
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value
2015-05-21 7:37 ` Brian Norris
@ 2015-05-21 8:01 ` Wenlin Kang
0 siblings, 0 replies; 12+ messages in thread
From: Wenlin Kang @ 2015-05-21 8:01 UTC (permalink / raw)
To: Brian Norris; +Cc: dwmw2, linux-mtd, linux-kernel
On 2015年05月21日 15:37, Brian Norris wrote:
> On Thu, May 21, 2015 at 02:49:38PM +0800, Wenlin Kang wrote:
>> On 2015年05月21日 03:47, nick wrote:
>>> On 2015-05-20 03:33 PM, Brian Norris wrote:
>>>> On Wed, May 13, 2015 at 02:29:16PM +0800, Wenlin Kang wrote:
>>>>> Modify function blktrans_getgeo()'s return value to -ENXIO when
>>>>> 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@windriver.com>
>>>>> ---
>>>>> 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;
>>>> Good catch. I don't think ENXIO is correct in this case, though. Maybe
>>>> -EOPNOTSUPP or -ENOSYS? The latter might make more sense I guess.
>>>>
>>> I would recommend -EOPNOTSUPP as this as nothing to do with unimplemented
>>> functions or hardware support. This is just unsupported due to the value
>>> being NULL and therefore the hardware support is not there.
>>> Just My Option,
>>> Nick
>> As you said, -EOPNOTSUPP might be better,thanks.
> Nick's opinion is irrelevant here:
>
> https://lkml.org/lkml/2014/8/4/206
>
>> I have remade the patch and attached it, would you please check it
>> again? thanks.
> Please send patches inline (e.g., via git-send-email), not as
> attachments. But this is pretty trivial, and it's what I already tested.
>
> So, applied to l2-mtd.git.
>
> Brian
>
OK, thanks, I have resent the patch to you and list by git send-email,
please check it.
--
Thanks,
Wenlin Kang
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value
2015-05-21 7:56 ` Richard Weinberger
@ 2015-05-21 8:05 ` Brian Norris
2015-05-21 8:22 ` Wenlin Kang
2015-05-21 10:17 ` Richard Weinberger
0 siblings, 2 replies; 12+ messages in thread
From: Brian Norris @ 2015-05-21 8:05 UTC (permalink / raw)
To: Richard Weinberger
Cc: David Woodhouse, linux-mtd@lists.infradead.org, LKML, Wenlin Kang
On Thu, May 21, 2015 at 09:56:21AM +0200, Richard Weinberger wrote:
> On Wed, May 20, 2015 at 9:33 PM, Brian Norris
> <computersforpeace@gmail.com> wrote:
> > On Wed, May 13, 2015 at 02:29:16PM +0800, Wenlin Kang wrote:
> >> Modify function blktrans_getgeo()'s return value to -ENXIO when
> >> 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@windriver.com>
> >> ---
> >> 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;
> >
> > Good catch. I don't think ENXIO is correct in this case, though. Maybe
> > -EOPNOTSUPP or -ENOSYS? The latter might make more sense I guess.
>
> I'd vote for -ENOTTY as this is what HDIO_GETGEIO returns
> if the function is not implemented and blktrans_getgeo()
> is only a wrapper around that.
I suppose that makes more sense.
> See https://www.kernel.org/doc/Documentation/ioctl/hdio.txt
But this only mentions EINVAL...
> and block/ioctl.c.
Anyway, I pushed EOPNOTSUPP, but I can fix that up if we agree.
Brian
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value
2015-05-21 8:05 ` Brian Norris
@ 2015-05-21 8:22 ` Wenlin Kang
2015-05-21 10:17 ` Richard Weinberger
1 sibling, 0 replies; 12+ messages in thread
From: Wenlin Kang @ 2015-05-21 8:22 UTC (permalink / raw)
To: Brian Norris, Richard Weinberger
Cc: David Woodhouse, linux-mtd@lists.infradead.org, LKML
On 2015年05月21日 16:05, Brian Norris wrote:
> On Thu, May 21, 2015 at 09:56:21AM +0200, Richard Weinberger wrote:
>> On Wed, May 20, 2015 at 9:33 PM, Brian Norris
>> <computersforpeace@gmail.com> wrote:
>>> On Wed, May 13, 2015 at 02:29:16PM +0800, Wenlin Kang wrote:
>>>> Modify function blktrans_getgeo()'s return value to -ENXIO when
>>>> 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@windriver.com>
>>>> ---
>>>> 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;
>>> Good catch. I don't think ENXIO is correct in this case, though. Maybe
>>> -EOPNOTSUPP or -ENOSYS? The latter might make more sense I guess.
>> I'd vote for -ENOTTY as this is what HDIO_GETGEIO returns
>> if the function is not implemented and blktrans_getgeo()
>> is only a wrapper around that.
> I suppose that makes more sense.
>
>> See https://www.kernel.org/doc/Documentation/ioctl/hdio.txt
> But this only mentions EINVAL...
>
>> and block/ioctl.c.
> Anyway, I pushed EOPNOTSUPP, but I can fix that up if we agree.
>
> Brian
>
>
Hi Brian
I just read block/compat_ioctl.c, in that I found the follow,
51 static int compat_hdio_getgeo(struct gendisk *disk, struct
block_device *bdev,
52 struct compat_hd_geometry __user *ugeo)
53 {
54 struct hd_geometry geo;
55 int ret;
56
57 if (!ugeo)
58 return -EINVAL;
59 if (!disk->fops->getgeo)
60 return -ENOTTY;
So, as Richard said, -ENOTTY should also be OK, and before last
commit(048d87199566663e4edc4880df3703c04bcf41d9), it's -ENOTTY, so I
think you can modify it,
or let know whether I need to resent it again.
--
Thanks,
Wenlin Kang
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value
2015-05-21 8:05 ` Brian Norris
2015-05-21 8:22 ` Wenlin Kang
@ 2015-05-21 10:17 ` Richard Weinberger
2015-05-21 17:54 ` [PATCH] mtd: blktrans: use better error code for unimplemented ioctl() Brian Norris
1 sibling, 1 reply; 12+ messages in thread
From: Richard Weinberger @ 2015-05-21 10:17 UTC (permalink / raw)
To: Brian Norris
Cc: David Woodhouse, linux-mtd@lists.infradead.org, LKML, Wenlin Kang
Am 21.05.2015 um 10:05 schrieb Brian Norris:
> On Thu, May 21, 2015 at 09:56:21AM +0200, Richard Weinberger wrote:
>> On Wed, May 20, 2015 at 9:33 PM, Brian Norris
>> <computersforpeace@gmail.com> wrote:
>>> On Wed, May 13, 2015 at 02:29:16PM +0800, Wenlin Kang wrote:
>>>> Modify function blktrans_getgeo()'s return value to -ENXIO when
>>>> 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@windriver.com>
>>>> ---
>>>> 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;
>>>
>>> Good catch. I don't think ENXIO is correct in this case, though. Maybe
>>> -EOPNOTSUPP or -ENOSYS? The latter might make more sense I guess.
>>
>> I'd vote for -ENOTTY as this is what HDIO_GETGEIO returns
>> if the function is not implemented and blktrans_getgeo()
>> is only a wrapper around that.
>
> I suppose that makes more sense.
>
>> See https://www.kernel.org/doc/Documentation/ioctl/hdio.txt
>
> But this only mentions EINVAL...
Because ENOTTY is covered by ioctl().
If you request a non-existing function this error code will
be returned.
Thanks,
//richard
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH] mtd: blktrans: use better error code for unimplemented ioctl()
2015-05-21 10:17 ` Richard Weinberger
@ 2015-05-21 17:54 ` Brian Norris
2015-05-27 19:15 ` Brian Norris
0 siblings, 1 reply; 12+ messages in thread
From: Brian Norris @ 2015-05-21 17:54 UTC (permalink / raw)
To: Richard Weinberger
Cc: David Woodhouse, linux-mtd@lists.infradead.org, LKML, Wenlin Kang
In commit 50183936254b ("mtd: blktrans: change blktrans_getgeo return
value") we fixed the problem that ioctl(HDIO_GETGEO) might return 0
(success) for mtdblock devices which did not implement the feature and
would leave a blank (zero) result.
But now, let's get the error code right. Other code paths on this ioctl
tend to use -ENOTTY to notify the user that the ioctl() is not supported
for the device, so let's use that instead of -EOPNOTSUPP.
Suggested-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
---
Against l2-mtd.git (linux-next)
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 c545c9325acf..41acc507b22e 100644
--- a/drivers/mtd/mtd_blkdevs.c
+++ b/drivers/mtd/mtd_blkdevs.c
@@ -278,7 +278,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) : -EOPNOTSUPP;
+ ret = dev->tr->getgeo ? dev->tr->getgeo(dev, geo) : -ENOTTY;
unlock:
mutex_unlock(&dev->lock);
blktrans_dev_put(dev);
--
1.9.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] mtd: blktrans: use better error code for unimplemented ioctl()
2015-05-21 17:54 ` [PATCH] mtd: blktrans: use better error code for unimplemented ioctl() Brian Norris
@ 2015-05-27 19:15 ` Brian Norris
0 siblings, 0 replies; 12+ messages in thread
From: Brian Norris @ 2015-05-27 19:15 UTC (permalink / raw)
To: Richard Weinberger
Cc: David Woodhouse, linux-mtd@lists.infradead.org, LKML, Wenlin Kang
On Thu, May 21, 2015 at 10:54:31AM -0700, Brian Norris wrote:
> In commit 50183936254b ("mtd: blktrans: change blktrans_getgeo return
> value") we fixed the problem that ioctl(HDIO_GETGEO) might return 0
> (success) for mtdblock devices which did not implement the feature and
> would leave a blank (zero) result.
>
> But now, let's get the error code right. Other code paths on this ioctl
> tend to use -ENOTTY to notify the user that the ioctl() is not supported
> for the device, so let's use that instead of -EOPNOTSUPP.
>
> Suggested-by: Richard Weinberger <richard@nod.at>
> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
> ---
> Against l2-mtd.git (linux-next)
Applied.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2015-05-27 19:15 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-13 6:29 [PATCH] mtd: blktrans: change blktrans_getgeo rerurn value Wenlin Kang
2015-05-20 19:33 ` Brian Norris
2015-05-20 19:47 ` nick
2015-05-21 6:49 ` Wenlin Kang
2015-05-21 7:37 ` Brian Norris
2015-05-21 8:01 ` Wenlin Kang
2015-05-21 7:56 ` Richard Weinberger
2015-05-21 8:05 ` Brian Norris
2015-05-21 8:22 ` Wenlin Kang
2015-05-21 10:17 ` Richard Weinberger
2015-05-21 17:54 ` [PATCH] mtd: blktrans: use better error code for unimplemented ioctl() Brian Norris
2015-05-27 19:15 ` Brian Norris
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox