At Wed, 29 Jan 2014 16:26:14 +0800, Liu Yuan wrote: > > v3: > - fix a gcc warning when nfs isn't enabled
Now the problems I pointed out seem to be resolved. Thanks for your rework. This patchset looks good to me as a start point of the nfs feature. Reviewed-by: Hitoshi Mitake <[email protected]> But I think we should hear Kazutaka-san's opinion. Thanks, Hitoshi > > v2: > Address Hithoshi's comment > - add NFS macro to sheep/ops.c > - add -lrt > - move sd_inode_stat into lib/sd_inode.c > > This patch set mainly introduce NFS server building blocks, that is > > - NFS v3 transport by glibc's SUNRPC > - preliminary NFS server > > NFS protocol is seen as the most established shared storage protocol to > provide > POSIX file semantics and has rich client and server features. It was > introduced > to partition the UNIX file system into two parts, client that deals with APP > and > server side that deals with disks. NFS has a tremendous success both in system > design (where Linux VFS root from, allowing different backend implementation > such as ext4, xfs, btrfs, FUSE, etc.) and in business market. It is well > received > by uesrs, so there is no reason we don't start from NFS for a POSIX file > abstraction (tree structure, rich system calls, ACL, etc) > > I choose hyper volume as the base for NFS sever like our HTTP storage system. > > For now, this patch set limit > > - file size to 4M, hence directory is also 4M at most > - inode take up the whole sd object (4M) > - no file deletion and directory deletion support due to lack of dentry > management > - no link, symlink, rename support > - no ACL > - no nanosecond support > > But we now support traditional UNIX file system structure and it is a working > grund to play with. It even in this early stage support bash command like > 'echo, > cat, mkdir, touch, df ...'. > > Usage: > # on host > $ ./configure --enable-nfs > # work around auth error for mount > $ echo 'OPTIONS="-w -i"' | sudo tee /etc/default/rpcbind > $ sudo service portmap restart > $ dog nfs create test # create a NFS v3 server (listen on nfsd and mountd > port) > > -------------------------------------------------------------------- > # on client > # now on any client machine, make sure you install nfs-common at first > $ sudo mount o tcp,nfsvers=3 -t nfs server_ip:test /mnt > > TODO: > - finish stubs > - add stat sub-command to 'dog nfs' > - add extent to file allocation > - add btree or hash based kv store to manage dentries > - implement a multi-threaded SUNRPC to take place of poor performance glibc > RPC > - implement NFS v4 > > Liu Yuan (12): > sheep: fix some compile errors > sheep: introduce NFSv3 transport > sheep/nfs: add mount protocol stub > dog: add nfs command > util: add PTR_ERR helpers > sheep/nfs: add basic file system framework > sheep: clean up sd_inode btree error code > sheep/nfs: support lookup/create/setattr nfs operation > sheep/nfs: implement read/write nfs operation > sheep/nfs: add mkdir support > sheep: make stat_data_objs a generic function > sheep/nfs: implement nfs3_fsstat operation > > configure.ac | 12 + > dog/Makefile.am | 4 + > dog/dog.c | 5 + > dog/dog.h | 8 +- > dog/nfs.c | 81 +++ > dog/vdi.c | 96 +-- > include/compiler.h | 2 + > include/internal_proto.h | 6 + > include/sheepdog_proto.h | 3 - > include/util.h | 44 +- > lib/Makefile.am | 3 +- > lib/sd.c | 112 +++ > lib/sd_inode.c | 22 +- > sheep/Makefile.am | 6 + > sheep/http/http.h | 2 +- > sheep/http/kv.c | 35 +- > sheep/nfs/fs.c | 379 ++++++++++ > sheep/nfs/fs.h | 73 ++ > sheep/nfs/mount.c | 80 +++ > sheep/nfs/nfs.c | 723 +++++++++++++++++++ > sheep/nfs/nfs.h | 1241 ++++++++++++++++++++++++++++++++ > sheep/nfs/nfsd.c | 245 +++++++ > sheep/nfs/xdr.c | 1795 > ++++++++++++++++++++++++++++++++++++++++++++++ > sheep/ops.c | 23 + > sheep/sheep.c | 4 + > sheep/sheep_priv.h | 14 +- > sheep/trace/trace.h | 8 - > sheep/vdi.c | 30 + > 28 files changed, 4897 insertions(+), 159 deletions(-) > create mode 100644 dog/nfs.c > create mode 100644 lib/sd.c > create mode 100644 sheep/nfs/fs.c > create mode 100644 sheep/nfs/fs.h > create mode 100644 sheep/nfs/mount.c > create mode 100644 sheep/nfs/nfs.c > create mode 100644 sheep/nfs/nfs.h > create mode 100644 sheep/nfs/nfsd.c > create mode 100644 sheep/nfs/xdr.c > > -- > 1.8.1.2 > > -- > sheepdog mailing list > [email protected] > http://lists.wpkg.org/mailman/listinfo/sheepdog -- sheepdog mailing list [email protected] http://lists.wpkg.org/mailman/listinfo/sheepdog
