Commit Graph

329 Commits

Author SHA1 Message Date
Ilya Dryomov
1f5b796f58 FileStore: introduce XfsFileStoreBackend class
Introduce XfsFileStoreBackend class, currently the only filestore
backend implementing SETALLOCHINT op.  This commit adds a build-time
dependency on libxfs as xfs-specific ioctl (XFS_IOC_FSSETXATTR /
XFS_XFLAG_EXTSIZE) is used to implement the new set_alloc_hint()
method.

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
2014-03-03 20:33:44 +02:00
Ken Dreyer
c5c7f6c8e8 Merge branch 'next'
Conflicts:
	src/test/admin_socket.cc

Signed-off-by: Ken Dreyer <ken.dreyer@inktank.com>
2014-02-20 03:06:00 +00:00
Ken Dreyer
1bca9c5c41 v0.77 2014-02-19 22:54:44 +00:00
Ilya Dryomov
a5f479c2aa configure: fix F_SETPIPE_SZ detection
Currently CEPH_HAVE_SETPIPE_SZ is not set even if F_SETPIPE_SZ is
available, because AC_COMPILE_IFELSE test program as written always
fails to compile.  F_SETPIPE_SZ is a macro, so use AC_EGREP_CPP which
works on the preprocessor output instead of trying to compile.

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
2014-02-10 19:37:30 +02:00
Ilya Dryomov
450163ec40 configure: don't check for arpa/nameser_compat.h twice
Nuke redundant check and move the real one into the common
AC_CHECK_HEADERS stanza.

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
2014-02-10 19:37:30 +02:00
Ken Dreyer
3b990136bf v0.76 2014-02-03 18:26:25 +00:00
Ken Dreyer
03d7d97d5d Merge branch 'next' 2014-01-14 16:16:41 +00:00
Ken Dreyer
946d603695 v0.75 2014-01-13 21:07:01 +00:00
Sage Weil
5300ed9428 Merge pull request #1043 from ceph/port/misc
misc portability patches

Reviewed-by: Sage Weil <sage@inktank.com>
2014-01-06 23:00:05 -08:00
Jonathan Dieter
822ad58867 configure: support Automake 1.12
Signed-off-by: Jonathan Dieter <jdieter@lesbg.com>
Signed-off-by: Ken Dreyer <ken.dreyer@inktank.com>
2014-01-06 22:26:17 -07:00
Noah Watkins
ef6a56aa26 keyutils: handle non-linux platform
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2014-01-04 09:18:04 -08:00
Sage Weil
1f47a5b12e Merge pull request #1035 from ceph/port/bitsandints
endianess and integer types

Reviewed-by: Sage Weil <sage@inktank.com>
2014-01-02 13:52:40 -08:00
Noah Watkins
8220549315 inttypes: detect and define missing integer types
Working around missing integer types is pretty easy. For example, the
__u32 family are Linux-specific types, and using these in Ceph
internally is fine because we can typedef them.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2014-01-02 11:03:48 -08:00
Gary Lowell
fe3fd5fb4a Merge branch 'next' 2014-01-01 07:53:37 +00:00
Gary Lowell
c165483bc7 v0.74 2013-12-30 21:03:17 +00:00
Noah Watkins
1fec818f7c spinlock: add generic spinlock implementation
Adds a ceph_spinlock_t implementation that will use pthread_spinlock_t
if available, and otherwise reverts to pthread_mutex_t. Note that this
spinlock is not intended to be used in process-shared memory.

Switches implementation in:

  ceph_context
  SimpleMessenger
  atomic_t

Only ceph_context initialized its spinlock with PTHREAD_PROCESS_SHARED.
However, there does not appear to be any instance in which CephContext
is allocated in shared memory, and thus can use the default private
memory space behavior.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-12-28 14:43:14 -08:00
Sage Weil
b8fb366eab Merge pull request #837 from ceph/port/fallocate
FileJournal: zero-fill in-lieu of posix_fallocate

We may want to change that to a #warning later...

Reviewed-by: Sage Weil <sage@inktank.com>
2013-12-26 21:33:39 -08:00
Sage Weil
1597d4e9f5 Merge pull request #951 from ceph/wip-linux-version
common: introduce get_linux_version()

Reviewed-by: Sage Weil <sage@inktank.com>
2013-12-16 09:27:43 -08:00
Ilya Dryomov
fcf6e9878b common: introduce get_linux_version()
get_linux_version() returns a version of the currently running kernel,
encoded as in int, and is contained in common/linux_version.[ch].

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
2013-12-16 18:57:21 +02:00
Ilya Dryomov
a2babe27e8 configure: break up AC_CHECK_HEADERS into one header-file per line
Break up AC_CHECK_HEADERS macro into one header-file per line so it's
easier to read and make changes.

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
2013-12-16 18:57:21 +02:00
Ilya Dryomov
462b3898e5 rbd: match against whole disks on unmap
Currently the way 'rbd unmap' translates a user-provided block device
into an rbd id is it matches the major number of the specified device
against /sys/bus/rbd/devices/<id>/major for each rbd mapping and
declares success on the first match.  This works for both entire disks
and partitions, because under the current device number allocation
scheme, each mapping means a new major number.

In preparation for support for single-major device number allocation
scheme, which would require matching both major and minor numbers, make
sure to always match against entire disk device numbers, by converting
the specified device major:minor pair into wholdedisk major:minor pair.
To achive that, use the libblkid library, which accomplishes this goal
by walking stable sysfs structures.

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
2013-12-13 17:40:52 +02:00
Gary Lowell
e5a02c33e2 Merge branch 'next' 2013-12-10 21:00:14 +00:00
Gary Lowell
d8ad51ee8a v0.73 2013-12-10 04:55:36 +00:00
Noah Watkins
539fe26109 wbthrottle: use feature check for fdatasync
Checking for fdatasync uses the same approach as the qemu configure
script. The relevant commit is d1722a27f552a22561104210e0afad4577878e53.
Here is a copy of the commit message which explains the check:

Under Darwin, a symbol exists for the fdatasync() function, so that our
link test succeeds. However _POSIX_SYNCHRONIZED_IO is set to '-1'.

According to POSIX:2008, a value of -1 means the feature is not
supported.
A value of 0 means supported at compilation time, and a value greater 0
means supported at both compilation and run time.

Enable fdatasync() only if _POSIX_SYNCHRONIZED_IO is '>0'.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-12-07 10:37:00 -08:00
Sage Weil
51cd75080d Merge pull request #838 from xinglin/boost-program-option-check
autoconf: add check for the boost_program_options library

Reviewed-by: Noah Watkins <noah.watkins@inktank.com>
2013-11-29 22:25:28 -08:00
Sage Weil
444ddaef7b Merge pull request #829 from ceph/port/detect-clang
conf: use better clang detection
2013-11-29 22:24:34 -08:00
Josh Durgin
29ef3d4607 Merge branch 'wip-zero-copy-bufferlist-last'
Reviewed-by: Samuel Just <sam.just@inktank.com>
2013-11-25 17:12:03 -08:00
Josh Durgin
be29b3471c buffer: attempt to size raw_pipe buffers
Make sure the requested length is below the maximum pipe size for now,
since we're only using one pipe and splicing once into and out of
it. The default max is 1MB on recent kernels, so this isn't such a
terrible limitation.

To get around this we could use multiple pipes, or keep both source and
destination fds open at the same time and call splice many times. This
is more usual usage for splice, but would require a lot more work to
restructure the filestore and messenger to handle it.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
2013-11-22 16:14:03 -08:00
Josh Durgin
30bc0e2791 safe_io: add functions for handling splice
Like the other functions, these don't handle non-blocking I/O.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
2013-11-22 16:14:03 -08:00
Xing Lin
125582e08e autoconf: add check for the boost_program_options library
check for the existence of boost_program_options library in
configure.ac since several files need that library

Signed-off-by: Xing Lin <xinglin@cs.utah.edu>
2013-11-10 17:06:55 -07:00
Noah Watkins
cfb82a1759 filejournal: add journal pre-allocate for osx
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-11-10 15:50:13 -08:00
Sage Weil
3596b4cfdb Merge pull request #823 from ceph/port/detect-libresolv
autoconf: check for res_nquery explicitly
2013-11-09 00:36:08 -08:00
Sage Weil
3c70da20e3 Merge pull request #834 from ceph/port/stat
client: use platform-specific stat time members

Reviewed-by: Sage Weil <sage@inktank.com>
2013-11-08 00:26:17 -08:00
Gary Lowell
aef3378bd7 Merge branch 'next' 2013-11-08 05:19:11 +00:00
Noah Watkins
01f7b463d1 client: use platform-specific stat time members
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-11-07 15:48:05 -08:00
Gary Lowell
5832e2603c v0.72 2013-11-07 20:27:35 +00:00
Noah Watkins
afb3566b18 conf: use better clang detection
Handle case where compiler isn't called 'clang'. This is slightly
modified from the version here:
http://src.chromium.org/svn/branches/1312/src/third_party/mesa/MesaLib/configure.ac

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-11-06 14:33:52 -08:00
Noah Watkins
ac044812d0 assert: choose function-var name on non-gnu
Selects __PRETTY_FUNCTION__ or __func__. Linux assumes GNU, and chooses
__PRETTY_FUNCTION__ if gcc/g++ versions are favorable.

This also includes a fix in ax_c_var_func.m4:

AC_TRY_COMPILE will wrap the test in main{}, and then GCC will complain
about nested functions. Just use the original main{} body.

diff --git a/m4/ax_c_var_func.m4 b/m4/ax_c_var_func.m4
index 0ad7d2b..8b57563 100644
--- a/m4/ax_c_var_func.m4
+++ b/m4/ax_c_var_func.m4
@@ -57,9 +57,9 @@ AC_DEFUN([AX_C_VAR_FUNC],
 [AC_REQUIRE([AC_PROG_CC])
 AC_CACHE_CHECK(whether $CC recognizes __func__, ac_cv_c_var_func,
 AC_TRY_COMPILE(,
-[int main() {
+[
 char *s = __func__;
-}],
+],
 AC_DEFINE(HAVE_FUNC,,
 [Define if the C complier supports __func__]) ac_cv_c_var_func=yes,
 ac_cv_c_var_func=no) )

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-11-06 14:16:28 -08:00
Noah Watkins
81a3ea1bc0 rgw: add compat file for name service macros
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-11-05 13:38:48 -08:00
Noah Watkins
1cc8558b60 autoconf: check for res_nquery explicitly
Creates a test that checks explicitly for res_nquery, which can be a
macro in resolv.h. Defines RESOLV_LIBS that contains any libraries that
need to be linked against.

Notes from later fix:

Based on the 2013-09-30 version of wip-port.  On FreeBSD, one must
include netinet/in.h to get the definitions for stuff in resolv.h.
Also, resolv.h's functions are part of libc instead of libresolv.

Signed-off-by: Alan Somers <asomers@gmail.com>
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-11-05 08:24:11 -08:00
Sage Weil
74873fd110 Merge pull request #816 from ceph/wip-fadvise
wbthrottle: use posix_fadvise if available

Reviewed-by: Sage Weil <sage@inktank.com>
2013-11-05 05:31:57 -08:00
Noah Watkins
6821a6e83a assert: use feature test for static_cast
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-11-04 13:14:11 -08:00
Noah Watkins
330a6a769b wbthrottle: use posix_fadvise if available
Only adding information about data usage. This won't effect correctness.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-11-04 13:01:33 -08:00
Noah Watkins
59a55fdaaf pipe: use pipe2 feature test; check fcntl retval
Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-11-01 16:21:14 -07:00
Gary Lowell
e11c9756af v0.72-rc1 2013-10-30 00:45:10 +00:00
Gary Lowell
e509cb1e69 v0.71 2013-10-17 09:19:36 +00:00
Gary Lowell
7efbebe20f Merge branch 'next' 2013-10-05 02:11:36 +00:00
Gary Lowell
e3bb0656d9 v0.70 2013-10-04 20:12:24 +00:00
Sage Weil
b683005c21 Merge pull request #607 from ceph/prctl-getname-test
code_env: use feature test for PR_GET_NAME support

Reviewed-by: Sage Weil <sage@inktank.com>
2013-09-23 10:14:07 -07:00
Noah Watkins
f3718c29bb code_env: use feature test for PR_GET_NAME support
Function `get_process_name` has platform specific dependencies. Check
for Linux prctl function and correct command flag.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
2013-09-19 15:00:31 -07:00