Browse Source

checkpoint

debug-output
Antonio SJ Musumeci 2 years ago
parent
commit
031a72d7ad
  1. 2
      libfuse/lib/fuse.c
  2. 25
      libfuse/lib/fuse_msgbuf.cpp

2
libfuse/lib/fuse.c

@ -3829,7 +3829,7 @@ fuse_maintenance_loop(void *fuse_)
if(!f->conf.nogc && gc)
{
gc = lfmp_gc(&f->node_fmp);
msgbuf_gc();
// msgbuf_gc();
}
if(g_LOG_METRICS)

25
libfuse/lib/fuse_msgbuf.cpp

@ -23,14 +23,14 @@
#include <cstdint>
#include <cstdlib>
#include <mutex>
#include <stack>
#include <vector>
static std::uint32_t g_PAGESIZE = 0;
static std::uint32_t g_BUFSIZE = 0;
static std::mutex g_MUTEX;
static std::stack<fuse_msgbuf_t*> g_MSGBUF_STACK;
static std::vector<fuse_msgbuf_t*> g_MSGBUF_STACK;
static
__attribute__((constructor))
@ -38,6 +38,7 @@ void
msgbuf_constructor()
{
g_PAGESIZE = sysconf(_SC_PAGESIZE);
// +2 because to do O_DIRECT we need to offset the buffer to align
g_BUFSIZE = (g_PAGESIZE * (FUSE_MAX_MAX_PAGES + 2));
}
@ -98,8 +99,8 @@ msgbuf_alloc()
}
else
{
msgbuf = g_MSGBUF_STACK.top();
g_MSGBUF_STACK.pop();
msgbuf = g_MSGBUF_STACK.back();
g_MSGBUF_STACK.pop_back();
}
return msgbuf;
@ -117,7 +118,7 @@ msgbuf_free(fuse_msgbuf_t *msgbuf_)
return;
}
g_MSGBUF_STACK.push(msgbuf_);
g_MSGBUF_STACK.emplace_back(msgbuf_);
}
uint64_t
@ -131,15 +132,15 @@ msgbuf_alloc_count()
void
msgbuf_gc()
{
std::lock_guard<std::mutex> lck(g_MUTEX);
while(!g_MSGBUF_STACK.empty())
{
fuse_msgbuf_t *msgbuf;
std::vector<fuse_msgbuf_t*> oldstack;
msgbuf = g_MSGBUF_STACK.top();
g_MSGBUF_STACK.pop();
{
std::lock_guard<std::mutex> lck(g_MUTEX);
oldstack.swap(g_MSGBUF_STACK);
}
for(auto msgbuf: oldstack)
{
free(msgbuf->mem);
free(msgbuf);
}

Loading…
Cancel
Save