@@ -53,8 +53,8 @@ start() {
5353 mkdir -p /.modloop /lib
5454 case " $KOPT_modloop " in
5555 http://* |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 * )
6060 for dir in $( mountdirs) ; do
@@ -86,12 +86,17 @@ start() {
8686 fi
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
9094 ebegin " 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
95100 eend $? || return 1
96101 else
97102 rm -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
0 commit comments