diff options
author | Ken Chen <kenchen@google.com> | 2007-05-08 00:28:20 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-08 11:15:07 -0700 |
commit | 73285082745045bcd64333c1fbaa88f8490f2626 (patch) | |
tree | bb45362b563332ff1e712b5f2b3b16a47b019691 /include/linux/loop.h | |
parent | 4f911d64e04a44c47985be30f978fb3c2efcee0c (diff) | |
download | op-kernel-dev-73285082745045bcd64333c1fbaa88f8490f2626.zip op-kernel-dev-73285082745045bcd64333c1fbaa88f8490f2626.tar.gz |
remove artificial software max_loop limit
Remove artificial maximum 256 loop device that can be created due to a
legacy device number limit. Searching through lkml archive, there are
several instances where users complained about the artificial limit that
the loop driver impose. There is no reason to have such limit.
This patch rid the limit entirely and make loop device and associated block
queue instantiation on demand. With on-demand instantiation, it also gives
the benefit of not wasting memory if these devices are not in use (compare
to current implementation that always create 8 loop devices), a net
improvement in both areas. This version is both tested with creation of
large number of loop devices and is compatible with existing losetup/mount
user land tools.
There are a number of people who worked on this and provided valuable
suggestions, in no particular order, by:
Jens Axboe
Jan Engelhardt
Christoph Hellwig
Thomas M
Signed-off-by: Ken Chen <kenchen@google.com>
Cc: Jan Engelhardt <jengelh@linux01.gwdg.de>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/loop.h')
-rw-r--r-- | include/linux/loop.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/loop.h b/include/linux/loop.h index 191a595..0b99b31 100644 --- a/include/linux/loop.h +++ b/include/linux/loop.h @@ -64,6 +64,8 @@ struct loop_device { wait_queue_head_t lo_event; request_queue_t *lo_queue; + struct gendisk *lo_disk; + struct list_head lo_list; }; #endif /* __KERNEL__ */ |