Coda File System

Re: venus-kernel interface

From: Greg Troxel <gdt_at_ir.bbn.com>
Date: 29 Sep 2004 09:53:13 -0400
  to save some "Read The Source" time, if somebody would tell me,
  how much the same is the Coda userspace/kernel protocol
  on differnet OS and architectures.

See coda-src/venus/worker.cc:VFSMount.

NetBSD, modern FreeBSD:

	error = mount("coda", venusRoot, 0, kernDevice);

Linux:

	struct coda_mount_data mountdata;
	mountdata.version = CODA_MOUNT_VERSION;
	mountdata.fd = worker::muxfd;

	error = mount("coda", venusRoot, "coda",  MS_MGC_VAL,
		      islinux20 ? (void *)&kernDevice : (void *)&mountdata);

	if (!error) {
	    FILE *fd = setmntent("/etc/mtab", "a");
	    struct mntent ent;
	    if (fd) { 
		ent.mnt_fsname = "coda";
		ent.mnt_dir    = venusRoot;
		ent.mnt_type   = "coda";
		ent.mnt_opts   = "rw";
		ent.mnt_freq   = 0;
		ent.mnt_passno = 0;
		addmntent(fd, &ent);
		endmntent(fd);
	    }
	}


So it seems pretty different.  But, many things are and you never
notice because Linux emulation on BSD is so well done.  It may just be
a matter of putting some glue in the BSD kernel's handling of the
linux mount syscall.

I am unsure of how different the rest of the user/kernel interface is,
but I'd be surprised if a Linux venus worked on BSD without some
effort.

It would be really cool if the coda kernel interface and the arla
kernel interface could be 64-bit-rationalized/merged and there would
be one generic kernel interface for complicated userspace-implemented
filesystems.

-- 
        Greg Troxel <gdt_at_ir.bbn.com>
Received on 2004-09-29 09:55:02