mirror of https://github.com/trapexit/mergerfs.git
21 changed files with 293 additions and 708 deletions
-
9libfuse/include/fuse.h
-
24libfuse/include/fuse_common.h
-
12libfuse/include/fuse_conn_info.hpp
-
22libfuse/include/fuse_lowlevel.hpp
-
14libfuse/include/fuse_pollhandle.h
-
4libfuse/include/fuse_req.hpp
-
79libfuse/lib/fuse.cpp
-
22libfuse/lib/fuse_i.h
-
1libfuse/lib/fuse_loop.cpp
-
523libfuse/lib/fuse_lowlevel.cpp
-
36libfuse/lib/fuse_req.cpp
-
24libfuse/lib/fuse_session.cpp
-
1libfuse/lib/node.cpp
-
89src/fixed_mem_pool.hpp
-
24src/fuse_init.cpp
-
2src/fuse_init.hpp
-
38src/fuse_poll.cpp
-
31src/fuse_poll.hpp
-
21src/mempools.cpp
-
23src/mempools.hpp
-
2src/mergerfs.cpp
@ -0,0 +1,12 @@ |
|||
#pragma once
|
|||
|
|||
#include "int_types.h"
|
|||
|
|||
typedef struct fuse_conn_info_t fuse_conn_info_t; |
|||
struct fuse_conn_info_t |
|||
{ |
|||
u32 proto_major; |
|||
u32 proto_minor; |
|||
u64 capable; |
|||
u64 want; |
|||
}; |
|||
@ -1,14 +0,0 @@ |
|||
#pragma once |
|||
|
|||
#include <stdint.h> |
|||
|
|||
struct fuse_chan; |
|||
struct fuse_ll; |
|||
|
|||
typedef struct fuse_pollhandle_t fuse_pollhandle_t; |
|||
struct fuse_pollhandle_t |
|||
{ |
|||
uint64_t kh; |
|||
struct fuse_chan *ch; |
|||
struct fuse_ll *f; |
|||
}; |
|||
@ -1,17 +1,17 @@ |
|||
#pragma once
|
|||
|
|||
#include "fuse_req_ctx.h"
|
|||
#include "fuse_conn_info.hpp"
|
|||
|
|||
struct fuse_ll; |
|||
struct fuse_chan; |
|||
|
|||
typedef struct fuse_req_t fuse_req_t; |
|||
struct fuse_req_t |
|||
{ |
|||
fuse_req_ctx_t ctx; |
|||
struct fuse_ll *f; |
|||
struct fuse_chan *ch; |
|||
unsigned int ioctl_64bit : 1; |
|||
fuse_conn_info_t conn; |
|||
}; |
|||
|
|||
fuse_req_t* fuse_req_alloc(); |
|||
|
|||
523
libfuse/lib/fuse_lowlevel.cpp
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,36 @@ |
|||
#include "fuse_req.hpp"
|
|||
|
|||
#include <cstddef>
|
|||
#include <cstdlib>
|
|||
|
|||
typedef struct stack_t stack_t; |
|||
struct stack_t |
|||
{ |
|||
stack_t *next; |
|||
}; |
|||
|
|||
thread_local static stack_t *g_stack = NULL; |
|||
|
|||
fuse_req_t* |
|||
fuse_req_alloc() |
|||
{ |
|||
if(g_stack == NULL) |
|||
return (fuse_req_t*)calloc(1,sizeof(fuse_req_t)); |
|||
|
|||
fuse_req_t *req; |
|||
|
|||
req = (fuse_req_t*)g_stack; |
|||
g_stack = g_stack->next; |
|||
|
|||
return req; |
|||
} |
|||
|
|||
void |
|||
fuse_req_free(fuse_req_t *req_) |
|||
{ |
|||
stack_t *stack; |
|||
|
|||
stack = (stack_t*)req_; |
|||
stack->next = g_stack; |
|||
g_stack = stack; |
|||
} |
|||
@ -1,89 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2020, 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 <cstdint>
|
|||
|
|||
#include <stdlib.h>
|
|||
|
|||
|
|||
typedef struct fixed_mem_pool_t fixed_mem_pool_t; |
|||
struct fixed_mem_pool_t |
|||
{ |
|||
fixed_mem_pool_t *next; |
|||
}; |
|||
|
|||
template<uint64_t SIZE> |
|||
class FixedMemPool |
|||
{ |
|||
public: |
|||
FixedMemPool() |
|||
{ |
|||
list.next = NULL; |
|||
} |
|||
|
|||
~FixedMemPool() |
|||
{ |
|||
void *mem; |
|||
while(!empty()) |
|||
{ |
|||
mem = alloc(); |
|||
::free(mem); |
|||
} |
|||
} |
|||
|
|||
bool |
|||
empty(void) |
|||
{ |
|||
return (list.next == NULL); |
|||
} |
|||
|
|||
uint64_t |
|||
size(void) |
|||
{ |
|||
return SIZE; |
|||
} |
|||
|
|||
void* |
|||
alloc(void) |
|||
{ |
|||
void *rv; |
|||
|
|||
if(list.next == NULL) |
|||
return malloc(SIZE); |
|||
|
|||
rv = (void*)list.next; |
|||
list.next = list.next->next; |
|||
|
|||
return rv; |
|||
} |
|||
|
|||
void |
|||
free(void *mem_) |
|||
{ |
|||
fixed_mem_pool_t *next; |
|||
|
|||
next = (fixed_mem_pool_t*)mem_; |
|||
next->next = list.next; |
|||
list.next = next; |
|||
} |
|||
|
|||
private: |
|||
fixed_mem_pool_t list; |
|||
}; |
|||
@ -1,38 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2021, 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 "fuse_poll.hpp"
|
|||
|
|||
#include "errno.hpp"
|
|||
|
|||
#include "fuse.h"
|
|||
|
|||
|
|||
int |
|||
FUSE::poll(const fuse_req_ctx_t *ctx_, |
|||
const fuse_file_info_t *ffi_, |
|||
fuse_pollhandle_t *ph_, |
|||
unsigned *reventsp_) |
|||
{ |
|||
(void)ctx_; |
|||
(void)ffi_; |
|||
(void)ph_; |
|||
(void)reventsp_; |
|||
|
|||
return -ENOSYS; |
|||
} |
|||
@ -1,31 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2021, 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 "fuse.h"
|
|||
|
|||
|
|||
namespace FUSE |
|||
{ |
|||
int |
|||
poll(const fuse_req_ctx_t *ctx, |
|||
const fuse_file_info_t *ffi, |
|||
fuse_pollhandle_t *ph, |
|||
unsigned *reventsp); |
|||
} |
|||
@ -1,21 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2020, 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 "locked_fixed_mem_pool.hpp"
|
|||
|
|||
LockedFixedMemPool<128 * 1024> g_DENTS_BUF_POOL; |
|||
@ -1,23 +0,0 @@ |
|||
/*
|
|||
ISC License |
|||
|
|||
Copyright (c) 2020, 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 "locked_fixed_mem_pool.hpp"
|
|||
|
|||
extern LockedFixedMemPool<128 * 1024> g_DENTS_BUF_POOL; |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue