(Illustration by Gaich Muramatsu)
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