Fremantle versions pushed to Extras
[easy-deb-chroot] / fremantle / easy-chroot / src / sbin / qmount
index 9a92802..f44d3db 100755 (executable)
@@ -88,13 +88,6 @@ if [ ! -f "$MNTPT/var/lock/qmount-complete" ] ; then
      fi
    fi
 
-   #if [ -d "/mnt/initfs/lib/modules/`uname -r`" ] ; then
-   #  MODULEPATH="/mnt/initfs/lib/modules/`uname -r`"
-   #else
-   #  MODULEPATH=/mnt/initfs/lib/modules/2.6.21-omap1
-   #fi
-   #insmod "$MODULEPATH/mbcache.ko" 2>/dev/null
-
    # missing in Fremantle...
    # modprobe mbcache
 
@@ -112,20 +105,50 @@ if [ ! -f "$MNTPT/var/lock/qmount-complete" ] ; then
    #insmod "$MODULEPATH/$IMGFS.ko" 2>/dev/null
    modprobe $IMGFS
 
+   if [ -d "/lib/modules/`uname -r`" ] ; then
+     MODULEPATH="/lib/modules/`uname -r`"
+   else
+     MODULEPATH=/lib/modules/2.6.28-omap1
+   fi
+
    if [ "$LOOP" = "loop," ] ; then
-    #echo "mounting $IMGFILE on the turbo-loop ;)"
-    echo "mounting $IMGFILE on loop" >/dev/stderr
-     #insmod /lib/modules/2.6.21-omap1/dm-mod.ko 2>/dev/null
-     #insmod /lib/modules/2.6.21-omap1/dm-loop.ko 2>/dev/null
-     #NEXTLOOP=`ls -l /dev/dm-* 2>/dev/null | tail -1 | awk '{print $NF}' | awk -F '-' '{print $NF+1}'`
-     NEXTLOOP=""
-     if [ "x$NEXTLOOP" = "x"  ] ; then
-       NEXTLOOP=0
+
+   # Check for dm-loop kernel module and dmlosetup command. 
+   # If found, then use dm-loop instead of regular loop.
+
+     if [ -f "$MODULEPATH/dm-loop.ko" ] && [ -f "/sbin/dmlosetup" ]; then
+
+       # use dm-loop
+
+       echo "mounting $IMGFILE on the turbo-loop ;)"
+       #insmod $MODULEPATH/dm-mod.ko 2>/dev/null
+       modprobe dm-mod
+       #insmod $MODULEPATH/dm-loop.ko 2>/dev/null
+       modprobe dm-loop
+
+       NEXTLOOP=`ls -l /dev/dm-* 2>/dev/null | tail -1 | awk '{print $NF}' | awk -F '-' '{print $NF+1}'`
+       if [ "x$NEXTLOOP" = "x"  ] ; then
+         NEXTLOOP=0
+       fi
+
+       DMLOMSG=`dmlosetup loop$NEXTLOOP "$IMGFILE" 2>&1`
+       MNTMSG=`mount -t "$IMGFS" /dev/dm-$NEXTLOOP "$MNTPT" -o noatime,nobh,nodiratime 2>&1` 
+
+     else
+
+       # use "regular" loop
+
+       echo "mounting $IMGFILE on loop" >/dev/stderr
+       NEXTLOOP=""
+       if [ "x$NEXTLOOP" = "x"  ] ; then
+         NEXTLOOP=0
+       fi
+
+       DMLOMSG=""
+       MNTMSG=`mount -t "$IMGFS" "$IMGFILE" "$MNTPT" -o loop,noatime,nobh,nodiratime 2>&1` 
+
      fi
-     #DMLOMSG=`dmlosetup loop$NEXTLOOP "$IMGFILE" 2>&1`
-     DMLOMSG=""
-     #MNTMSG=`mount -t "$IMGFS" /dev/dm-$NEXTLOOP "$MNTPT" -o noatime 2>&1` 
-     MNTMSG=`mount -t "$IMGFS" "$IMGFILE" "$MNTPT" -o loop,noatime 2>&1` 
+
      if [ "$?" != 0 ] ; then
        MSG1=`printf "Mount failure!\n\n$IMGFILE failed to mount on loop$NEXTLOOP\n\n$DMLOMSG\n$MNTMSG"`
        if [ ! -f "/usr/bin/gxmessage" ] ; then
@@ -138,7 +161,7 @@ if [ ! -f "$MNTPT/var/lock/qmount-complete" ] ; then
      echo ...$IMGFILE mounted on loop$NEXTLOOP >/dev/stderr
    else
      echo "mounting device: $IMGFILE" >/dev/stderr
-     if ! mount -t "$IMGFS" "$IMGFILE" "$MNTPT" -o ${LOOP}noatime ; then
+     if ! mount -t "$IMGFS" "$IMGFILE" "$MNTPT" -o ${LOOP}noatime,nobh,nodiratime ; then
        MSG1=`printf "Mount failure!\n\n$IMGFILE failed to mount on $MNTPT"`
        if [ ! -f "/usr/bin/gxmessage" ] ; then
          echo $MSG1 >/dev/stderr