summaryrefslogtreecommitdiffstats
path: root/src/server
diff options
context:
space:
mode:
authorSimon Rettberg2015-11-21 12:24:21 +0100
committerSimon Rettberg2015-11-21 12:24:21 +0100
commit4c94cb861dfbfe2a8c9c165165cbdbc062eaa39b (patch)
tree5ef29b28a920626b572a0d6dd378440ddb7f885b /src/server
parent[SERVER] Improve image related locking (diff)
downloaddnbd3-4c94cb861dfbfe2a8c9c165165cbdbc062eaa39b.tar.gz
dnbd3-4c94cb861dfbfe2a8c9c165165cbdbc062eaa39b.tar.xz
dnbd3-4c94cb861dfbfe2a8c9c165165cbdbc062eaa39b.zip
[FUSE] Start refactoring so we can handle multithread fuse
Diffstat (limited to 'src/server')
-rw-r--r--src/server/altservers.c4
-rw-r--r--src/server/image.c4
-rw-r--r--src/server/locks.c2
-rw-r--r--src/server/signal.c52
-rw-r--r--src/server/signal.h49
-rw-r--r--src/server/threadpool.c2
-rw-r--r--src/server/uplink.c4
7 files changed, 8 insertions, 109 deletions
diff --git a/src/server/altservers.c b/src/server/altservers.c
index 99cbdec..8eb07ec 100644
--- a/src/server/altservers.c
+++ b/src/server/altservers.c
@@ -6,9 +6,9 @@
#include "helper.h"
#include "globals.h"
#include "image.h"
-#include "signal.h"
+#include "../shared/signal.h"
#include "log.h"
-#include "../protocol.h"
+#include "../shared/protocol.h"
#include <stdlib.h>
#include <unistd.h>
#include <sys/errno.h>
diff --git a/src/server/image.c b/src/server/image.c
index fccc2a9..6f2cb6a 100644
--- a/src/server/image.c
+++ b/src/server/image.c
@@ -5,11 +5,11 @@
#include "uplink.h"
#include "locks.h"
#include "integrity.h"
-#include "../protocol.h"
+#include "../shared/protocol.h"
#include "sockhelper.h"
#include "altservers.h"
#include "server.h"
-#include "signal.h"
+#include "../shared/signal.h"
#include <assert.h>
#include <stdio.h>
diff --git a/src/server/locks.c b/src/server/locks.c
index 6c411e5..8c4fcfb 100644
--- a/src/server/locks.c
+++ b/src/server/locks.c
@@ -17,7 +17,7 @@
#include "globals.h"
#include "log.h"
#include "helper.h"
-#include "signal.h"
+#include "../shared/signal.h"
#define MAXLOCKS 2000
#define MAXTHREADS 500
diff --git a/src/server/signal.c b/src/server/signal.c
deleted file mode 100644
index a0697f8..0000000
--- a/src/server/signal.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "signal.h"
-#include <sys/eventfd.h>
-#include <poll.h>
-#include <inttypes.h>
-#include <errno.h>
-#include <unistd.h>
-
-int signal_new()
-{
- return eventfd( 0, EFD_NONBLOCK );
-}
-
-int signal_newBlocking()
-{
- return eventfd( 0, 0 );
-}
-
-int signal_call(int signalFd)
-{
- if ( signalFd < 0 ) return 0;
- static uint64_t one = 1;
- return write( signalFd, &one, sizeof one ) == sizeof one;
-}
-
-int signal_wait(int signalFd, int timeoutMs)
-{
- struct pollfd ps = {
- .fd = signalFd,
- .events = POLLIN
- };
- int ret = poll( &ps, 1, timeoutMs );
- if ( ret == 0 ) return SIGNAL_TIMEOUT;
- if ( ret == -1 ) return SIGNAL_ERROR;
- if ( ps.revents & ( POLLERR | POLLNVAL ) ) return SIGNAL_ERROR;
- return signal_clear( signalFd );
-}
-
-int signal_clear(int signalFd)
-{
- uint64_t ret;
- if ( read( signalFd, &ret, sizeof ret ) != sizeof ret ) {
- if ( errno == EAGAIN ) return 0;
- return SIGNAL_ERROR;
- }
- return (int)ret;
-}
-
-void signal_close(int signalFd)
-{
- close( signalFd );
-}
-
diff --git a/src/server/signal.h b/src/server/signal.h
deleted file mode 100644
index 0e2f85f..0000000
--- a/src/server/signal.h
+++ /dev/null
@@ -1,49 +0,0 @@
-#ifndef _SIGNAL_H_
-#define _SIGNAL_H_
-
-#define SIGNAL_OK (0)
-#define SIGNAL_TIMEOUT (-2)
-#define SIGNAL_ERROR (-1)
-
-/**
- * Create a new signal fd (eventfd), nonblocking.
- * @return >= 0 on success, which is the fd; < 0 on error
- */
-int signal_new();
-
-/**
- * Create a new signal fd (eventfd), blocking.
- * @return >= 0 on success, which is the fd; < 0 on error
- */
-int signal_newBlocking();
-
-/**
- * Trigger the given signal, so a wait or clear call will succeed.
- * @return SIGNAL_OK on success, SIGNAL_ERROR on error
- */
-int signal_call(int signalFd);
-
-/**
- * Wait for given signal, with an optional timeout.
- * If timeout == 0, just poll once.
- * If timeout < 0, wait forever.
- * @return > 0 telling how many times the signal was called,
- * SIGNAL_TIMEOUT if the timeout was reached,
- * SIGNAL_ERROR if some error occured
- */
-int signal_wait(int signalFd, int timeoutMs);
-
-/**
- * Clears any pending signals on this signal fd.
- * @return number of signals that were pending,
- * SIGNAL_ERROR if some error occured
- */
-int signal_clear(int signalFd);
-
-/**
- * Close the given signal.
- */
-void signal_close(int signalFd);
-
-#endif
-
diff --git a/src/server/threadpool.c b/src/server/threadpool.c
index ad146ea..41f1f0b 100644
--- a/src/server/threadpool.c
+++ b/src/server/threadpool.c
@@ -1,7 +1,7 @@
#include "globals.h"
#include "helper.h"
#include "threadpool.h"
-#include "signal.h"
+#include "../shared/signal.h"
#include "locks.h"
#include <pthread.h>
diff --git a/src/server/uplink.c b/src/server/uplink.c
index aa72896..a205164 100644
--- a/src/server/uplink.c
+++ b/src/server/uplink.c
@@ -6,8 +6,8 @@
#include "helper.h"
#include "altservers.h"
#include "helper.h"
-#include "../protocol.h"
-#include "signal.h"
+#include "../shared/protocol.h"
+#include "../shared/signal.h"
#include <pthread.h>
#include <sys/socket.h>