From owner-svn-src-projects@FreeBSD.ORG Sat Apr 7 03:20:15 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2AA4F1065673; Sat, 7 Apr 2012 03:20:15 +0000 (UTC) (envelope-from gber@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B84608FC1A; Sat, 7 Apr 2012 03:20:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q373KEXl039401; Sat, 7 Apr 2012 03:20:14 GMT (envelope-from gber@svn.freebsd.org) Received: (from gber@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q373KEGK039393; Sat, 7 Apr 2012 03:20:14 GMT (envelope-from gber@svn.freebsd.org) Message-Id: <201204070320.q373KEGK039393@svn.freebsd.org> From: Grzegorz Bernacki Date: Sat, 7 Apr 2012 03:20:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r233969 - in projects/nand/sbin: . fdisk mount mount_nandfs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Apr 2012 03:20:15 -0000 Author: gber Date: Sat Apr 7 03:20:14 2012 New Revision: 233969 URL: http://svn.freebsd.org/changeset/base/233969 Log: sbin: revert all unnecessary changes. No changes to mount are required now. Also fdisk change is not needed anymore. Obtained from: Semihalf Supported by: FreeBSD Foundation, Juniper Networks Modified: projects/nand/sbin/Makefile projects/nand/sbin/fdisk/fdisk.c projects/nand/sbin/mount/mntopts.h projects/nand/sbin/mount/mount.c projects/nand/sbin/mount_nandfs/Makefile projects/nand/sbin/mount_nandfs/mount_nandfs.8 projects/nand/sbin/mount_nandfs/mount_nandfs.c Modified: projects/nand/sbin/Makefile ============================================================================== --- projects/nand/sbin/Makefile Sat Apr 7 03:10:26 2012 (r233968) +++ projects/nand/sbin/Makefile Sat Apr 7 03:20:14 2012 (r233969) @@ -92,7 +92,6 @@ SUBDIR+= natd .endif .if ${MK_NAND} != "no" -SUBDIR+= mount_nandfs SUBDIR+= nandfs SUBDIR+= newfs_nandfs .endif Modified: projects/nand/sbin/fdisk/fdisk.c ============================================================================== --- projects/nand/sbin/fdisk/fdisk.c Sat Apr 7 03:10:26 2012 (r233968) +++ projects/nand/sbin/fdisk/fdisk.c Sat Apr 7 03:20:14 2012 (r233969) @@ -27,11 +27,11 @@ #include __FBSDID("$FreeBSD$"); -#include #include #include #include #include +#include #include #include #include Modified: projects/nand/sbin/mount/mntopts.h ============================================================================== --- projects/nand/sbin/mount/mntopts.h Sat Apr 7 03:10:26 2012 (r233968) +++ projects/nand/sbin/mount/mntopts.h Sat Apr 7 03:20:14 2012 (r233969) @@ -62,10 +62,6 @@ struct mntopt { #define MOPT_RO { "ro", 0, MNT_RDONLY, 0 } #define MOPT_RW { "rw", 1, MNT_RDONLY, 0 } - -/* Cleaner daemon flags */ -#define MOPT_NOCLEANER { "nocleaner", 0, 0, 0 } - /* This is parsed by mount(8), but is ignored by specific mount_*(8)s. */ #define MOPT_AUTO { "auto", 0, 0, 0 } Modified: projects/nand/sbin/mount/mount.c ============================================================================== --- projects/nand/sbin/mount/mount.c Sat Apr 7 03:10:26 2012 (r233968) +++ projects/nand/sbin/mount/mount.c Sat Apr 7 03:20:14 2012 (r233969) @@ -142,7 +142,7 @@ use_mountprog(const char *vfstype) */ unsigned int i; const char *fs[] = { - "cd9660", "mfs", "msdosfs", "nandfs", "nfs", "ntfs", + "cd9660", "mfs", "msdosfs", "nfs", "ntfs", "nwfs", "nullfs", "oldnfs", "portalfs", "smbfs", "udf", "unionfs", NULL }; Modified: projects/nand/sbin/mount_nandfs/Makefile ============================================================================== --- projects/nand/sbin/mount_nandfs/Makefile Sat Apr 7 03:10:26 2012 (r233968) +++ projects/nand/sbin/mount_nandfs/Makefile Sat Apr 7 03:20:14 2012 (r233969) @@ -1,15 +0,0 @@ -PROG = mount_nandfs -SRCS = mount_nandfs.c getmntopts.c -MAN = mount_nandfs.8 - -LDADD = -lutil -DPADD = ${LIBUTIL} - -# mount_nandfs needs mntopts.h and getmntopts.c from src/sbin/mount/ -MOUNT ?= ${.CURDIR}/../mount -CFLAGS += -I${MOUNT} -WARNS ?= 6 - -.PATH: ${MOUNT} - -.include Modified: projects/nand/sbin/mount_nandfs/mount_nandfs.8 ============================================================================== --- projects/nand/sbin/mount_nandfs/mount_nandfs.8 Sat Apr 7 03:10:26 2012 (r233968) +++ projects/nand/sbin/mount_nandfs/mount_nandfs.8 Sat Apr 7 03:20:14 2012 (r233969) @@ -1,93 +0,0 @@ -.\" -.\" Copyright (c) 1993,1994 Christopher G. Demetriou -.\" Copyright (c) 1999 Semen Ustimenko -.\" Copyright (c) 2005 Jean-Sébastien Pédron -.\" Copyright (c) 2010 Semihalf -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgment: -.\" This product includes software developed by Christopher G. Demetriou. -.\" 3. The name of the author may not be used to endorse or promote products -.\" derived from this software without specific prior written permission -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.\" -.\" $FreeBSD$ -.\" -.Dd February 28, 2012 -.Dt MOUNT_NANDFS 8 -.Os -.Sh NAME -.Nm mount_nandfs -.Nd "mount a NandFS file system" -.Sh SYNOPSIS -.Nm -.Op Fl n -.Op Fl f Ar cleanerd_config -.Op Fl c Ar snapshot -.Op Fl o Ar options -.Ar special -.Ar node -.Sh DESCRIPTION -The -.Nm -utility attaches the NandFS file system residing on the device -.Ar special -to the global file system namespace at the location -indicated by -.Ar node . -.Pp -This command is normally executed by -.Xr mount 8 -at boot time, but can be used by any user to mount a -NandFS file system on any directory that they own (provided, -of course, that they have appropriate access to the device that -contains the file system). -.Pp -The options are as follow: -.Bl -tag -width indent -.It Fl n -Don't run -.Xr cleanerd 8 . -.It Fl f Ar cleanerd_config -Run -.Xr cleanerd 8 -with config -.Ar cleanerd_config . -.It Fl c Ar snapshot -Mount specified snapshot. -.It Fl o Ar options -Options are specified by a comma separated string of options. -See the mount(8) man page for possible options and their meanings. -.El -.Sh EXAMPLES -To mount a NandFS volume located in -.Pa /dev/md0 : -.Pp -.Dl "mount_nandfs /dev/md0 /mnt" -.Sh SEE ALSO -.Xr mount 2 , -.Xr unmount 2 , -.Xr fstab 5 , -.Xr mount 8 -.Sh AUTHORS -.An Grzegorz Bernacki -.An Jakub Klama Modified: projects/nand/sbin/mount_nandfs/mount_nandfs.c ============================================================================== --- projects/nand/sbin/mount_nandfs/mount_nandfs.c Sat Apr 7 03:10:26 2012 (r233968) +++ projects/nand/sbin/mount_nandfs/mount_nandfs.c Sat Apr 7 03:20:14 2012 (r233969) @@ -1,353 +0,0 @@ -/*- - * Copyright (c) 2005 Jean-Sébastien Pédron - * Copyright (c) 2010 Semihalf - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * From FreeBSD: src/sbin/mount_reiserfs/mount_reiserfs.c,v 1.4.10.1 2009/08/03 08:13:06 kensmith Exp - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "mntopts.h" - -#define CLEANERD_PATH "/usr/sbin/cleanerd" -#define CLEANERD_CONFIG "/etc/nandfs_cleanerd.conf" - -struct mntopt mopts[] = { - MOPT_STDOPTS, - MOPT_UPDATE, - MOPT_END -}; - -void usage(void); - -static int -nandfs_lookup_pid_mib(const char *dev, int *mibp, size_t *miblen) -{ - char *mibname; - char readpath[MAXPATHLEN+1]; - size_t readlen; - int i; - - *miblen = 5; - - for (i = 0; i < NANDFS_MAX_MOUNTS; i++) { - asprintf(&mibname, "vfs.nandfs.mount.%d.dev", i); - readlen = MAXPATHLEN; - - if (sysctlbyname(mibname, readpath, &readlen, NULL, 0)) { - free(mibname); - - if (errno == ENOENT) - continue; - - return (-1); - } - - free(mibname); - - if (strncmp(dev, readpath, readlen) != 0) - continue; - - asprintf(&mibname, "vfs.nandfs.mount.%d.cleanerd_pid", i); - - if (sysctlnametomib(mibname, mibp, miblen)) { - free(mibname); - return (-1); - } - - free(mibname); - return (0); - } - - errno = ENOENT; - return (-1); -} - - -int -main(int argc, char *argv[]) -{ - struct iovec *iov; - struct sembuf sbuf; - struct statfs sfs; - int ch, mntflags, iovlen, nocleanerd = 0; - int update_start_cleanerd = 0; - size_t miblen, pidlen; - int mib[5]; - int64_t cpno = 0; - uint64_t oldmntflags; - char *dev, *dir, mntpath[MAXPATHLEN]; - char *cleanerd_config = NULL; -#if 0 - char *cleanerd_args[6]; -#endif - char fstype[] = "nandfs"; - time_t start; - pid_t cleanerd_pid; - key_t semkey; - int semid; - char *p, *val; - - iov = NULL; - iovlen = 0; - mntflags = 0; - while ((ch = getopt(argc, argv, "o:c:f:n")) != -1) { - switch(ch) { - case 'c': - cpno = strtoll(optarg, NULL, 10); - if (cpno == 0 && errno == EINVAL) - usage(); - break; - case 'f': - cleanerd_config = strdup(optarg); - break; - case 'n': - nocleanerd = 1; - break; - case 'o': - getmntopts(optarg, mopts, &mntflags, 0); - p = strchr(optarg, '='); - val = NULL; - if (p != NULL) { - *p = '\0'; - val = p + 1; - } - build_iovec(&iov, &iovlen, optarg, val, (size_t)-1); - break; - case '?': - default: - usage(); - } - } - - argc -= optind; - argv += optind; - - if (argc != 2) - usage(); - - dev = argv[0]; - dir = argv[1]; - - /* - * Resolve the mountpoint with realpath(3) and remove unnecessary - * slashes from the devicename if there are any. - */ - (void)checkpath(dir, mntpath); - (void)rmslashes(dev, dev); - - /* Prepare the options vector for nmount(). build_iovec() is declared - * in mntopts.h. */ - build_iovec(&iov, &iovlen, "fstype", fstype, (size_t)-1); - build_iovec(&iov, &iovlen, "fspath", mntpath, (size_t)-1); - build_iovec(&iov, &iovlen, "from", dev, (size_t)-1); - build_iovec(&iov, &iovlen, "cpno", &cpno, sizeof(int64_t)); - - if (mntflags & MNT_UPDATE) { - if (statfs(dir, &sfs) < 0) { - fprintf(stderr, "Cannot statfs(): %s\n", - strerror(errno)); - return (EXIT_FAILURE); - } - - oldmntflags = sfs.f_flags; - - /* Read cleanerd PID */ - if (nandfs_lookup_pid_mib(dev, mib, &miblen)) { - fprintf(stderr, "Cannot lookup cleanerd PID: %s\n", strerror(errno)); - } - - pidlen = sizeof(pid_t); - if (sysctl(mib, miblen, &cleanerd_pid, &pidlen, NULL, 0) < 0) { - fprintf(stderr, "Cannot lookup cleanerd PID: %s\n", - strerror(errno)); - } - - /* RW -> RO update, so kill cleanerd */ - if (((oldmntflags & MNT_RDONLY) == 0) && (mntflags & MNT_RDONLY) && - (cleanerd_pid != -1)) { - semkey = ftok(dev, 'c'); - semid = semget(semkey, 1, 0666 | IPC_CREAT); - - if (semid < 0) { - fprintf(stderr, "Cannot obtain cleanerd semaphore: %s\n", - strerror(errno)); - } else { - sbuf.sem_num = 0; - sbuf.sem_op = 1; - sbuf.sem_flg = 0; - - if (semop(semid, &sbuf, 1) < 0) { - fprintf(stderr, "Cannot access semaphore: %s\n", - strerror(errno)); - } - } - - /* Kill cleanerd */ - if (kill(cleanerd_pid, SIGTERM) < 0) { - fprintf(stderr, "Cannot kill cleanerd (pid %d): %s\n", - cleanerd_pid, strerror(errno)); - } else { - /* Make sure that cleanerd is killed. */ - start = time(NULL); - do { - sbuf.sem_num = 0; - sbuf.sem_op = 0; - sbuf.sem_flg = IPC_NOWAIT; - - if (semop(semid, &sbuf, 1) < 0) { - if (errno == EAGAIN) - continue; - - fprintf(stderr, "Cannot access semaphore: %s\n", - strerror(errno)); - } - - break; - } while (time(NULL) < (start + 5)); - } - - /* Destroy semaphore */ - if (semctl(semid, 0, IPC_RMID, NULL) < 0) { - if (errno != EINVAL) - fprintf(stderr, "Cannot remove semaphore: %s\n", - strerror(errno)); - } - } - - /* RO -> RW update, start cleanerd */ - if ((oldmntflags & MNT_RDONLY) && ((mntflags & MNT_RDONLY) == 0)) { - update_start_cleanerd = 1; - } - } - - - if (nmount(iov, iovlen, mntflags) < 0) - err(EX_OSERR, "%s", dev); - - return (0); -#if 0 - - if (nocleanerd || (mntflags & MNT_RDONLY)) - exit(0); - - if ((mntflags & MNT_UPDATE) && (update_start_cleanerd == 0)) { - exit(0); - } - - /* Create cleaner semaphore */ - semkey = ftok(dev, 'c'); - semid = semget(semkey, 1, 0666 | IPC_CREAT); - - if (semid < 0) { - fprintf(stderr, "Cannot obtain semaphore: %s\n", - strerror(errno)); - } else { - sbuf.sem_num = 0; - sbuf.sem_op = 1; - sbuf.sem_flg = 0; - - if (semop(semid, &sbuf, 1) < 0) { - fprintf(stderr, "Cannot access semaphore: %s\n", - strerror(errno)); - } - } - - /* Start cleaner daemon */ - cleanerd_pid = fork(); - switch (cleanerd_pid) { - case 0: - if (cleanerd_config == NULL) - cleanerd_config = strdup(CLEANERD_CONFIG); - - cleanerd_args[0] = strdup("cleanerd"); - cleanerd_args[1] = strdup("-c"); - cleanerd_args[2] = cleanerd_config; - cleanerd_args[3] = dir; - cleanerd_args[4] = NULL; - execv(CLEANERD_PATH, cleanerd_args); - break; - case -1: - fprintf(stderr, "Cannot spawn cleaner daemon: %s\n", - strerror(errno)); - exit(EXIT_FAILURE); - default: - start = time(NULL); - do { - sbuf.sem_num = 0; - sbuf.sem_op = 0; - sbuf.sem_flg = IPC_NOWAIT; - - if (semop(semid, &sbuf, 1) < 0) { - if (errno == EAGAIN) - continue; - - fprintf(stderr, "Cannot access semaphore: %s\n", - strerror(errno)); - - } - - break; - } while (time(NULL) < (start + 5)); - - /* Destroy semaphore */ - if (semctl(semid, 0, IPC_RMID, NULL) < 0) { - fprintf(stderr, "Cannot remove semaphore: %s\n", - strerror(errno)); - } - } - - exit(0); -#endif -} - -void -usage(void) -{ - fprintf(stderr, - "usage: mount_nandfs [-c cpno] [-f cleanerd_config] [-n] [-o options]" - " special node\n"); - exit(EX_USAGE); -}