#include <sys/types.h>
#include <fcntl.h>
+#include <fuse.h>
+
+static void fuse_usage()
+{
+ const char **argv = (const char **) malloc((2) * sizeof(char *));
+ argv[0] = "ceph-fuse";
+ argv[1] = "-h";
+ struct fuse_args args = FUSE_ARGS_INIT(2, (char**)argv);
+ if (fuse_parse_cmdline(&args, NULL, NULL, NULL) == -1) {
+ derr << "fuse_parse_cmdline failed." << dendl;
+ fuse_opt_free_args(&args);
+ free(argv);
+ }
+
+ assert(args.allocated); // Checking fuse has realloc'd args so we can free newargv
+ free(argv);
+}
void usage()
{
- cerr << "usage: ceph-fuse [-m mon-ip-addr:mon-port] <mount point>" << std::endl;
+ cout <<
+"usage: ceph-fuse [-m mon-ip-addr:mon-port] <mount point> [OPTIONS]\n"
+" --client_mountpoint/-r <root_directory>\n"
+" use root_directory as the mounted root, rather than the full Ceph tree.\n"
+"\n";
+ fuse_usage();
+ generic_client_usage();
}
int main(int argc, const char **argv, const char *envp[]) {
} else if (ceph_argparse_flag(args, i, "--localize-reads", (char*)NULL)) {
cerr << "setting CEPH_OSD_FLAG_LOCALIZE_READS" << std::endl;
filer_flags |= CEPH_OSD_FLAG_LOCALIZE_READS;
+ } else if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) {
+ usage();
+ assert(0);
} else {
++i;
}