One more piece of information on using FUSE that's very helpful is how it lets you store and access data that you've defined.
FUSE has a struct fuse_context which contains a
little bit of extra information about a filesystem.  One very useful
field in this struct is
void* private_data, a pointer to arbitrary data
stored by your filesystem.
From inside any FUSE operation, it's possible to obtain the context by
calling fuse_get_context(); this means we can use
fuse_get_context()->private_data to get the private data.
We can see how to use this by looking at my log_msg()
function.  Here it is:
void log_msg(const char *format, ...)
{
    va_list ap;
    va_start(ap, format);
    vfprintf(BB_DATA->logfile, format, ap);
}
It uses a macro I defined:
#define BB_DATA ((struct bb_state *) fuse_get_context()->private_data)
to obtain the private data field and cast it to a
struct bb_state *.
You can see how I created the struct bb_struct by
looking at params.h where I defined the
struct:
struct bb_state {
    FILE *logfile;
    char *rootdir;
};
It has two fields:  the FILE* for the log file, and
the path to the directory we're accessing through BBFS.
I malloc() the structure and set the values of the
fields in my main() function (see last section) so
they'll be available to me later.
Next: Extra Information About Unclear Functions