John Ogness | 7 Sep 2004 23:03
Picon

Re: DazukoFS for FreeBSD 4

Hi Patrick,

OK, I have now added enough to the CVS code that you can play around 
with DazukoFS on FreeBSD 4 if you like. Here is the step-by-step.

*NOTE*: DazukoFS is in a very early development stage! Although this 
information is meant to satisfy Patrick's hunger, anyone is welcome to 
play around with it. Just please be aware that both the Dazuko and FiST 
projects have been "slapped together" as a first step for integration.

1. Get the latest CVS version of Dazuko:

$ env CVS_RSH="ssh" cvs -z3 \
-d:ext:anoncvs <at> subversions.gnu.org:/cvsroot/dazuko \
co dazuko

(Note: the diff file I provided assumes that the Dazuko source is in 
/tmp/dazuko)

2.  Configure for FiST support, build, and insert:

$ cd dazuko
$ ./configure --enable-fist
$ make
$ kldload ./dazuko.ko

3. Get the latest copy of fistgen from filesystems.org:

$ wget ftp://ftp.filesystems.org/pub/fistgen/fistgen-0.1.1.tar.gz

4. Extract and set up DazukoFS

$ tar xzvf fistgen-0.1.1.tar.gz
$ cd fistgen-0.1.1
$ ./configure
$ make
$ ./fistgen dazukofs.fist

(Note: dazukofs.fist is attached to this email)

5. Patch the generated DazukoFS source code:

$ cd out/FreeBSD-4.10-STABLE/dazukofs
$ patch -p0 < patch-fist-dazuko-freebsd.diff

(Note: patch-fist-dazuko-freebsd.diff is attached to this email)

6. Build and insert dazukofs.ko:

$ make
$ kldload ./dazukofs.ko

7. Create a couple dummy directories for experimenting:

$ mkdir /tmp/dazukomnt
$ mkdir /tmp/dazukomnt.real

8. Mount the directories:

# ./mount_dazukofs -t dazukofs /tmp/dazukomnt.real /tmp/dazukomnt

9. Start the Dazuko example program:

# cd /tmp/dazuko/example_c
# make
# ./example /tmp/dazukomnt

Now you can play in the /tmp/dazukomnt directory and the ON_OPEN events 
should be displayed by the running example program. Currently *only* 
ON_OPEN vnode ops are being hooked.

When you are finished, make sure you remove everything in reverse order:

# umount /tmp/dazukomnt
# kldunload dazukofs
# kldunload dazuko

I hope this helps you out. Please remember that this is in *VERY* early 
development stages! I am looking forward to feedback.

John Ogness

-- 
Dazuko Maintainer
--- Makefile	Tue Sep  7 22:32:28 2004
+++ ../dazukofs.good/Makefile	Tue Sep  7 21:40:04 2004
 <at>  <at>  -4,7 +4,7  <at>  <at> 
 OPT_DBG=-Werror -Wno-unused
 OPT_DEF=-D_KERNEL -DKLD_MODULE -DFISTGEN
 OPT_INC=-I. -I$(SYS_SRC)
-CFLAGS=$(OPT_DEBUG) $(OPT_DEF) $(OPT_DBG) $(OPT_INC)
+CFLAGS=$(OPT_DEBUG) $(OPT_DEF) $(OPT_DBG) $(OPT_INC) -I/tmp/dazuko
 UCFLAGS=$(OPT_DEBUG) -DFISTGEN $(OPT_INC)

 SYS_SRC=/sys
--- vnode.c	Tue Sep  7 22:32:28 2004
+++ ../dazukofs.good/vnode.c	Tue Sep  7 22:25:06 2004
 <at>  <at>  -221,6 +221,9  <at>  <at> 
 #include <dazukofs.h>
 #endif

+#include "dazuko_platform.h"
+#include "dazuko_events.h"
+
 static int dazukofs_bug_bypass = 0;   /* for debugging: enables bypass printf'ing */
 SYSCTL_INT(_debug, OID_AUTO, dazukofs_bug_bypass, CTLFLAG_RW, &dazukofs_bug_bypass, 0, "");

 <at>  <at>  -338,7 +341,13  <at>  <at> 
    * with the modified argument structure.
    */
   if (vps_p[0] && *vps_p[0])
+  {
+
+if(descp->vdesc_offset == VOFFSET(vop_open)
+	fist_dazuko_sys_generic(DAZUKO_ON_OPEN, curproc, *(vps_p[0]), 1);
+
     error = VCALL(*(vps_p[0]), descp->vdesc_offset, ap);
+  }
   else {
     printf("dazukofs_bypass: no map for %s\n", descp->vdesc_name);
     error = EINVAL;
mntstyle overlay;
debug off;
%%
%%
/* no extra routines are needed */

/*
 * Local variables:
 * c-basic-offset: 4
 * End:
 */
_______________________________________________
Dazuko-devel mailing list
Dazuko-devel <at> nongnu.org
http://lists.nongnu.org/mailman/listinfo/dazuko-devel

Gmane