#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
-#include <sys/xattr.h>
-
#include <stdlib.h>
#include <semaphore.h>
#include <time.h>
#ifdef __linux__
#include <limits.h>
+#include <sys/xattr.h>
+#elif __FreeBSD__
+#include <sys/types.h>
+#include <sys/wait.h>
#endif
#include "include/ceph_assert.h"
+#include "ceph_pthread_self.h"
// Startup common: create and mount ceph fs
#define STARTUP_CEPH() do { \
ASSERT_GE(fd, 0);
ASSERT_EQ(-EWOULDBLOCK,
- ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
+ ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
PING_MAIN(1); // (1)
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
PING_MAIN(2); // (2)
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
PING_MAIN(3); // (3)
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH, ceph_pthread_self()));
PING_MAIN(4); // (4)
WAIT_MAIN(1); // (R1)
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
PING_MAIN(5); // (5)
WAIT_MAIN(2); // (R2)
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
PING_MAIN(6); // (6)
WAIT_MAIN(3); // (R3)
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
PING_MAIN(7); // (7)
}
ASSERT_GE(fd, 0);
// Lock
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
// Start locker thread
pthread_t thread;
NOT_WAIT_WORKER(2); // (2)
// Unlock
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
// Shall have lock
// Synchronization point with thread (failure: thread is dead)
// Wait for thread to share lock
WAIT_WORKER(4); // (4)
ASSERT_EQ(-EWOULDBLOCK,
- ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, pthread_self()));
+ ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, ceph_pthread_self()));
// Wake up thread to unlock shared lock
PING_WORKER(1); // (R1)
// Now we can lock exclusively
// Upgrade to exclusive lock (as per POSIX)
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
// Wake up thread to lock shared lock
PING_WORKER(2); // (R2)
NOT_WAIT_WORKER(6); // (6)
// Release lock ; thread will get it
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
WAIT_WORKER(6); // (6)
// We no longer have the lock
ASSERT_EQ(-EWOULDBLOCK,
- ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
+ ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
ASSERT_EQ(-EWOULDBLOCK,
- ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, pthread_self()));
+ ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, ceph_pthread_self()));
// Wake up thread to unlock exclusive lock
PING_WORKER(3); // (R3)
WAIT_WORKER(7); // (7)
// We can lock it again
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
// Cleanup
void *retval = (void*) (uintptr_t) -1;
ASSERT_GE(fd, 0);
// Lock
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
// Start locker thread
pthread_t thread[2];
NOT_WAIT_WORKER(2); // (2)
// Unlock
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
// Shall have lock
TWICE(// Synchronization point with thread (failure: thread is dead)
// Wait for thread to share lock
TWICE(WAIT_WORKER(4)); // (4)
ASSERT_EQ(-EWOULDBLOCK,
- ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, pthread_self()));
+ ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, ceph_pthread_self()));
// Wake up thread to unlock shared lock
TWICE(PING_WORKER(1); // (R1)
// Now we can lock exclusively
// Upgrade to exclusive lock (as per POSIX)
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX, ceph_pthread_self()));
TWICE( // Wake up thread to lock shared lock
PING_WORKER(2); // (R2)
NOT_WAIT_WORKER(6)); // (6)
// Release lock ; thread will get it
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
TWICE(WAIT_WORKER(6); // (6)
// We no longer have the lock
ASSERT_EQ(-EWOULDBLOCK,
- ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
+ ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
ASSERT_EQ(-EWOULDBLOCK,
- ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, pthread_self()));
+ ceph_flock(cmount, fd, LOCK_SH | LOCK_NB, ceph_pthread_self()));
// Wake up thread to unlock exclusive lock
PING_WORKER(3); // (R3)
);
// We can lock it again
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, pthread_self()));
- ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_EX | LOCK_NB, ceph_pthread_self()));
+ ASSERT_EQ(0, ceph_flock(cmount, fd, LOCK_UN, ceph_pthread_self()));
// Cleanup
void *retval = (void*) (uintptr_t) -1;
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
-#include <sys/xattr.h>
#include <stdlib.h>
#include <semaphore.h>
#ifdef __linux__
#include <limits.h>
+#include <sys/xattr.h>
+#elif __FreeBSD__
+#include <sys/types.h>
+#include <sys/wait.h>
#endif
#include "include/ceph_assert.h"
+#include "ceph_pthread_self.h"
// Startup common: create and mount ceph fs
#define STARTUP_CEPH() do { \
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
PING_MAIN(1); // (1)
lock1.l_type = F_WRLCK;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
PING_MAIN(2); // (2)
lock1.l_type = F_UNLCK;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
PING_MAIN(3); // (3)
lock1.l_type = F_RDLCK;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
PING_MAIN(4); // (4)
WAIT_MAIN(1); // (R1)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
PING_MAIN(5); // (5)
WAIT_MAIN(2); // (R2)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
PING_MAIN(6); // (6)
WAIT_MAIN(3); // (R3)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
PING_MAIN(7); // (7)
ASSERT_EQ(0, ceph_ll_close(cmount, fh));
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
// Start locker thread
pthread_t thread;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
// Shall have lock
// Synchronization point with thread (failure: thread is dead)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
lock1.l_type = F_RDLCK;
lock1.l_whence = SEEK_SET;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
// Wake up thread to unlock shared lock
PING_WORKER(1); // (R1)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
// Wake up thread to lock shared lock
PING_WORKER(2); // (R2)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
WAIT_WORKER(6); // (6)
// We no longer have the lock
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
lock1.l_type = F_RDLCK;
lock1.l_whence = SEEK_SET;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
// Wake up thread to unlock exclusive lock
PING_WORKER(3); // (R3)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
lock1.l_type = F_UNLCK;
lock1.l_whence = SEEK_SET;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
// Cleanup
void *retval = (void*) (uintptr_t) -1;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
// Start locker thread
pthread_t thread[2];
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
// Shall have lock
TWICE(// Synchronization point with thread (failure: thread is dead)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
lock1.l_type = F_RDLCK;
lock1.l_whence = SEEK_SET;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
// Wake up thread to unlock shared lock
TWICE(PING_WORKER(1); // (R1)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), true));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), true));
TWICE( // Wake up thread to lock shared lock
PING_WORKER(2); // (R2)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
TWICE(WAIT_WORKER(6); // (6)
// We no longer have the lock
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
lock1.l_type = F_RDLCK;
lock1.l_whence = SEEK_SET;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
// Wake up thread to unlock exclusive lock
PING_WORKER(3); // (R3)
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
lock1.l_type = F_UNLCK;
lock1.l_whence = SEEK_SET;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(0, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
// Cleanup
void *retval = (void*) (uintptr_t) -1;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
lock1.l_type = F_RDLCK;
lock1.l_whence = SEEK_SET;
lock1.l_start = 0;
lock1.l_len = 1024;
lock1.l_pid = getpid();
- ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, pthread_self(), false));
+ ASSERT_EQ(-EAGAIN, ceph_ll_setlk(cmount, fh, &lock1, ceph_pthread_self(), false));
// Wake up process to unlock exclusive lock
PING_WORKER(4); // (R4)