2019-08-06 22:07:23

by Alessio Balsini

[permalink] [raw]
Subject: [PATCH] loop: Add LOOP_SET_DIRECT_IO in compat ioctl

Export LOOP_SET_DIRECT_IO as additional lo_compat_ioctl.
The input argument for this ioctl is a single long, in the end converted
to a 1-bit boolean. Compatibility is then preserved.

Cc: Jens Axboe <[email protected]>
Signed-off-by: Alessio Balsini <[email protected]>
---
drivers/block/loop.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 3036883fc9f8..a7461f482467 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -1755,6 +1755,7 @@ static int lo_compat_ioctl(struct block_device *bdev, fmode_t mode,
case LOOP_SET_FD:
case LOOP_CHANGE_FD:
case LOOP_SET_BLOCK_SIZE:
+ case LOOP_SET_DIRECT_IO:
err = lo_ioctl(bdev, mode, cmd, arg);
break;
default:
--
2.22.0.770.g0f2c4a37fd-goog


2019-08-06 22:27:04

by Joel Fernandes

[permalink] [raw]
Subject: Re: [PATCH] loop: Add LOOP_SET_DIRECT_IO in compat ioctl

Hi Alessio,

On Tue, Aug 6, 2019 at 6:05 PM Alessio Balsini <[email protected]> wrote:
>
> Export LOOP_SET_DIRECT_IO as additional lo_compat_ioctl.
> The input argument for this ioctl is a single long, in the end converted
> to a 1-bit boolean. Compatibility is then preserved.
>
> Cc: Jens Axboe <[email protected]>
> Signed-off-by: Alessio Balsini <[email protected]>

This looks Ok to me, but I believe the commit message should also
explain what was this patch "fixing", how was this lack of an "export"
noticed, why does it matter, etc as well.

thanks,

- Joel


> ---
> drivers/block/loop.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/block/loop.c b/drivers/block/loop.c
> index 3036883fc9f8..a7461f482467 100644
> --- a/drivers/block/loop.c
> +++ b/drivers/block/loop.c
> @@ -1755,6 +1755,7 @@ static int lo_compat_ioctl(struct block_device *bdev, fmode_t mode,
> case LOOP_SET_FD:
> case LOOP_CHANGE_FD:
> case LOOP_SET_BLOCK_SIZE:
> + case LOOP_SET_DIRECT_IO:
> err = lo_ioctl(bdev, mode, cmd, arg);
> break;
> default:
> --
> 2.22.0.770.g0f2c4a37fd-goog
>
> --
> To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
>

2019-08-06 23:58:04

by Alessio Balsini

[permalink] [raw]
Subject: Re: [PATCH] loop: Add LOOP_SET_DIRECT_IO in compat ioctl

Hi Joel,

I was considering the rationale for this patch totally strightforward:
it enables Direct I/O ioctl to 32 bit processes running on 64 bit
systems for compatibility reasons, as for all the other lo_compat_ioctl
commands.
Also the reason why someone would decide to use Direct I/O with loop
devices is well known, that is why the feature exists :) So I thought
this was another redundant information to put in the commit message and
decided to omit it.

If you still think that I should update the commit message with this
information, I will do so.

Thanks again,
Alessio

On Tue, Aug 06, 2019 at 06:25:42PM -0400, 'Joel Fernandes' via kernel-team wrote:
> Hi Alessio,
>
> On Tue, Aug 6, 2019 at 6:05 PM Alessio Balsini <[email protected]> wrote:
> >
> > Export LOOP_SET_DIRECT_IO as additional lo_compat_ioctl.
> > The input argument for this ioctl is a single long, in the end converted
> > to a 1-bit boolean. Compatibility is then preserved.
> >
> > Cc: Jens Axboe <[email protected]>
> > Signed-off-by: Alessio Balsini <[email protected]>
>
> This looks Ok to me, but I believe the commit message should also
> explain what was this patch "fixing", how was this lack of an "export"
> noticed, why does it matter, etc as well.
>
> thanks,
>
> - Joel
>
>
> > ---
> > drivers/block/loop.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/block/loop.c b/drivers/block/loop.c
> > index 3036883fc9f8..a7461f482467 100644
> > --- a/drivers/block/loop.c
> > +++ b/drivers/block/loop.c
> > @@ -1755,6 +1755,7 @@ static int lo_compat_ioctl(struct block_device *bdev, fmode_t mode,
> > case LOOP_SET_FD:
> > case LOOP_CHANGE_FD:
> > case LOOP_SET_BLOCK_SIZE:
> > + case LOOP_SET_DIRECT_IO:
> > err = lo_ioctl(bdev, mode, cmd, arg);
> > break;
> > default:
> > --
> > 2.22.0.770.g0f2c4a37fd-goog
> >
> > --
> > To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
> >
>
> --
> To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
>

2019-08-07 00:11:38

by Joel Fernandes

[permalink] [raw]
Subject: Re: [PATCH] loop: Add LOOP_SET_DIRECT_IO in compat ioctl

On Tue, Aug 6, 2019 at 7:57 PM Alessio Balsini <[email protected]> wrote:
>
> Hi Joel,
>
> I was considering the rationale for this patch totally straightforward:
> it enables Direct I/O ioctl to 32 bit processes running on 64 bit
> systems for compatibility reasons, as for all the other lo_compat_ioctl
> commands.
> Also the reason why someone would decide to use Direct I/O with loop
> devices is well known, that is why the feature exists :) So I thought
> this was another redundant information to put in the commit message and
> decided to omit it.

No objections from me if maintainers are Ok with it.

> If you still think that I should update the commit message with this
> information, I will do so.

I think you should.

thanks,

- Joel

2019-08-07 00:51:42

by Alessio Balsini

[permalink] [raw]
Subject: [PATCH v2] loop: Add LOOP_SET_DIRECT_IO to compat ioctl

Enabling Direct I/O with loop devices helps reducing memory usage by
avoiding double caching. 32 bit applications running on 64 bits systems
are currently not able to request direct I/O because is missing from the
lo_compat_ioctl.

This patch fixes the compatibility issue mentioned above by exporting
LOOP_SET_DIRECT_IO as additional lo_compat_ioctl() entry.
The input argument for this ioctl is a single long converted to a 1-bit
boolean, so compatibility is preserved.

Cc: Jens Axboe <[email protected]>
Signed-off-by: Alessio Balsini <[email protected]>
---
drivers/block/loop.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 44c9985f352ab..2e2193f754ab0 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -1753,6 +1753,7 @@ static int lo_compat_ioctl(struct block_device *bdev, fmode_t mode,
case LOOP_SET_FD:
case LOOP_CHANGE_FD:
case LOOP_SET_BLOCK_SIZE:
+ case LOOP_SET_DIRECT_IO:
err = lo_ioctl(bdev, mode, cmd, arg);
break;
default:
--
2.23.0.rc1.153.gdeed80330f-goog

2019-08-08 23:53:00

by Joel Fernandes

[permalink] [raw]
Subject: Re: [PATCH v2] loop: Add LOOP_SET_DIRECT_IO to compat ioctl

On Wed, Aug 07, 2019 at 01:48:28AM +0100, Alessio Balsini wrote:
> Enabling Direct I/O with loop devices helps reducing memory usage by
> avoiding double caching. 32 bit applications running on 64 bits systems
> are currently not able to request direct I/O because is missing from the
> lo_compat_ioctl.
>
> This patch fixes the compatibility issue mentioned above by exporting
> LOOP_SET_DIRECT_IO as additional lo_compat_ioctl() entry.
> The input argument for this ioctl is a single long converted to a 1-bit
> boolean, so compatibility is preserved.

This commit message looks better now.

thanks,

- Joel


> Cc: Jens Axboe <[email protected]>
> Signed-off-by: Alessio Balsini <[email protected]>
> ---
> drivers/block/loop.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/block/loop.c b/drivers/block/loop.c
> index 44c9985f352ab..2e2193f754ab0 100644
> --- a/drivers/block/loop.c
> +++ b/drivers/block/loop.c
> @@ -1753,6 +1753,7 @@ static int lo_compat_ioctl(struct block_device *bdev, fmode_t mode,
> case LOOP_SET_FD:
> case LOOP_CHANGE_FD:
> case LOOP_SET_BLOCK_SIZE:
> + case LOOP_SET_DIRECT_IO:
> err = lo_ioctl(bdev, mode, cmd, arg);
> break;
> default:
> --
> 2.23.0.rc1.153.gdeed80330f-goog
>

2019-08-09 03:41:13

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH v2] loop: Add LOOP_SET_DIRECT_IO to compat ioctl

On 8/6/19 5:48 PM, Alessio Balsini wrote:
> Enabling Direct I/O with loop devices helps reducing memory usage by
> avoiding double caching. 32 bit applications running on 64 bits systems
> are currently not able to request direct I/O because is missing from the
> lo_compat_ioctl.
>
> This patch fixes the compatibility issue mentioned above by exporting
> LOOP_SET_DIRECT_IO as additional lo_compat_ioctl() entry.
> The input argument for this ioctl is a single long converted to a 1-bit
> boolean, so compatibility is preserved.

Applied, thanks.

--
Jens Axboe