mirror of https://github.com/trapexit/mergerfs.git
Antonio SJ Musumeci
1 year ago
7 changed files with 151 additions and 89 deletions
-
4libfuse/Makefile
-
31libfuse/include/fuse_config.hpp
-
34libfuse/lib/fuse.c
-
73libfuse/lib/fuse_config.cpp
-
46libfuse/lib/fuse_loop.cpp
-
38libfuse/lib/fuse_mt.c
-
14src/option_parser.cpp
@ -0,0 +1,31 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2023, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include <string>
|
||||
|
|
||||
|
int fuse_config_get_read_thread_count(); |
||||
|
int fuse_config_get_process_thread_count(); |
||||
|
int fuse_config_get_process_thread_queue_depth(); |
||||
|
std::string fuse_config_get_pin_threads(); |
||||
|
|
||||
|
void fuse_config_set_read_thread_count(int const); |
||||
|
void fuse_config_set_process_thread_count(int const); |
||||
|
void fuse_config_set_process_thread_queue_depth(int const); |
||||
|
void fuse_config_set_pin_threads(std::string const); |
@ -0,0 +1,73 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2023, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#include <string>
|
||||
|
|
||||
|
static int g_READ_THREAD_COUNT = -1; |
||||
|
static int g_PROCESS_THREAD_COUNT = -1; |
||||
|
static int g_PROCESS_THREAD_QUEUE_DEPTH = -1; |
||||
|
static std::string g_PIN_THREADS = {}; |
||||
|
|
||||
|
|
||||
|
int |
||||
|
fuse_config_get_read_thread_count() |
||||
|
{ |
||||
|
return g_READ_THREAD_COUNT; |
||||
|
} |
||||
|
|
||||
|
void |
||||
|
fuse_config_set_read_thread_count(int const v_) |
||||
|
{ |
||||
|
g_READ_THREAD_COUNT = v_; |
||||
|
} |
||||
|
|
||||
|
int |
||||
|
fuse_config_get_process_thread_count() |
||||
|
{ |
||||
|
return g_PROCESS_THREAD_COUNT; |
||||
|
} |
||||
|
|
||||
|
void |
||||
|
fuse_config_set_process_thread_count(int const v_) |
||||
|
{ |
||||
|
g_PROCESS_THREAD_COUNT = v_; |
||||
|
} |
||||
|
|
||||
|
int |
||||
|
fuse_config_get_process_thread_queue_depth() |
||||
|
{ |
||||
|
return g_PROCESS_THREAD_QUEUE_DEPTH; |
||||
|
} |
||||
|
|
||||
|
void |
||||
|
fuse_config_set_process_thread_queue_depth(int const v_) |
||||
|
{ |
||||
|
g_PROCESS_THREAD_QUEUE_DEPTH = v_; |
||||
|
} |
||||
|
|
||||
|
std::string |
||||
|
fuse_config_get_pin_threads() |
||||
|
{ |
||||
|
return g_PIN_THREADS; |
||||
|
} |
||||
|
|
||||
|
void |
||||
|
fuse_config_set_pin_threads(std::string const v_) |
||||
|
{ |
||||
|
g_PIN_THREADS = v_; |
||||
|
} |
@ -1,38 +0,0 @@ |
|||||
/* |
|
||||
FUSE: Filesystem in Userspace |
|
||||
Copyright (C) 2001-2007 Miklos Szeredi <miklos@szeredi.hu> |
|
||||
|
|
||||
This program can be distributed under the terms of the GNU LGPLv2. |
|
||||
See the file COPYING.LIB. |
|
||||
*/ |
|
||||
|
|
||||
#include "fuse_i.h" |
|
||||
#include "fuse_misc.h" |
|
||||
#include "fuse_lowlevel.h" |
|
||||
|
|
||||
#include <stdio.h> |
|
||||
#include <stdlib.h> |
|
||||
#include <string.h> |
|
||||
#include <pthread.h> |
|
||||
#include <assert.h> |
|
||||
|
|
||||
int |
|
||||
fuse_loop_mt(struct fuse *f) |
|
||||
{ |
|
||||
if (f == NULL) |
|
||||
return -1; |
|
||||
|
|
||||
int res = fuse_start_maintenance_thread(f); |
|
||||
if (res) |
|
||||
return -1; |
|
||||
|
|
||||
res = fuse_session_loop_mt(fuse_get_session(f), |
|
||||
fuse_config_read_thread_count(f), |
|
||||
fuse_config_process_thread_count(f), |
|
||||
fuse_config_process_thread_queue_depth(f), |
|
||||
fuse_config_pin_threads(f)); |
|
||||
|
|
||||
fuse_stop_maintenance_thread(f); |
|
||||
|
|
||||
return res; |
|
||||
} |
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue