On Mon, Apr 16 2001, Jan Kasprzak wrote:
> Jens Axboe wrote:
> : On Mon, Apr 16 2001, Jan Kasprzak wrote:
> : > Hello,
> : >
> : > I run a relatively large FTP server, and I've just reached
> : > the max_loop limit of loop devices here (I use loopback mount of ISO 9660
> : > images of Linux distros here). Is there any reason for keeping
> : > the max_loop variable in loop.c set to 8?
> :
> : Memory requirements -- nothing prevents you from loading it with a
> : bigger max count though...
> :
> I would suggest to make the limit configurable by /proc or
> ioctl() in run-time. Or even better, to make all allocations on
> first /dev/loopN open. Should I try to implement something like that?
Overkill, imo. If you use a module setup, add a max_loop to your
/etc/modules.conf. If not, add the identical max_loop to your lilo.conf
append line.
Ok, just noticed that the module option is missing. Attached patch
should rectify that oversight.
--
Jens Axboe
--- /opt/kernel/linux-2.4.4-pre3/drivers/block/loop.c Sun Apr 15 16:24:12 2001
+++ drivers/block/loop.c Mon Apr 16 20:43:39 2001
@@ -476,7 +476,7 @@
*/
bh = loop_get_buffer(lo, rbh);
bh->b_private = rbh;
- IV = loop_get_iv(lo, bh->b_rsector);
+ IV = loop_get_iv(lo, rbh->b_rsector);
if (rw == WRITE) {
set_bit(BH_Dirty, &bh->b_state);
if (lo_do_transfer(lo, WRITE, bh->b_data, rbh->b_data,
@@ -620,7 +620,6 @@
* If we can't read - sorry. If we only can't write - well,
* it's going to be read-only.
*/
- error = -EINVAL;
if (!aops->readpage)
goto out_putf;
@@ -1034,6 +1033,8 @@
module_init(loop_init);
module_exit(loop_exit);
+
+MODULE_PARM(max_loop, "i");
#ifndef MODULE
static int __init max_loop_setup(char *str)