-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I've attached a patch, it will not work, because needs an enhacement
in ngc...

The problem is that ngc doesn't wait for a service to start, so,
system/mountfs/home may be up before /home gets mounted, for example.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)

iD8DBQFFz+5N/mxY0+yOXJoRAtcJAJ0Zooo7O+U7ZeQe6Ahwm3ugmte6BQCg2O2V
s556/T4eCxZK2fUGynAnvTM=
=PJxd
-----END PGP SIGNATURE-----
Index: initfiles/system/mountfs.ii
===================================================================
--- initfiles/system/mountfs.ii (revisión: 4792)
+++ initfiles/system/mountfs.ii (copia de trabajo)
@@ -2,20 +2,67 @@
 # DESCRIPTION:
 # WWW:
 
+# TODO:        We still need a way to wait for the system/mountfs/*mount/* to
+#      complete...
+#
+#      Now system/mountfs/essential and system/mountfs/home may return before
+#      the filesystem is mounted...
+#
+#      We need to improve ngc a bit ;)
+#
+
+service system/mountfs/mount/* {
+       need = system/initial/mountvirtfs system/mountfs/essential;
+       use = system/sraid system/hdparm system/selinux/relabel;
+       critical;
+       never_kill;
+
+       exec start = @mount@ "/${NAME}";
+       exec stop = {
+               if [ "${NAME}" = "usr" ]
+               then
+                       @umount@ -r -d "/${NAME}"
+               else
+                       @mount@ -o remount,ro /usr
+               fi
+       };
+}
+
+service system/mountfs/netmount/* {
+       need = system/initial/mountvirtfs system/mountfs/essential virtual/net;
+       use = system/selinux/relabel daemon/portmap;
+       critical;
+       never_kill;
+
+       exec start = @mount@ "/${NAME}";
+       exec stop = {
+               [ "${NAME}" = "usr" ] ||
+                       @umount@ -f "/${NAME}"
+       };
+}
+
+
 service system/mountfs/essential {
        need = system/initial/mountvirtfs system/mountroot system/checkfs;
-       use = system/sraid system/hdparm system/selinux/relabel;
        critical;
        never_kill;
+       env NET_FS = afs|cifs|coda|davfs|gfs|ncpfs|nfs|nfs4|ocfs2|shfs|smbfs;
+       env MPS = /tmp|/usr|/var|/srv|/opt;
 
        script start = {
                [ -e /var/initng_isvirt ] && exit 0
 
-               for mp in /tmp /usr /var /srv /opt
+               while read drop mp fs drop
                do
-                       @grep@ -q "[[:space:]]${mp}[[:space:]]" /etc/fstab &&
-                       @mount@ -v "${mp}" &
-               done
+                       if echo ${mp} | @egrep@ -q "(${MPS})"
+                       then
+                               mp="mount${mp}"
+                               echo ${fs} | @egrep@ -q "(${NET_FS})" &&
+                                       mp="net${mp}"
+
+                               @ngc@ --quiet "system/mountfs/${mp}" &
+                       fi
+               done < /etc/fstab
                wait
                exit 0
        };
@@ -50,17 +97,25 @@
 service system/mountfs/home {
        need = system/mountroot system/checkfs;
        never_kill;
+       env NET_FS = afs|cifs|coda|davfs|gfs|ncpfs|nfs|nfs4|ocfs2|shfs|smbfs;
 
        script start = {
-               [ -e /var/initng_isvirt ] ||
-               @grep@ -q "[[:space:]]/home[[:space:]]" /etc/fstab &&
-                       @mount@ -v /home
+               [ -e /var/initng_isvirt ] && exit 0
+
+               @grep@ -q "[[:space:]]/home[[:space:]]" /etc/fstab |
+               read drop drop fs drop || exit 0
+
+               mt=
+               if echo "${fs}" | @egrep@ -q "(${NET_FS})" &&
+                       mt="net"
+
+               @ngc@ --quiet "system/mountfs/${mt}mount/home"
                exit 0
        };
 }
 
 service system/mountfs/network {
-       need = system/initial system/mountfs/essential virtual/net;
+       need = system/initial system/mountfs/essential system/mountfs/home 
virtual/net;
        use = daemon/portmap;
        never_kill;
        env NET_FS = afs,cifs,coda,davfs,gfs,ncpfs,nfs,nfs4,ocfs2,shfs,smbfs;
@@ -81,10 +136,11 @@
        need = system/mountfs/essential system/mountfs/home;
        use = system/mountfs/network;
        never_kill;
+       env FS = 
reiserfs,reiser4,reiserfs,reiser4,ext2,ext3,xfs,jfs,vfat,ntfs,ntfs-3g,tmpfs,subfs,bind,auto;
 
        script start = {
                [ -e /var/initng_isvirt ] ||
-               @mount@ -a -v -t 
reiserfs,reiser4,reiserfs,reiser4,ext2,ext3,xfs,jfs,vfat,ntfs,ntfs-3g,tmpfs,subfs,bind,auto
+                       @mount@ -a -v -t ${FS}
                exit 0
        };
 }
-- 
_______________________________________________
Initng mailing list
[email protected]
http://jw.dyndns.org/mailman/listinfo/initng

Reply via email to