-----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