[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