-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
81 lines (69 loc) · 2.94 KB
/
main.cpp
File metadata and controls
81 lines (69 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "fs_options.h"
#include "fs_meta_ops.h"
#include "file_meta_ops.h"
#include "dir_meta_ops.h"
#include "fs_logger.h"
#include <unistd.h>
#include <iostream>
#include <fuse.h>
using namespace mgridfs;
namespace {
struct fuse_operations mgridfsOps = {};
}
int main(int argc, char* argv[], char* arge[]) {
// File-system meta / setup / cleanup functions
mgridfsOps.init = mgridfs::mgridfs_init;
mgridfsOps.destroy = mgridfs::mgridfs_destroy;
mgridfsOps.statfs = mgridfs::mgridfs_statfs;
// File/Directory attribute management functionality
mgridfsOps.getattr = mgridfs::mgridfs_getattr;
mgridfsOps.fgetattr = mgridfs::mgridfs_fgetattr;
mgridfsOps.access = NULL; // optional, un-implemented functionality
mgridfsOps.setxattr = mgridfs::mgridfs_setxattr;
mgridfsOps.getxattr = mgridfs::mgridfs_getxattr;
mgridfsOps.listxattr = mgridfs::mgridfs_listxattr;
mgridfsOps.removexattr = mgridfs::mgridfs_removexattr;
mgridfsOps.chmod = mgridfs::mgridfs_chmod;
mgridfsOps.chown = mgridfs::mgridfs_chown;
mgridfsOps.utime = mgridfs::mgridfs_utime;
mgridfsOps.utimens = mgridfs::mgridfs_utimens;
mgridfsOps.mknod = mgridfs::mgridfs_mknod;
// Directory functionality
mgridfsOps.mkdir = mgridfs::mgridfs_mkdir;
mgridfsOps.rmdir = mgridfs::mgridfs_rmdir;
mgridfsOps.opendir = mgridfs::mgridfs_opendir;
mgridfsOps.readdir = mgridfs::mgridfs_readdir;
mgridfsOps.releasedir = mgridfs::mgridfs_releasedir;
mgridfsOps.fsyncdir = mgridfs::mgridfs_fsyncdir;
// File linking functionality functions
mgridfsOps.link = NULL; // Hard-links are not supported
mgridfsOps.readlink = mgridfs::mgridfs_readlink;
mgridfsOps.unlink = mgridfs::mgridfs_unlink;
mgridfsOps.symlink = mgridfs::mgridfs_symlink;
// Normal file related operations
mgridfsOps.create = mgridfs::mgridfs_create;
mgridfsOps.open = mgridfs::mgridfs_open;
mgridfsOps.read = mgridfs::mgridfs_read;
//mgridfsOps.read_buf = mgridfs::mgridfs_read_buf; // read function should be able to handle all read requests
mgridfsOps.write = mgridfs::mgridfs_write;
//mgridfsOps.write_buf = mgridfs::mgridfs_write_buf; // write function should be able to handle all write requests
mgridfsOps.flush = mgridfs::mgridfs_flush;
mgridfsOps.release = mgridfs::mgridfs_release;
mgridfsOps.rename = mgridfs::mgridfs_rename;
mgridfsOps.truncate = mgridfs::mgridfs_truncate;
mgridfsOps.ftruncate = mgridfs::mgridfs_ftruncate;
mgridfsOps.fsync = mgridfs::mgridfs_fsync;
mgridfsOps.lock = mgridfs::mgridfs_lock;
mgridfsOps.bmap = mgridfs::mgridfs_bmap;
mgridfsOps.ioctl = mgridfs::mgridfs_ioctl;
mgridfsOps.poll = mgridfs::mgridfs_poll;
mgridfsOps.flock = mgridfs::mgridfs_flock;
mgridfsOps.fallocate = mgridfs::mgridfs_fallocate;
struct fuse_args fuseArgs = FUSE_ARGS_INIT(argc, argv);
if (!mgridfs::globalFSOptions.fromCommandLine(fuseArgs)) {
fatal() << "Failed to parse options passed to program, will not mount file system" << std::endl;
return 1;
}
fuse_main(fuseArgs.argc, fuseArgs.argv, &mgridfsOps, NULL);
return 0;
}