svn commit: trunk/busybox/util-linux

vda at busybox.net vda at busybox.net
Sun Feb 3 23:52:45 UTC 2008


Author: vda
Date: 2008-02-03 15:52:41 -0800 (Sun, 03 Feb 2008)
New Revision: 20939

Log:
mkswap: do not do extra seek
mount: add another mount helper call method



Modified:
   trunk/busybox/util-linux/Config.in
   trunk/busybox/util-linux/mkswap.c
   trunk/busybox/util-linux/mount.c


Changeset:
Modified: trunk/busybox/util-linux/Config.in
===================================================================
--- trunk/busybox/util-linux/Config.in	2008-02-03 22:04:19 UTC (rev 20938)
+++ trunk/busybox/util-linux/Config.in	2008-02-03 23:52:41 UTC (rev 20939)
@@ -392,9 +392,11 @@
 	depends on MOUNT
 	help
 	  Enable mounting of virtual file systems via external helpers.
-	  E.g. mount obexfs#-b00.11.22.33.44.55 /mnt will in effect call
-	  obexfs -b00.11.22.33.44.55 /mnt
-	  The idea is to use such virtual filesystems in /etc/fstab
+	  E.g. "mount obexfs#-b00.11.22.33.44.55 /mnt" will in effect call
+	  "obexfs -b00.11.22.33.44.55 /mnt"
+	  Also "mount -t sometype [-o opts] fs /mnt" will try
+	  "sometype [-o opts] fs /mnt" if simple mount syscall fails.
+	  The idea is to use such virtual filesystems in /etc/fstab.
 
 config FEATURE_MOUNT_NFS
 	bool "Support mounting NFS file systems"

Modified: trunk/busybox/util-linux/mkswap.c
===================================================================
--- trunk/busybox/util-linux/mkswap.c	2008-02-03 22:04:19 UTC (rev 20938)
+++ trunk/busybox/util-linux/mkswap.c	2008-02-03 23:52:41 UTC (rev 20939)
@@ -66,7 +66,9 @@
 	fd = xopen(argv[1], O_RDWR);
 	/* fdlength was reported to be unreliable - use seek */
 	len = xlseek(fd, 0, SEEK_END);
+#if ENABLE_SELINUX
 	xlseek(fd, 0, SEEK_SET);
+#endif
 	pagesize = getpagesize();
 	printf("Setting up swapspace version 1, size = %"OFF_FMT"u bytes\n",
 			len - pagesize);

Modified: trunk/busybox/util-linux/mount.c
===================================================================
--- trunk/busybox/util-linux/mount.c	2008-02-03 22:04:19 UTC (rev 20938)
+++ trunk/busybox/util-linux/mount.c	2008-02-03 23:52:41 UTC (rev 20939)
@@ -309,6 +309,27 @@
 	for (;;) {
 		rc = mount(mp->mnt_fsname, mp->mnt_dir, mp->mnt_type,
 				vfsflags, filteropts);
+
+		// If mount failed, try
+		// helper program <mnt_type>
+		if (ENABLE_FEATURE_MOUNT_HELPERS && rc) {
+			char *args[6];
+			int errno_save = errno;
+			args[0] = mp->mnt_type;
+			rc = 1;
+			if (filteropts) {
+				args[rc++] = (char *)"-o";
+				args[rc++] = filteropts;
+			}
+			args[rc++] = mp->mnt_fsname;
+			args[rc++] = mp->mnt_dir;
+			args[rc] = NULL;
+			rc = wait4pid(spawn(args));
+			if (!rc)
+				break;
+			errno = errno_save;
+		}
+
 		if (!rc || (vfsflags & MS_RDONLY) || (errno != EACCES && errno != EROFS))
 			break;
 		if (!(vfsflags & MS_SILENT))




More information about the busybox-cvs mailing list