diff options
author | Noah Watkins <noahwatkins@gmail.com> | 2013-07-21 17:54:26 -0700 |
---|---|---|
committer | Noah Watkins <noahwatkins@gmail.com> | 2013-09-17 10:43:34 -0700 |
commit | 2ceb719ac45042a7441966392e77f9e7005bbbf6 (patch) | |
tree | 88eeac0e08e6ae5786bd5f545588a529bb811ec3 | |
parent | 80a7e3fbd57b0fee8f774edef946ce63537781e9 (diff) | |
download | ceph-2ceb719ac45042a7441966392e77f9e7005bbbf6.tar.gz |
wip: unsorted / combined patches
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
-rw-r--r-- | configure.ac | 7 | ||||
-rw-r--r-- | src/client/Client.cc | 2 | ||||
-rw-r--r-- | src/common/sctp_crc32.c | 2 | ||||
-rw-r--r-- | src/common/sync_filesystem.h | 2 | ||||
-rw-r--r-- | src/include/cephfs/libcephfs.h | 4 | ||||
-rw-r--r-- | src/include/compat.h | 14 | ||||
-rw-r--r-- | src/log/Log.cc | 5 | ||||
-rw-r--r-- | src/osd/OSD.cc | 9 | ||||
-rw-r--r-- | src/pybind/rados.py | 3 | ||||
-rw-r--r-- | src/test/system/cross_process_sem.cc | 4 | ||||
-rw-r--r-- | src/test/system/systest_runnable.cc | 10 | ||||
-rw-r--r-- | src/tools/rados/rados.cc | 2 |
12 files changed, 56 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac index e6a704fb1ef..7e4450cbcc3 100644 --- a/configure.ac +++ b/configure.ac @@ -123,7 +123,7 @@ AX_C_PRETTY_FUNC ACX_PTHREAD AC_SEARCH_LIBS([uuid_parse], [uuid], [], AC_MSG_FAILURE([no uuid library found])) AC_CHECK_LIB([m], [pow], [true], AC_MSG_FAILURE([libm not found])) -AC_CHECK_LIB([resolv], [__res_nquery], [true], AC_MSG_FAILURE([libresolv not found])) +#AC_CHECK_LIB([resolv], [__res_nquery], [true], AC_MSG_FAILURE([libresolv not found])) if test x"$linux" = x"yes"; then AC_CHECK_LIB([keyutils], [add_key], [true], AC_MSG_FAILURE([libkeyutils not found])) fi @@ -583,6 +583,11 @@ AC_CHECK_FUNC([pthread_spin_init], LIBS="$saved_LIBS" CFLAGS="$saved_CFLAGS" +AC_CHECK_FUNCS([on_exit]) + +AC_CHECK_HEADERS([stdint.h sys/types.h linux/types.h]) +AC_CHECK_HEADERS([sys/vfs.h sys/param.h sys/mount.h])h + AC_CHECK_TYPES(int8_t) AC_CHECK_TYPES(uint8_t) AC_CHECK_TYPES(int16_t) diff --git a/src/client/Client.cc b/src/client/Client.cc index f6a8a1bf1a6..709d632b235 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -5692,9 +5692,11 @@ int Client::_read(Fh *f, int64_t offset, uint64_t size, bufferlist *bl) if (!conf->client_debug_force_sync_read && (cct->_conf->client_oc && (have & CEPH_CAP_FILE_CACHE))) { +#ifndef DARWIN if (f->flags & O_RSYNC) { _flush_range(in, offset, size); } +#endif r = _read_async(f, offset, size, bl); } else { r = _read_sync(f, offset, size, bl); diff --git a/src/common/sctp_crc32.c b/src/common/sctp_crc32.c index 7e2678a2b7c..a7b6e32868d 100644 --- a/src/common/sctp_crc32.c +++ b/src/common/sctp_crc32.c @@ -44,6 +44,8 @@ __FBSDID("$FreeBSD: src/sys/netinet/sctp_crc32.c,v 1.8 2007/05/08 17:01:10 rrs E #if defined(__FreeBSD__) #include <sys/endian.h> +#elif defined(__APPLE__) +#include <machine/endian.h> #else #include <endian.h> #endif diff --git a/src/common/sync_filesystem.h b/src/common/sync_filesystem.h index eff18d20af0..1d17cef7472 100644 --- a/src/common/sync_filesystem.h +++ b/src/common/sync_filesystem.h @@ -16,7 +16,7 @@ #define CEPH_SYNC_FILESYSTEM_H #include <unistd.h> -#include <syscall.h> +//#include <syscall.h> #ifndef __CYGWIN__ # ifndef DARWIN diff --git a/src/include/cephfs/libcephfs.h b/src/include/cephfs/libcephfs.h index 2f69ba7a3b9..5b0884a09a7 100644 --- a/src/include/cephfs/libcephfs.h +++ b/src/include/cephfs/libcephfs.h @@ -22,7 +22,7 @@ #include <sys/socket.h> // FreeBSD compatibility -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__APPLE__) typedef off_t loff_t; typedef off_t off64_t; #endif @@ -34,7 +34,7 @@ extern "C" { /* * On FreeBSD the offset is 64 bit, but libc doesn't announce it in the way glibc does. */ -#if !defined(__FreeBSD__) && !defined(__USE_FILE_OFFSET64) +#if !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__USE_FILE_OFFSET64) # error libceph: must define __USE_FILE_OFFSET64 or readdir results will be corrupted #endif diff --git a/src/include/compat.h b/src/include/compat.h index a410acb35f6..35c71b534cd 100644 --- a/src/include/compat.h +++ b/src/include/compat.h @@ -12,6 +12,8 @@ #ifndef CEPH_COMPAT_H #define CEPH_COMPAT_H +#include "acconfig.h" + #if defined(__FreeBSD__) #define lseek64(fd, offset, whence) lseek(fd, offset, whence) #define ENODATA 61 @@ -19,4 +21,16 @@ #define MSG_MORE 0 #endif /* !__FreeBSD__ */ +#ifdef DARWIN + +#define TEMP_FAILURE_RETRY(expression) \ + ({ long int __result; \ + do __result = (long int) (expression); \ + while (__result == -1L && errno == EINTR); \ + __result; }) + +#define lseek64(fd, offset, whence) lseek(fd, offset, whence) + +#endif + #endif /* !CEPH_COMPAT_H */ diff --git a/src/log/Log.cc b/src/log/Log.cc index afeb1208002..a5eba2327f6 100644 --- a/src/log/Log.cc +++ b/src/log/Log.cc @@ -13,6 +13,7 @@ #include "common/safe_io.h" #include "common/Clock.h" #include "include/assert.h" +#include "include/compat.h" #define DEFAULT_MAX_NEW 100 #define DEFAULT_MAX_RECENT 10000 @@ -87,7 +88,11 @@ void Log::set_flush_on_exit() // assume that exit() won't race with ~Log(). if (m_indirect_this == NULL) { m_indirect_this = new (Log*)(this); +#ifdef HAVE_ON_EXIT on_exit(log_on_exit, m_indirect_this); +#else +# warning "Flush on exit not implemented. Need atexit." +#endif } } diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 76bdb02c0ad..6d19cce05eb 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -20,10 +20,15 @@ #include <ctype.h> #include <boost/scoped_ptr.hpp> -#if defined(DARWIN) || defined(__FreeBSD__) +#include "acconfig.h" + +#ifdef HAVE_SYS_PARAM_H #include <sys/param.h> +#endif + +#ifdef HAVE_SYS_MOUNT_H #include <sys/mount.h> -#endif // DARWIN || __FreeBSD__ +#endif #include "osd/PG.h" diff --git a/src/pybind/rados.py b/src/pybind/rados.py index a0e5bf42ba9..99d33d02e76 100644 --- a/src/pybind/rados.py +++ b/src/pybind/rados.py @@ -6,6 +6,7 @@ Copyright 2011, Hannu Valtonen <hannu.valtonen@ormod.com> from ctypes import CDLL, c_char_p, c_size_t, c_void_p, c_char, c_int, c_long, \ c_ulong, create_string_buffer, byref, Structure, c_uint64, c_ubyte, \ pointer, CFUNCTYPE +from ctypes.util import find_library import ctypes import errno import threading @@ -184,7 +185,7 @@ Rados object in state %s." % (self.state)) def __init__(self, rados_id=None, name=None, clustername=None, conf_defaults=None, conffile=None, conf=None, flags=0): - self.librados = CDLL('librados.so.2') + self.librados = CDLL('librados.2.dylib') self.cluster = c_void_p() self.rados_id = rados_id if rados_id is not None and not isinstance(rados_id, str): diff --git a/src/test/system/cross_process_sem.cc b/src/test/system/cross_process_sem.cc index 667ba1cc861..654e1830ce7 100644 --- a/src/test/system/cross_process_sem.cc +++ b/src/test/system/cross_process_sem.cc @@ -19,6 +19,10 @@ #include <stdlib.h> #include <sys/mman.h> +#ifndef MAP_ANONYMOUS +# define MAP_ANONYMOUS MAP_ANON +#endif + /* We put our cross-process semaphore into a page of memory mapped with mmap. */ struct cross_process_sem_data_t { diff --git a/src/test/system/systest_runnable.cc b/src/test/system/systest_runnable.cc index ec9b823db14..0d6ce0142f1 100644 --- a/src/test/system/systest_runnable.cc +++ b/src/test/system/systest_runnable.cc @@ -31,6 +31,8 @@ #include <unistd.h> #include <vector> +#include "acconfig.h" + #if defined(__FreeBSD__) #include <pthread_np.h> #endif @@ -42,8 +44,14 @@ static pid_t do_gettid(void) { #if defined(__linux__) return static_cast < pid_t >(syscall(SYS_gettid)); -#else +#elif defined(__FreeBSD__) return static_cast < pid_t >(pthread_getthreadid_np()); +#elif defined(DARWIN) + uint64_t tid; + pthread_threadid_np(NULL, &tid); + return static_cast < pid_t >(tid); +#else +# error "no thread id query function" #endif } diff --git a/src/tools/rados/rados.cc b/src/tools/rados/rados.cc index e8386959349..90fb2be5489 100644 --- a/src/tools/rados/rados.cc +++ b/src/tools/rados/rados.cc @@ -41,6 +41,8 @@ using namespace librados; #include <climits> #include <locale> +#include "include/compat.h" + #include "cls/lock/cls_lock_client.h" int rados_tool_sync(const std::map < std::string, std::string > &opts, |