Import mount_chfs for CHFS.

This commit is contained in:
ahoka 2011-11-24 15:54:54 +00:00
parent f9fadebd59
commit ccfcc4b31e
5 changed files with 272 additions and 1 deletions

View File

@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.122 2011/11/15 16:50:43 riz Exp $
# $NetBSD: Makefile,v 1.123 2011/11/24 15:54:54 ahoka Exp $
# @(#)Makefile 8.5 (Berkeley) 3/31/94
# Not ported: XNSrouted enpload scsiformat startslip
@ -24,6 +24,7 @@ SUBDIR+= newfs_udf
SUBDIR+= newfs_v7fs fsck_v7fs
SUBDIR+= mount_ados
SUBDIR+= mount_cd9660
SUBDIR+= mount_chfs
SUBDIR+= mount_efs
SUBDIR+= mount_ext2fs
SUBDIR+= mount_fdesc

17
sbin/mount_chfs/Makefile Normal file
View File

@ -0,0 +1,17 @@
# $NetBSD: Makefile,v 1.1 2011/11/24 15:54:55 ahoka Exp $
#
.include <bsd.own.mk>
PROG= mount_chfs
SRCS= mount_chfs.c fattr.c pathadj.c
MAN= mount_chfs.8
MOUNT= ${NETBSDSRCDIR}/sbin/mount
.PATH: ${MOUNT}
CPPFLAGS+= -I${MOUNT}
DPADD+= ${LIBUTIL}
LDADD+= -lutil
WARNS= 4
.include <bsd.prog.mk>

View File

@ -0,0 +1,62 @@
.\" Copyright (c) 2005, 2006 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
.\" by Julio M. Merino Vidal, developed as part of Google's Summer of Code
.\" 2005 program.
.\"
.\" 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
.\"
.Dd November 24, 2011
.Dt MOUNT_CHFS 8
.Os
.Sh NAME
.Nm mount_chfs
.Nd mount a CHFS flash file system
.Sh SYNOPSIS
.Nm
.Sh DESCRIPTION
Mounts a flash file system from a
.Xr flash 4
device.
CHFS file systems can be only mounted from flash devices.
For regular block devices like SSD drives or USB drives,
please use a regular file system.
The file system will be created during the first mount.
CHFS stands for Chip File System.
.Sh EXAMPLES
mount_chfs /dev/flash0 /mnt
.Sh SEE ALSO
.Xr fstab 5 ,
.Xr mount 8 ,
.Xr flash 9 ,
.Xr flash 4
.Sh HISTORY
CHFS was originally called ChewieFS during development.
The name was changed to avoid legal issues and to have a more
neutral name.
.Sh BUGS
CHFS has a few known bugs as of 2011.
.Sh AUTHORS
CHFS was developed at the Department of Software Engineering,
University of Szeged, Hungary

View File

@ -0,0 +1,151 @@
/* $NetBSD: mount_chfs.c,v 1.1 2011/11/24 15:54:55 ahoka Exp $ */
/*-
* Copyright (c) 2010 Department of Software Engineering,
* University of Szeged, Hungary
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
* by the Department of Software Engineering, University of Szeged, Hungary
*
* 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 ``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.
*/
#include <sys/cdefs.h>
#ifndef lint
#endif /* not lint */
#include <sys/param.h>
#include <sys/mount.h>
#include <sys/stat.h>
#include <ufs/ufs/ufsmount.h>
#include <ctype.h>
#include <err.h>
#include <errno.h>
#include <grp.h>
#include <mntopts.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "mountprog.h"
#include "mount_chfs.h"
/* --------------------------------------------------------------------- */
static const struct mntopt mopts[] = {
MOPT_STDOPTS,
MOPT_GETARGS,
MOPT_NULL,
};
/* --------------------------------------------------------------------- */
static void usage(void) __dead;
/* --------------------------------------------------------------------- */
void
mount_chfs_parseargs(int argc, char *argv[], struct ufs_args *args,
int *mntflags, char *canon_dev, char *canon_dir)
{
int ch;
struct stat sb;
/* Set default values for mount point arguments. */
memset(args, 0, sizeof(*args));
*mntflags = 0;
optind = optreset = 1;
while ((ch = getopt(argc, argv, "i:")) != -1) {
switch (ch) {
case '?':
default:
usage();
}
}
argc -= optind;
argv += optind;
if (argc != 2)
usage();
//strlcpy(canon_dev, argv[0], MAXPATHLEN);
pathadj(argv[0], canon_dev);
pathadj(argv[1], canon_dir);
args->fspec = canon_dev;
if (stat(canon_dir, &sb) == -1) {
err(EXIT_FAILURE, "cannot stat `%s'", canon_dir);
}
}
/* --------------------------------------------------------------------- */
static void
usage(void)
{
(void)fprintf(stderr,
"usage: %s special mountpath\n",
getprogname());
exit(1);
}
/* --------------------------------------------------------------------- */
int
mount_chfs(int argc, char *argv[])
{
struct ufs_args args;
char canon_dev[MAXPATHLEN], fs_name[MAXPATHLEN];
int mntflags;
mount_chfs_parseargs(argc, argv, &args, &mntflags,
canon_dev, fs_name);
if (mount(MOUNT_CHEWIEFS, fs_name, mntflags, &args, sizeof args) == -1) {
err(EXIT_FAILURE, "chfs on %s", fs_name);
}
if (mntflags & MNT_GETARGS) {
//(void)printf("flash index=%d\n", args.fl_index);
}
return EXIT_SUCCESS;
}
#ifndef MOUNT_NOMAIN
int
main(int argc, char *argv[])
{
setprogname(argv[0]);
return mount_chfs(argc, argv);
}
#endif

View File

@ -0,0 +1,40 @@
/*
* Copyright (c) 2008 The NetBSD Foundation. 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 ``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.
*/
#ifndef _SBIN_MOUNT_CHEWIEFS_MOUNT_CHEWIEFS_H_
#define _SBIN_MOUNT_CHEWIEFS_MOUNT_CHEWIEFS_H_
#include <ufs/ufs/ufsmount.h>
#ifndef MOUNT_CHEWIEFS
#define MOUNT_CHEWIEFS "chfs"
#endif
int mount_chfs(int, char **);
void mount_chfs_parseargs(int, char **, struct ufs_args *, int *,
char *, char *);
#endif /* _SBIN_MOUNT_CHEWIEFS_MOUNT_CHEWIEFS_H_ */