mirror of https://github.com/trapexit/mergerfs.git
Antonio SJ Musumeci
2 years ago
9 changed files with 302 additions and 155 deletions
-
3libfuse/Makefile
-
111libfuse/lib/fuse.c
-
3libfuse/lib/fuse_msgbuf.hpp
-
67libfuse/lib/fuse_signals.c
-
11libfuse/lib/lock.h
-
24libfuse/lib/node.h
-
63libfuse/lib/node_pool.c
-
26libfuse/lib/node_pool.h
-
17src/fuse_ioctl.cpp
@ -0,0 +1,11 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
struct lock |
||||
|
{ |
||||
|
int type; |
||||
|
off_t start; |
||||
|
off_t end; |
||||
|
pid_t pid; |
||||
|
uint64_t owner; |
||||
|
struct lock *next; |
||||
|
}; |
@ -0,0 +1,24 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "lock.h" |
||||
|
|
||||
|
struct node |
||||
|
{ |
||||
|
struct node *name_next; |
||||
|
struct node *id_next; |
||||
|
|
||||
|
uint64_t nodeid; |
||||
|
char *name; |
||||
|
struct node *parent; |
||||
|
|
||||
|
uint64_t nlookup; |
||||
|
uint32_t refctr; |
||||
|
uint32_t open_count; |
||||
|
uint64_t hidden_fh; |
||||
|
|
||||
|
int32_t treelock; |
||||
|
struct lock *locks; |
||||
|
|
||||
|
uint32_t stat_crc32b; |
||||
|
uint8_t is_stat_cache_valid:1; |
||||
|
}; |
@ -0,0 +1,63 @@ |
|||||
|
/* |
||||
|
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 "lfmp.h" |
||||
|
|
||||
|
#include "node.h" |
||||
|
|
||||
|
static lfmp_t g_NODE_FMP; |
||||
|
|
||||
|
__attribute__((constructor)) |
||||
|
void |
||||
|
__construct_g_NODE_FMP() |
||||
|
{ |
||||
|
lfmp_init(&g_NODE_FMP,sizeof(struct node),256); |
||||
|
} |
||||
|
|
||||
|
__attribute__((destructor)) |
||||
|
void |
||||
|
__destruct__g_NODE_FMP() |
||||
|
{ |
||||
|
lfmp_destroy(&g_NODE_FMP); |
||||
|
} |
||||
|
|
||||
|
struct node* |
||||
|
node_alloc() |
||||
|
{ |
||||
|
return lfmp_calloc(&g_NODE_FMP); |
||||
|
} |
||||
|
|
||||
|
void |
||||
|
node_free(struct node *node_) |
||||
|
{ |
||||
|
lfmp_free(&g_NODE_FMP,node_); |
||||
|
} |
||||
|
|
||||
|
int |
||||
|
node_gc() |
||||
|
{ |
||||
|
return lfmp_gc(&g_NODE_FMP); |
||||
|
} |
||||
|
|
||||
|
lfmp_t* |
||||
|
node_lfmp() |
||||
|
{ |
||||
|
return &g_NODE_FMP; |
||||
|
} |
@ -0,0 +1,26 @@ |
|||||
|
/* |
||||
|
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 "node.h" |
||||
|
|
||||
|
struct node* node_alloc(); |
||||
|
void node_free(struct node *node_); |
||||
|
int node_gc(); |
||||
|
lfmp_t *node_lfmp(); |
Write
Preview
Loading…
Cancel
Save
Reference in new issue