From 913e4b6359e725a022dddac70794e095128c2b6c Mon Sep 17 00:00:00 2001 From: pooka Date: Tue, 27 Nov 2007 18:55:40 +0000 Subject: ChironFS, replicating file system which operates like RAID1 on a file system level, i.e. is configured by collecting several mountpoints into one virtual replicated file system. --- filesystems/fuse-chironfs/DESCR | 3 ++ filesystems/fuse-chironfs/Makefile | 16 ++++++ filesystems/fuse-chironfs/PLIST | 12 +++++ filesystems/fuse-chironfs/distinfo | 9 ++++ filesystems/fuse-chironfs/patches/patch-aa | 13 +++++ filesystems/fuse-chironfs/patches/patch-ab | 82 ++++++++++++++++++++++++++++++ filesystems/fuse-chironfs/patches/patch-ac | 75 +++++++++++++++++++++++++++ filesystems/fuse-chironfs/patches/patch-ad | 12 +++++ 8 files changed, 222 insertions(+) create mode 100644 filesystems/fuse-chironfs/DESCR create mode 100644 filesystems/fuse-chironfs/Makefile create mode 100644 filesystems/fuse-chironfs/PLIST create mode 100644 filesystems/fuse-chironfs/distinfo create mode 100644 filesystems/fuse-chironfs/patches/patch-aa create mode 100644 filesystems/fuse-chironfs/patches/patch-ab create mode 100644 filesystems/fuse-chironfs/patches/patch-ac create mode 100644 filesystems/fuse-chironfs/patches/patch-ad (limited to 'filesystems/fuse-chironfs') diff --git a/filesystems/fuse-chironfs/DESCR b/filesystems/fuse-chironfs/DESCR new file mode 100644 index 00000000000..15d9bb0f3b4 --- /dev/null +++ b/filesystems/fuse-chironfs/DESCR @@ -0,0 +1,3 @@ +ChironFS implements RAID1-like replication on the file system level. +In case of a unit failure, other replicas on the mount will be +used. diff --git a/filesystems/fuse-chironfs/Makefile b/filesystems/fuse-chironfs/Makefile new file mode 100644 index 00000000000..b0c9e3eaca5 --- /dev/null +++ b/filesystems/fuse-chironfs/Makefile @@ -0,0 +1,16 @@ +# $NetBSD: Makefile,v 1.1.1.1 2007/11/27 18:55:40 pooka Exp $ +# + +DISTNAME= chironfs-1.0-RC9 +PKGNAME= fuse-chironfs-1.0RC9 +CATEGORIES= filesystems +MASTER_SITES= http://chironfs.googlecode.com/files/ + +MAINTAINER= pkgsrc-users@NetBSD.org +HOMEPAGE= http://code.google.com/p/chironfs/ +COMMENT= Replicating file system + +GNU_CONFIGURE= yes + +.include "../../mk/fuse.buildlink3.mk" +.include "../../mk/bsd.pkg.mk" diff --git a/filesystems/fuse-chironfs/PLIST b/filesystems/fuse-chironfs/PLIST new file mode 100644 index 00000000000..e6d6cd42b2c --- /dev/null +++ b/filesystems/fuse-chironfs/PLIST @@ -0,0 +1,12 @@ +@comment $NetBSD: PLIST,v 1.1.1.1 2007/11/27 18:55:40 pooka Exp $ +bin/chironfs +man/man8/chironfs.8 +share/doc/chironfs/README +share/doc/chironfs/AUTHORS +share/doc/chironfs/changelog.Debian +share/doc/chironfs/HOWTO.html +share/doc/chironfs/NEWS +share/doc/chironfs/TODO +share/doc/chironfs/ChangeLog +share/doc/chironfs/copyright +@dirrm share/doc/chironfs diff --git a/filesystems/fuse-chironfs/distinfo b/filesystems/fuse-chironfs/distinfo new file mode 100644 index 00000000000..5615e802216 --- /dev/null +++ b/filesystems/fuse-chironfs/distinfo @@ -0,0 +1,9 @@ +$NetBSD: distinfo,v 1.1.1.1 2007/11/27 18:55:40 pooka Exp $ + +SHA1 (chironfs-1.0-RC9.tar.gz) = a7f703afb8bc9d2a1dcdd833fa17c6358b4225f9 +RMD160 (chironfs-1.0-RC9.tar.gz) = d6962e5af8b530080ec04191e33aaee433154c01 +Size (chironfs-1.0-RC9.tar.gz) = 398831 bytes +SHA1 (patch-aa) = bcabe1a6b4841ad93b53c031c2f75c1bd4968270 +SHA1 (patch-ab) = 30dface656c86e5e883a2b99fa7fb570fb932611 +SHA1 (patch-ac) = 316d880066d9a3dc482edcd034dd754073011d21 +SHA1 (patch-ad) = 681867b573d4a5e60fe283be8170294112695994 diff --git a/filesystems/fuse-chironfs/patches/patch-aa b/filesystems/fuse-chironfs/patches/patch-aa new file mode 100644 index 00000000000..faa5f70ba3f --- /dev/null +++ b/filesystems/fuse-chironfs/patches/patch-aa @@ -0,0 +1,13 @@ +$NetBSD: patch-aa,v 1.1.1.1 2007/11/27 18:55:40 pooka Exp $ + +--- src/Makefile.in.orig 2007-10-23 06:25:06.000000000 +0200 ++++ src/Makefile.in 2007-11-27 19:04:11.000000000 +0100 +@@ -146,7 +146,7 @@ + top_srcdir = @top_srcdir@ + AM_CFLAGS = $(all_includes) -Wall -W -Wmissing-prototypes -g -O2 -DFUSE_USE_VERSION=25 -D_FILE_OFFSET_BITS=64 + chironfs_SOURCES = chironfs.c chiron-conf.c chironfs.h +-chironfs_LDFLAGS = -L/usr/local/lib -lfuse -ldl -lm ++chironfs_LDFLAGS = -L/usr/local/lib -lfuse -lm + chironfs_OBJS = chironfs.o chiron-conf.o + all: all-am + diff --git a/filesystems/fuse-chironfs/patches/patch-ab b/filesystems/fuse-chironfs/patches/patch-ab new file mode 100644 index 00000000000..9777561733b --- /dev/null +++ b/filesystems/fuse-chironfs/patches/patch-ab @@ -0,0 +1,82 @@ +$NetBSD: patch-ab,v 1.1.1.1 2007/11/27 18:55:40 pooka Exp $ + +--- src/chiron-conf.c.orig 2007-10-23 04:54:53.000000000 +0200 ++++ src/chiron-conf.c 2007-11-27 18:05:11.000000000 +0100 +@@ -34,7 +34,11 @@ + #include + + #include ++#ifdef __linux__ + #include ++#else ++#include ++#endif + #include + #include + #include +@@ -232,7 +236,8 @@ + int do_mount(char *filesystems, char *mountpoint) + { + char buf[100]; +- int i, start, fd, res, errno, rep_on_mount=0, err; ++ int fd, res; ++ int i, start, errno, rep_on_mount=0, err; + int *tmp_high, *tmp_low; + unsigned long tmpfd; + struct rlimit rlp; +@@ -249,21 +254,21 @@ + } + + fd = open("/proc/sys/fs/file-max",O_RDONLY); +- if (fd<0) { +- print_err(errno,"opening /proc/sys/fs/file-max"); +- exit(errno); +- } +- res = read(fd,buf,99); +- if (res<0) { +- print_err(errno,"reading /proc/sys/fs/file-max"); +- exit(errno); ++ if (fd != -1) { ++ res = read(fd,buf,99); ++ if (res<0) { ++ print_err(errno,"reading /proc/sys/fs/file-max"); ++ exit(errno); ++ } ++ sscanf(buf,"%qu",&FD_BUF_SIZE); ++ close(fd); ++ } else { ++ FD_BUF_SIZE = 4096; + } +- sscanf(buf,"%qu",&FD_BUF_SIZE); +- close(fd); + + tmpfd = (FD_BUF_SIZE >>= 1); + +- if (getrlimit(RLIMIT_OFILE,&rlp)) { ++ if (getrlimit(RLIMIT_NOFILE,&rlp)) { + print_err(errno,"reading nofile resource limit"); + exit(errno); + } +@@ -356,11 +361,11 @@ + } + + if (mountpoint[0]==':') { +- mount_point = realpath(mountpoint+1,NULL); ++ mount_point = do_realpath(mountpoint+1,NULL); + rep_on_mount = i = 1; + tmp_high[max_replica_high++] = 0; + } else { +- mount_point = realpath(mountpoint,NULL); ++ mount_point = do_realpath(mountpoint,NULL); + i = 0; + } + if (mount_point==NULL) { +@@ -380,7 +385,7 @@ + tmp_high[max_replica_high++] = i; + } + +- paths[i].path = realpath(filesystems+start, NULL); ++ paths[i].path = do_realpath(filesystems+start, NULL); + if (paths[i].path==NULL) { + free_paths(); + free_tab_fd(); diff --git a/filesystems/fuse-chironfs/patches/patch-ac b/filesystems/fuse-chironfs/patches/patch-ac new file mode 100644 index 00000000000..5cfabab75da --- /dev/null +++ b/filesystems/fuse-chironfs/patches/patch-ac @@ -0,0 +1,75 @@ +$NetBSD: patch-ac,v 1.1.1.1 2007/11/27 18:55:40 pooka Exp $ + +--- src/chironfs.c.orig 2007-11-27 17:00:15.000000000 +0100 ++++ src/chironfs.c 2007-11-27 19:08:07.000000000 +0100 +@@ -27,8 +27,7 @@ + #define FUSE_USE_VERSION 25 + + #include +-#include +-#include ++#include + #include + #include + #include +@@ -43,13 +42,17 @@ + #ifdef HAVE_SETXATTR + #include + #endif ++#ifdef __linux__ + #include + #include +-#include + #include ++#endif ++#include + #include + #include + ++#include "config.h" ++ + #define _CHIRON_H_ + #include "chironfs.h" + +@@ -186,6 +189,16 @@ + } + } + ++char *do_realpath(const char *path, char *resolvedpath) ++{ ++ ++#ifndef __linux__ ++ if (resolvedpath == NULL) ++ resolvedpath = malloc(PATH_MAX); ++#endif ++ return realpath(path, resolvedpath); ++} ++ + //////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////// + // +@@ -2234,7 +2247,7 @@ + return(NULL); + } + } else { +- realbasedir = realpath(basedir,NULL); ++ realbasedir = do_realpath(basedir,NULL); + if (realbasedir==NULL) { + free(basedir); + return(NULL); +@@ -2383,6 +2396,7 @@ + dbg(("\nfuse_argv: %s %s %s", fuse_argv[0], fuse_argv[1], fuse_argv[2])); + dbg(("\n-------------------------------------------------------------------------------")); + ++#ifdef HAVE_GETMNTENT + FILE *mtab; + struct mntent *mntentry; + mtab = setmntent("/etc/mtab", "r"); +@@ -2393,6 +2407,7 @@ + } + } while(mntentry!=NULL); + endmntent (mtab); ++#endif + dbg(("\n-------------------------------------------------------------------------------")); + + res = fuse_main(3, fuse_argv, &chiron_oper); diff --git a/filesystems/fuse-chironfs/patches/patch-ad b/filesystems/fuse-chironfs/patches/patch-ad new file mode 100644 index 00000000000..f8a1eb5b83f --- /dev/null +++ b/filesystems/fuse-chironfs/patches/patch-ad @@ -0,0 +1,12 @@ +$NetBSD: patch-ad,v 1.1.1.1 2007/11/27 18:55:40 pooka Exp $ + +--- src/chironfs.h.orig 2007-10-23 05:09:39.000000000 +0200 ++++ src/chironfs.h 2007-11-27 19:10:43.000000000 +0100 +@@ -157,6 +157,7 @@ + int fd_hashseek(int fd_main); + void print_err(int err, char *specifier); + void call_log(char *fnname, char *resource, int err); ++char *do_realpath(const char *pathname, char *resolvedname); + int choose_replica(int try); + void disable_replica(int n); + void opt_parse(char *fo, char**log, char**argvbuf); -- cgit v1.2.3