Adding initial support for unionmount.
authorMichal Suchanek <hramrach@centrum.cz>
Wed, 29 Sep 2010 08:37:15 +0000 (10:37 +0200)
committerDaniel Baumann <daniel@debian.org>
Wed, 29 Sep 2010 08:37:15 +0000 (10:37 +0200)
hooks/live
scripts/live

index 3174d17..b5d43f2 100755 (executable)
@@ -251,3 +251,10 @@ then
        #mkdir -p $DESTDIR/etc
        #cp -p /etc/nsswitch.conf $DESTDIR/etc
 fi
+
+if [ "${LIVE_UNIONMOUNT}" = "true" ]
+then
+       # UnionMount
+       # only mount from patched util-linux can do this currently
+       copy_exec /bin/mount /bin/mount_full
+fi
index f257218..4b1b92d 100755 (executable)
@@ -1206,9 +1206,16 @@ setup_unionfs ()
                                        log_warning_msg "Unknown file system type on ${backdev} (${image}), assuming ${fstype}."
                                fi
 
-                               mkdir -p "${croot}/${imagename}"
-                               log_begin_msg "Mounting \"${image}\" on \"${croot}${imagename}\" via \"${backdev}\""
-                               mount -t "${fstype}" -o ro,noatime "${backdev}" "${croot}/${imagename}" || panic "Can not mount ${backdev} (${image}) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}"
+                               if [ "${UNIONTYPE}" != "unionmount" ]
+                               then
+                                       mpoint="${croot}/${imagename}"
+                                       rofsstring="${mpoint}=${roopt}:${rofsstring}" && rofslist="${mpoint} ${rofslist}"
+                               else
+                                       mpoint="${rootmnt}"
+                               fi
+                               mkdir -p "${mpoint}"
+                               log_begin_msg "Mounting \"${image}\" on \"${mpoint}\" via \"${backdev}\""
+                               mount -t "${fstype}" -o ro,noatime "${backdev}" "${mpoint}" || panic "Can not mount ${backdev} (${image}) on ${mpoint}"
                                log_end_msg
                        fi
                done
@@ -1322,6 +1329,9 @@ setup_unionfs ()
                cow_mountopt="rw,noatime,mode=755"
        fi
 
+       if [ "${UNIONTYPE}" != "unionmount" ]
+       then
+
        if [ "${cow_fstype}" = "nfs" ]
        then
                log_begin_msg \
@@ -1332,6 +1342,7 @@ setup_unionfs ()
                mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} /cow || \
                        panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on /cow"
        fi
+       fi
 
        rofscount=$(echo ${rofslist} |wc -w)
 
@@ -1376,6 +1387,10 @@ setup_unionfs ()
                                pidof unionfs-fuse >> /dev/.initramfs/varrun/sendsigs.omit || true
                                ;;
 
+                       unionmount)
+                               mount_full -t ${cow_fstype} -o noatime,union,${cow_mountopt} ${cowdevice} "${rootmnt}" || panic "${UNIONTYPE} ${cowdevice} on ${rootmnt} failed with option noatime,union,${cow_mountopt}"
+                               ;;
+
                        *)
                                mount -t ${UNIONTYPE} -o noatime,${noxino_opt}dirs=/cow=rw:${rofsstring} ${UNIONTYPE} "${rootmnt}" || panic "mount ${UNIONTYPE} on ${rootmnt} failed with option noatime,${noxino_opt}dirs=/cow=rw:${rofsstring}"
                                ;;