@@ -53,8 +53,8 @@ start() {
5353mkdir -p /.modloop /lib
5454case " $KOPT_modloop " in
5555http://* |https://* |ftp://* )
56- wget -P " $modloop_dldir " " $ KOPT_modloop" \
57- && modloop= $modloop_dldir / $( basename $KOPT_modloop )
56+ modloop= $modloop_dldir / ${ KOPT_modloop##*/ }
57+ [ ! -f " $modloop " ] && wget -P " $modloop_dldir " " $KOPT_modloop "
5858;;
5959* )
6060for dir in $( mountdirs) ; do
@@ -86,12 +86,17 @@ start() {
8686fi
8787
8888# use overlayfs if available and configured
89- if grep -q -w" overlay$" /proc/filesystems&& [-n " $unionfs_size " ]; then
89+ if grep -q -w" overlay$" /proc/filesystems&& [! -z ${unionfs_size+x} ]; then
90+ ewarn" Use of unionfs_size is deprecated use overlay_size instead"
91+ overlay_size=" $unionfs_size "
92+ fi
93+ if grep -q -w" overlay$" /proc/filesystems&& [-n " $overlay_size " ]; then
9094ebegin" OverlayFS detected, mounting modloop rw"
91- mkdir -p /.modunisonfs /lib/modules
92- mount -t tmpfs -o size=" $unionfs_size " tmpfs /.modunisonfs
93- mkdir -p /.modunisonfs/modules /.modunisonfs/work
94- mount -t overlay -o upperdir=/.modunisonfs/modules,lowerdir=/.modloop/modules,workdir=/.modunisonfs/work overlay /lib/modules
95+ [" $overlay_size " != 0 ]&& mount_ops=" -o size=$overlay_size "
96+ mkdir -p /.modoverlayfs /lib/modules
97+ mount -t tmpfs$mount_ops tmpfs /.modoverlayfs
98+ mkdir -p /.modoverlayfs/modules /.modoverlayfs/work
99+ mount -t overlay -o upperdir=/.modoverlayfs/modules,lowerdir=/.modloop/modules,workdir=/.modoverlayfs/work overlay /lib/modules
95100eend$? || return 1
96101else
97102rm -rf /lib/modules&& ln -sf /.modloop/modules /lib/
@@ -110,15 +115,13 @@ start() {
110115}
111116
112117stop () {
113- local rc=0
114- if mountinfo --quiet /.modunisonfs/modules&& mountinfo --quiet /lib/modules; then
115- umount /lib/modules
116- umount /.modunisonfs/modules
117- fi
118- if mountinfo --quiet /.modloop; then
119- ebegin" Unmounting /.modloop"
120- umount -d /.modloop
121- eend$? || return 1
122- fi
118+ local ret=0
119+ local mnt; for mnt in /lib/modules /.modoverlayfs /.modloop; do
120+ if mountinfo --quiet" $mnt " ; then
121+ ebegin" Unmounting$mnt "
122+ umount -d" $mnt " || ret=1
123+ fi
124+ done
125+ eend$ret || return 1
123126}
124127