[prev in list] [next in list] [prev in thread] [next in thread]
List: intermezzo-cvs
Subject: CVS: is/fs25/utils Makefile,NONE,1.1 closefsets.c,NONE,1.1 iopener.c,NONE,1.1 openjournal.c,NONE,1.1
From: "Peter J. Braam" <braam () users ! sourceforge ! net>
Date: 2002-10-11 22:52:04
[Download RAW message or body]
Update of /cvsroot/intermezzo/is/fs25/utils
In directory usw-pr-cvs1:/tmp/cvs-serv17557/fs25/utils
Added Files:
Makefile closefsets.c iopener.c openjournal.c setup.sh
Log Message:
beginnings of 2.5 support
--- NEW FILE ---
all: iopener openjournal closefsets
iopener: iopener.c
$(CC) -g -I.. -o iopener iopener.c -lext2fs
closefsets: closefsets.c ../linux/intermezzo_fs.h
$(CC) -g -I.. -o closefsets closefsets.c
openjournal: openjournal.c ../linux/intermezzo_fs.h
$(CC) -g -I.. -o openjournal openjournal.c
--- NEW FILE ---
#include <stdio.h>
#include <errno.h>
#include <asm/types.h>
#include <fcntl.h>
#include <linux/intermezzo_fs.h>
int mark_fset(int fd, char *path, int and_flags, int or_flags)
{
return mark(MARK_FSET, fd, path, and_flags, or_flags);
}
int mark(int mark_what, int fd, char *path, int and_flags, int or_flags)
{
struct mark {
int mark_what;
int andflag;
int orflag;
int pathlen;
char *path;
} markarg;
markarg.mark_what = mark_what;
markarg.andflag = and_flags;
markarg.orflag = or_flags;
markarg.pathlen = strlen(path);
markarg.path = path;
return ioctl(fd, PRESTO_MARK, &markarg);
}
int main(int argc, char **argv)
{
int fd;
char *dev;
int rc;
struct {
char *path;
int pathlen;
} karg;
if (argc < 2) {
printf("Usage: %s mountpoint [psdev]\n", argv[0]);
exit(1);
}
if (argc == 3) {
dev = argv[2];
} else {
dev = "/dev/izo0";
}
fd = open(dev, O_RDONLY);
if ( fd < 0 ) {
printf("Error opening %s: %s\n", dev, strerror(errno));
exit(errno);
}
karg.path = argv[1];
karg.pathlen = strlen(argv[1]);
rc = ioctl(fd, PRESTO_CLEAR_ALL_FSETROOTS, &karg);
if (rc) {
printf("Error in fsetroot ioctl %d\n", rc);
exit(rc);
}
return 0;
}
--- NEW FILE ---
#include <sys/vfs.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/param.h>
#include <mntent.h>
#include <string.h>
#include <errno.h>
#include <sys/stat.h>
#include <unistd.h>
#include <assert.h>
#include <pthread.h>
#include <libgen.h>
#include <linux/ext2_fs.h>
#include <ext2fs/ext2fs.h>
#include <fcntl.h>
int main(int argc, char **argv)
{
int err;
int flags = 0;
ext2_filsys fs;
ext2_ino_t e2ino;
struct ext2_inode e2inode;
char device[128];
struct stat buf;
char ifilename[4096];
char relname[4096];
char *ptr;
char *pdirb;
char *dirb;
char *dir;
char *base;
dev_t the_dev;
int fd;
if (argc != 2) {
fprintf(stderr, "usage %s filename\n", argv[0]);
exit(1);
}
if ( stat(argv[1], &buf) ) {
fprintf(stderr, "cannot open %s\n", argv[1]);
exit(1);
}
the_dev = buf.st_dev;
if ( buf.st_dev >> 8 == 3) {
snprintf(device, sizeof(device), "/dev/hda%d",
buf.st_dev & 0xff);
} else if ( buf.st_dev >> 8 == 7) {
snprintf(device, sizeof(device), "/dev/loop%d",
buf.st_dev & 0xff);
}
ptr = relname + sizeof(relname) - 1;
memset(relname, 0, sizeof(relname));
dirb = strdup(argv[1]);
pdirb = strdup(argv[1]);
while ( 1 ) {
char *dirc = strdup(dirb);
char *basec = strdup(dirb);
free(dirb);
dir = dirname(dirc);
dirb = strdup(dir);
if ( stat(dir, &buf) ) {
fprintf(stderr, "error statting %s\n", dir);
exit(2);
}
if (buf.st_dev != the_dev) {
free(dirc);
break;
}
free(pdirb);
pdirb = strdup(dir);
free(dirc);
base = basename(basec);
ptr -= strlen(base) + 1;
*ptr = '/';
memcpy(ptr+ 1, base, strlen(base));
free(basec);
}
/* this guy will abort if it fails */
err = ext2fs_open(device, flags, 0, 0, unix_io_manager, &fs);
if (err) {
fprintf(stderr, "error in ext2fs_open %d", err);
exit(1);
}
err = ext2fs_namei(fs, 2, 2, ptr, &e2ino);
if (err) {
fprintf(stderr, "error in lookup %d", err);
ext2fs_close(fs);
exit(1);
}
err= ext2fs_read_inode (fs, e2ino, &e2inode);
if (err) {
fprintf(stderr, "error in lookup %d", err);
ext2fs_close(fs);
exit(1);
}
snprintf(ifilename, sizeof(ifilename), "%s/...ino:%ld:%ld", pdirb,
e2ino, e2inode.i_generation);
fd = open(ifilename, O_RDWR);
if (fd < 0) {
fprintf(stderr, "Error i-opening %s (as %s) %s\n",
ptr, ifilename, strerror(errno));
} else {
fprintf(stderr, "Success i-opening %s (as %s)\n",
ptr, ifilename);
}
return 0;
}
--- NEW FILE ---
#include <stdio.h>
#include <errno.h>
#include <asm/types.h>
#include <fcntl.h>
#include <linux/intermezzo_fs.h>
int mark_fset(int fd, char *path, int and_flags, int or_flags)
{
return mark(MARK_FSET, fd, path, and_flags, or_flags);
}
int mark(int mark_what, int fd, char *path, int and_flags, int or_flags)
{
struct mark {
int mark_what;
int andflag;
int orflag;
int pathlen;
char *path;
} markarg;
markarg.mark_what = mark_what;
markarg.andflag = and_flags;
markarg.orflag = or_flags;
markarg.pathlen = strlen(path);
markarg.path = path;
return ioctl(fd, PRESTO_MARK, &markarg);
}
int main(int argc, char **argv)
{
int fd;
char *dev;
int rc;
struct karg {
char *mtpt;
int mtptlen;
char *fset;
int fsetlen;
int volid;
int flags;
} karg;
if (argc < 3) {
printf("Usage: %s mountpoint fsetname [devname]\n", argv[0]);
exit(1);
}
if (argc == 4) {
dev = argv[3];
} else {
dev = "/dev/izo0";
}
fd = open(dev, O_RDONLY);
if ( fd < 0 ) {
printf("Error opening %s: %s\n", dev, strerror(errno));
exit(errno);
}
karg.mtpt = argv[1];
karg.mtptlen = strlen(argv[1]);
karg.fset = argv[2];
karg.fsetlen = strlen(argv[2]);
karg.volid = 0;
karg.flags = 0;
rc = ioctl(fd, PRESTO_SET_FSETROOT, &karg);
if (rc) {
printf("Error in fsetroot ioctl %d\n", rc);
exit(rc);
}
rc = mark_fset(fd, karg.mtpt, ~0, FSET_STEAL_PERMIT);
if (rc) {
printf("Error in steal permit ioctl %d\n", rc);
exit(rc);
}
return 0;
}
--- NEW FILE ---
#! /bin/bash
# where to mount this FS
MNT=/mnt
DEV=/tmp/fs
#
umount $MNT
rmmod intermezzo
insmod /usr/src/intermezzo/presto24/intermezzo.o
echo 1 > /proc/sys/intermezzo/trace
echo 4095 > /proc/sys/intermezzo/debug
/usr/src/intermezzo/utils/mkizofs -t ext3 -r testvol -j $DEV
mount -t intermezzo -o loop,data=journal,fileset=testvol,cache_type=ext3,mtpt=/mnt $DEV $MNT
(cd /usr/src/intermezzo/lento/tests ; perl openjournal.pl $MNT testvol /dev/intermezzo0)
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
intermezzo-commit mailing list
intermezzo-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/intermezzo-commit
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic