-- Lab 2: Basic File Server --
start your file system implementation by getting the following FUSE operations to work:

    CREATE/MKNOD, LOOKUP, and READDIR
    SETATTR, WRITE and READ

 The YFS module implements the core file system logic. This module runs as a single process called yfs_client that supports a mountpoint on the local host. The code skeleton for this module consists of two pieces:

    The FUSE interface, in fuse.cc. It translates FUSE operations from the FUSE kernel modules into YFS client calls. We provide you with much of the code needed to register with FUSE and receive FUSE operations; you will be mostly responsible for modifying fuse.cc to call the appropriate methods on the yfs_client class and reply back over the FUSE interface.
    The YFS client, in yfs_client.{cc,h}. The YFS client implements the file system logic, using the lock and extent servers to help it. For example, when creating a new file, your yfs_client will add directory entries to a directory block in the extent server. It is called a client, rather than a file server, because of its relationship to the lock and extent servers.

The extent server stores all the data representing your filesystem, much like a hard disk in an ordinary file system. In later labs, you will run YFS clients on multiple hosts, all of them talking to the same extent server; the desired effect is that all the hosts see and share the same file system. The only way the multiple YFS clients can share data is through the extent server. The extent server code skeleton consists of two pieces:

    Extent client, in extent_client.{cc,h}. This is a wrapper class for communicationg with extent server using RPCs.
    Extent server, in extent_server.{cc,h} and extent_smain.cc. The extent server manages a simple key-value store. It requires integers of type extent_protocol::extentid_t for keys, and stores string values (std::string), without interpreting the contents of those strings. It also stores an "attribute" for key/value pair. Your extent server should support put(key,value), get(key), getattr(key), and remove(key) RPCs.