mbox series

[v2,0/2] loop: fix regression from max_loop default value change

Message ID 20230720143033.841001-1-mfo@canonical.com (mailing list archive)
Headers show
Series loop: fix regression from max_loop default value change | expand

Message

Mauricio Faria de Oliveira July 20, 2023, 2:30 p.m. UTC
Apparently, there's an unintended consequence of the improvement for max_loop=0
in commit 85c50197716c ("loop: Fix the max_loop commandline argument treatment
when it is set to 0") which might break programs that handle /dev/loop devices.

The (deprecated) autoloading path fails (ENXIO) if the requested minor number
is greater than or equal to the (new) default (CONFIG_BLK_DEV_LOOP_MIN_COUNT),
when [loop.]max_loop is not specified.  This behavior used to work previously.

Patch 1/2 just notes the loop driver's autoloading path is deprecated/legacy.
Patch 2/2 detects whether or not max_loop is set to restore default behavior
as before the regression (and keeps the improvement done by the commit above).

Tested on v6.5-rc2.

v2:
 - 1/2: simpler change per Christoph's suggestion.
        same test results (specially the last one), as expected.
 - 2/2: added Reviewed-by: Christoph.

Thanks,
Mauricio

Mauricio Faria de Oliveira (2):
  loop: deprecate autoloading callback loop_probe()
  loop: do not enforce max_loop hard limit by (new) default

 drivers/block/loop.c | 40 ++++++++++++++++++++++++++++++++++++++--
 1 file changed, 38 insertions(+), 2 deletions(-)

Comments

Jens Axboe July 21, 2023, 7:21 p.m. UTC | #1
On Thu, 20 Jul 2023 11:30:31 -0300, Mauricio Faria de Oliveira wrote:
> Apparently, there's an unintended consequence of the improvement for max_loop=0
> in commit 85c50197716c ("loop: Fix the max_loop commandline argument treatment
> when it is set to 0") which might break programs that handle /dev/loop devices.
> 
> The (deprecated) autoloading path fails (ENXIO) if the requested minor number
> is greater than or equal to the (new) default (CONFIG_BLK_DEV_LOOP_MIN_COUNT),
> when [loop.]max_loop is not specified.  This behavior used to work previously.
> 
> [...]

Applied, thanks!

[1/2] loop: deprecate autoloading callback loop_probe()
      commit: 23881aec85f3219e8462e87c708815ee2cd82358
[2/2] loop: do not enforce max_loop hard limit by (new) default
      commit: bb5faa99f0ce40756ab7bbbce4f16c01ca5ebd5a

Best regards,