2015-08-03 22:18:37

by Marek Vasut

[permalink] [raw]
Subject: Re: [PATCH v2 1/6] mtd: spi-nor: change return value of read/write

On Monday, August 03, 2015 at 08:39:01 PM, Michal Suchanek wrote:
> Change the return value of spi-nor device read and write methods to
> allow returning amount of data transferred and errors as
> read(2)/write(2) does.
>
> Signed-off-by: Michal Suchanek <[email protected]>
> ---
> include/linux/mtd/spi-nor.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
> index e540952..7d782cb 100644
> --- a/include/linux/mtd/spi-nor.h
> +++ b/include/linux/mtd/spi-nor.h
> @@ -185,9 +185,9 @@ struct spi_nor {
> int (*write_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int len,
> int write_enable);
>
> - int (*read)(struct spi_nor *nor, loff_t from,
> + ssize_t (*read)(struct spi_nor *nor, loff_t from,
> size_t len, size_t *retlen, u_char *read_buf);
> - void (*write)(struct spi_nor *nor, loff_t to,
> + ssize_t (*write)(struct spi_nor *nor, loff_t to,
> size_t len, size_t *retlen, const u_char *write_buf);
> int (*erase)(struct spi_nor *nor, loff_t offs);

You realize that if someone does bisect and has only this patch applied,
the compiler will complain loudly about mismatching data types, right ? :)

Best regards,
Marek Vasut


2015-08-04 06:43:33

by Michal Suchanek

[permalink] [raw]
Subject: Re: [PATCH v2 1/6] mtd: spi-nor: change return value of read/write

On 3 August 2015 at 23:46, Marek Vasut <[email protected]> wrote:
> On Monday, August 03, 2015 at 08:39:01 PM, Michal Suchanek wrote:
>> Change the return value of spi-nor device read and write methods to
>> allow returning amount of data transferred and errors as
>> read(2)/write(2) does.
>>
>> Signed-off-by: Michal Suchanek <[email protected]>
>> ---
>> include/linux/mtd/spi-nor.h | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
>> index e540952..7d782cb 100644
>> --- a/include/linux/mtd/spi-nor.h
>> +++ b/include/linux/mtd/spi-nor.h
>> @@ -185,9 +185,9 @@ struct spi_nor {
>> int (*write_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int len,
>> int write_enable);
>>
>> - int (*read)(struct spi_nor *nor, loff_t from,
>> + ssize_t (*read)(struct spi_nor *nor, loff_t from,
>> size_t len, size_t *retlen, u_char *read_buf);
>> - void (*write)(struct spi_nor *nor, loff_t to,
>> + ssize_t (*write)(struct spi_nor *nor, loff_t to,
>> size_t len, size_t *retlen, const u_char *write_buf);
>> int (*erase)(struct spi_nor *nor, loff_t offs);
>
> You realize that if someone does bisect and has only this patch applied,
> the compiler will complain loudly about mismatching data types, right ? :)

Yes, the compiler prints a warning. However, only the return value
which is not used changes so it should not cause any real problem. The
data type in the fsl-quadspi and m25p80 drivers is matched in the
following two patches.

Thanks

Michal

2015-08-04 16:42:11

by Marek Vasut

[permalink] [raw]
Subject: Re: [PATCH v2 1/6] mtd: spi-nor: change return value of read/write

On Tuesday, August 04, 2015 at 08:42:51 AM, Michal Suchanek wrote:
> On 3 August 2015 at 23:46, Marek Vasut <[email protected]> wrote:
> > On Monday, August 03, 2015 at 08:39:01 PM, Michal Suchanek wrote:
> >> Change the return value of spi-nor device read and write methods to
> >> allow returning amount of data transferred and errors as
> >> read(2)/write(2) does.
> >>
> >> Signed-off-by: Michal Suchanek <[email protected]>
> >> ---
> >>
> >> include/linux/mtd/spi-nor.h | 4 ++--
> >> 1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
> >> index e540952..7d782cb 100644
> >> --- a/include/linux/mtd/spi-nor.h
> >> +++ b/include/linux/mtd/spi-nor.h
> >> @@ -185,9 +185,9 @@ struct spi_nor {
> >>
> >> int (*write_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int len,
> >>
> >> int write_enable);
> >>
> >> - int (*read)(struct spi_nor *nor, loff_t from,
> >> + ssize_t (*read)(struct spi_nor *nor, loff_t from,
> >>
> >> size_t len, size_t *retlen, u_char *read_buf);
> >>
> >> - void (*write)(struct spi_nor *nor, loff_t to,
> >> + ssize_t (*write)(struct spi_nor *nor, loff_t to,
> >>
> >> size_t len, size_t *retlen, const u_char
> >> *write_buf);
> >>
> >> int (*erase)(struct spi_nor *nor, loff_t offs);
> >
> > You realize that if someone does bisect and has only this patch applied,
> > the compiler will complain loudly about mismatching data types, right ?
> > :)
>
> Yes, the compiler prints a warning. However, only the return value
> which is not used changes so it should not cause any real problem.

Are you certain that ssize_t is equal to int , always , everywhere ? :-)
Note that it is possible to do such conversion even without introducing
compiler warnings along the way -- just do the data type conversion first
and the other changes in subsequent patches. It will be clear that one
patch does one thing then.

> The
> data type in the fsl-quadspi and m25p80 drivers is matched in the
> following two patches.
>
> Thanks
>
> Michal

Best regards,
Marek Vasut

2015-08-05 08:27:52

by Michal Suchanek

[permalink] [raw]
Subject: Re: [PATCH v2 1/6] mtd: spi-nor: change return value of read/write

On 4 August 2015 at 18:42, Marek Vasut <[email protected]> wrote:
> On Tuesday, August 04, 2015 at 08:42:51 AM, Michal Suchanek wrote:
>> On 3 August 2015 at 23:46, Marek Vasut <[email protected]> wrote:
>> > On Monday, August 03, 2015 at 08:39:01 PM, Michal Suchanek wrote:
>> >> Change the return value of spi-nor device read and write methods to
>> >> allow returning amount of data transferred and errors as
>> >> read(2)/write(2) does.
>> >>
>> >> Signed-off-by: Michal Suchanek <[email protected]>
>> >> ---
>> >>
>> >> include/linux/mtd/spi-nor.h | 4 ++--
>> >> 1 file changed, 2 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
>> >> index e540952..7d782cb 100644
>> >> --- a/include/linux/mtd/spi-nor.h
>> >> +++ b/include/linux/mtd/spi-nor.h
>> >> @@ -185,9 +185,9 @@ struct spi_nor {
>> >>
>> >> int (*write_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int len,
>> >>
>> >> int write_enable);
>> >>
>> >> - int (*read)(struct spi_nor *nor, loff_t from,
>> >> + ssize_t (*read)(struct spi_nor *nor, loff_t from,
>> >>
>> >> size_t len, size_t *retlen, u_char *read_buf);
>> >>
>> >> - void (*write)(struct spi_nor *nor, loff_t to,
>> >> + ssize_t (*write)(struct spi_nor *nor, loff_t to,
>> >>
>> >> size_t len, size_t *retlen, const u_char
>> >> *write_buf);
>> >>
>> >> int (*erase)(struct spi_nor *nor, loff_t offs);
>> >
>> > You realize that if someone does bisect and has only this patch applied,
>> > the compiler will complain loudly about mismatching data types, right ?
>> > :)
>>
>> Yes, the compiler prints a warning. However, only the return value
>> which is not used changes so it should not cause any real problem.
>
> Are you certain that ssize_t is equal to int , always , everywhere ? :-)

No, it's larger or equal.

> Note that it is possible to do such conversion even without introducing
> compiler warnings along the way -- just do the data type conversion first
> and the other changes in subsequent patches. It will be clear that one
> patch does one thing then.

If this is the only concern with these patches it is easily amended ;-)

Thanks

Michal

2015-08-05 09:11:27

by Marek Vasut

[permalink] [raw]
Subject: Re: [PATCH v2 1/6] mtd: spi-nor: change return value of read/write

On Wednesday, August 05, 2015 at 10:27:05 AM, Michal Suchanek wrote:
> On 4 August 2015 at 18:42, Marek Vasut <[email protected]> wrote:
> > On Tuesday, August 04, 2015 at 08:42:51 AM, Michal Suchanek wrote:
> >> On 3 August 2015 at 23:46, Marek Vasut <[email protected]> wrote:
> >> > On Monday, August 03, 2015 at 08:39:01 PM, Michal Suchanek wrote:
> >> >> Change the return value of spi-nor device read and write methods to
> >> >> allow returning amount of data transferred and errors as
> >> >> read(2)/write(2) does.
> >> >>
> >> >> Signed-off-by: Michal Suchanek <[email protected]>
> >> >> ---
> >> >>
> >> >> include/linux/mtd/spi-nor.h | 4 ++--
> >> >> 1 file changed, 2 insertions(+), 2 deletions(-)
> >> >>
> >> >> diff --git a/include/linux/mtd/spi-nor.h
> >> >> b/include/linux/mtd/spi-nor.h index e540952..7d782cb 100644
> >> >> --- a/include/linux/mtd/spi-nor.h
> >> >> +++ b/include/linux/mtd/spi-nor.h
> >> >> @@ -185,9 +185,9 @@ struct spi_nor {
> >> >>
> >> >> int (*write_reg)(struct spi_nor *nor, u8 opcode, u8 *buf, int
> >> >> len,
> >> >>
> >> >> int write_enable);
> >> >>
> >> >> - int (*read)(struct spi_nor *nor, loff_t from,
> >> >> + ssize_t (*read)(struct spi_nor *nor, loff_t from,
> >> >>
> >> >> size_t len, size_t *retlen, u_char *read_buf);
> >> >>
> >> >> - void (*write)(struct spi_nor *nor, loff_t to,
> >> >> + ssize_t (*write)(struct spi_nor *nor, loff_t to,
> >> >>
> >> >> size_t len, size_t *retlen, const u_char
> >> >> *write_buf);
> >> >>
> >> >> int (*erase)(struct spi_nor *nor, loff_t offs);
> >> >
> >> > You realize that if someone does bisect and has only this patch
> >> > applied, the compiler will complain loudly about mismatching data
> >> > types, right ?
> >> >
> >> > :)
> >>
> >> Yes, the compiler prints a warning. However, only the return value
> >> which is not used changes so it should not cause any real problem.
> >
> > Are you certain that ssize_t is equal to int , always , everywhere ? :-)
>
> No, it's larger or equal.

Not per any standard to my knowledge, but yeah. I don't think it's a good
idea to do this change alone.

> > Note that it is possible to do such conversion even without introducing
> > compiler warnings along the way -- just do the data type conversion first
> > and the other changes in subsequent patches. It will be clear that one
> > patch does one thing then.
>
> If this is the only concern with these patches it is easily amended ;-)

It'd be nice if the others reviewed it as well, additional feedback would be
nice.

Best regards,
Marek Vasut