From 004aa293f360ea0f63ec50f5042f8c0fb2831e4f Mon Sep 17 00:00:00 2001 From: rsc Date: Wed, 13 Jul 2005 03:49:41 +0000 Subject: Dump-like file system backup for Unix, built on Venti. --- src/cmd/vbackup/mount-Linux.c | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/cmd/vbackup/mount-Linux.c (limited to 'src/cmd/vbackup/mount-Linux.c') diff --git a/src/cmd/vbackup/mount-Linux.c b/src/cmd/vbackup/mount-Linux.c new file mode 100644 index 00000000..39b96a31 --- /dev/null +++ b/src/cmd/vbackup/mount-Linux.c @@ -0,0 +1,58 @@ +#include +#include +#include +#ifdef __Linux24__ +# define __KERNEL__ +# include +# undef __KERNEL__ +#else +# include +#endif +#include +#include +#include +#include "mountnfs.h" + +void +mountnfs(int proto, struct sockaddr_in *sa, uchar *handle, int nhandle, char *mtpt) +{ + int mflag, fd; + struct nfs_mount_data nfs; + + fd = socket(AF_INET, proto, proto==SOCK_STREAM ? IPPROTO_TCP : IPPROTO_UDP); + if(fd < 0) + sysfatal("socket: %r"); + + memset(&nfs, 0, sizeof nfs); + nfs.version = NFS_MOUNT_VERSION; + nfs.fd = fd; + nfs.flags = + NFS_MOUNT_SOFT| + NFS_MOUNT_INTR| + NFS_MOUNT_NOAC| + NFS_MOUNT_NOCTO| + NFS_MOUNT_VER3| + NFS_MOUNT_NONLM; + if(proto==SOCK_STREAM) + nfs.flags |= NFS_MOUNT_TCP; + nfs.rsize = 8192; + nfs.wsize = 8192; + nfs.timeo = 120; + nfs.retrans = 2; + nfs.acregmin = 60; + nfs.acregmax = 600; + nfs.acdirmin = 60; + nfs.acdirmax = 600; + nfs.addr = *sa; + strcpy(nfs.hostname, "backup"); + nfs.namlen = 1024; + nfs.bsize = 8192; + memcpy(nfs.root.data, handle, nhandle); + nfs.root.size = nhandle; + mflag = MS_NOATIME|MS_NODEV|MS_NODIRATIME| + MS_NOEXEC|MS_NOSUID|MS_RDONLY; + + if(mount("backup:/", mtpt, "nfs", mflag, &nfs) < 0) + sysfatal("mount: %r"); +} + -- cgit v1.2.3