Fedora 12 has been EOL for a long time. Remove the reference in the
RPM .spec file.
Since RHEL 5 support for Ceph is a work in progress, we won't remove
this entire python_sitelib / python_sitearch conditional for now, since
those are still needed on RHEL 5.
Add the rhel_version macro to make the conditional compatible with
SUSE's OBS.
Ken Dreyer [Wed, 24 Jun 2015 22:39:30 +0000 (16:39 -0600)]
ceph.spec.in: package rbd-replay-prep on all Fedoras
This reverts the change in commit 85517d611b7bf4cb6cbffcd2c65303be0d038264. Since we BuildRequire:
libbabeltrace-devel, autoconf will see that babeltrace is available
during the build, and make will build/install the rbd-replay-prep
utility.
This change also simplifies Fedora selection logic, because Fedora 19 is
EOL, so "%{fedora}" implies "Fedora 20 and above".
Owen Synge [Mon, 8 Jun 2015 15:48:55 +0000 (17:48 +0200)]
ceph.spec.in:BuildRequires sharutils
The uudecode binary is used to build Java-related components, and
uudecode is provided by the sharutils package on all supported
RPM platforms. When building with "--without=cephfs_java",
sharutils is not needed.
Thanks to Nathan Cutler <ncutler@suse.cz> for going into the
details with me.
On OBS without this patch we get the error message:
Nathan Cutler [Wed, 13 May 2015 12:57:48 +0000 (14:57 +0200)]
ceph.spec.in: include SUSE in _with_systemd
The master specfile newly defines a _with_systemd variable that should be true
for the set of distros that are using systemd. Since this set of distros
includes SUSE/openSUSE (at least for the more recent versions where ceph is
supported), this commit sets _with_systemdto true on SUSE/openSUSE.
Ken Dreyer [Thu, 9 Apr 2015 17:10:52 +0000 (11:10 -0600)]
ceph.spec.in: set _with_systemd on RHEL 7 and Fedora
Commit 71a5090bca049a43e30a7f0cf99141950ef9c5dd added a "_with_systemd"
conditional to the RPMs, but I erred with the version comparison
operator, so this only applied to RHEL 8+, not RHEL 7+.
Adjust the conditional so that it will really apply to RHEL 7+. While
we're here, add Fedora as well.
Signed-off-by: Ken Dreyer <kdreyer@redhat.com> Reported-by: Boris Ranto <branto@redhat.com>
(cherry picked from commit aa88364f30e2d2f254ade185a83ba263b48e2a73)
Ken Dreyer [Mon, 9 Mar 2015 20:14:57 +0000 (14:14 -0600)]
ceph.spec.in: fix handling of /var/run/ceph
Prior to this commit, we didn't install /var/run/ceph as a normal
directory. We used the %ghost directive and created the directory with
a "mkdir" command in %post.
This was lacking in several ways:
1) Simplicy: there is no need to use %ghost; other packages (eg.
mariadb) simply use a normal %dir for their socket directory.
2) RPM does not have control over the permissions of the /var/run/ceph
directory. This does not interact well with "rpm -V". Moreover,
once Ceph itself gets unprivileged user support, RPM itself won't
be able to set the permissions of the directory for a (future)
unprivileged UID.
3) On distributions that use systemd as an init system, /var/run is a
symlink to /run, which is tmpfs. This means that /var/run/ceph does
not persist across reboots on those systems.
Remove the %ghost directive; it makes more sense for RPM to simply
install this directory like the rest of the %files.
Add a "_with_systemd" conditional so we know which distros use systemd
as their init system. Add the /etc/tmpfiles.d/ceph.conf file on those
distros. See
http://www.freedesktop.org/software/systemd/man/tmpfiles.d.html
Nathan Cutler [Fri, 26 Jun 2015 11:13:33 +0000 (13:13 +0200)]
logrotate.conf: fixes for systemd
Before this patch, the command 'logrotate -f /etc/logrotate.d/ceph'
was generating an error "Failed to reload ceph.target: Job type reload is not
applicable for unit ceph.target".
Before we issue systemctl reload, check that there is at least
one active ceph-* service. (The hyphen is significant.)
Since we use grep, make the grep package a dependency.
Owen Synge [Mon, 26 Jan 2015 15:20:20 +0000 (16:20 +0100)]
New rich init system detection.
Uses both a database and detecting management commands to find init system.
Logs error is one of these two systems fails.
Raises error if both systems disgree.
Testing notes:
- works on SLE12
- works on openSUSE 13.1
- works on Scientific 6.4
- works on debian 7.7 (wheezy)
- works on debian 8 (jessie)
Owen Synge [Wed, 7 Jan 2015 10:36:24 +0000 (11:36 +0100)]
radosgw systemd support
Added a radosgw systemd support and associated prestart script.
- With improved checking over first revison.
- ceph-radosgw-prestart.sh now installed in /usr/lib/ceph-radosgw
Owen Synge [Wed, 3 Dec 2014 11:32:34 +0000 (12:32 +0100)]
Fix overflowing journel partitions.
This fixes bnc#896406. When useing ceph-disk to create a journel
parititon in the next available partition and thier is not enough
space ceph-disk did not provide a clear error message.
Jason Dillaman [Wed, 21 Oct 2015 17:12:48 +0000 (13:12 -0400)]
librbd: potential assertion failure during cache read
It's possible for a cache read from a clone to trigger a writeback if a
previous read op determined the object doesn't exist in the clone,
followed by a cached write to the non-existent clone object, followed
by another read request to the same object. This causes the cache to
flush the pending writeback ops while not holding the owner lock.
tests: robust test for the pool create crushmap test
The test that goes with f1e86be589803596e86acc964ac5c5c03b4038d8 to
verify that a bugous crush ruleset will prevent the creation of a pool
trying to use it was fragile. I depends on the implementation of the
erasure code lrc plugin and turns out to not work on i386.
The test is modified to use a fake crushtool that always returns false
and validate that it prevents the creation of a pool, which demonstrate
it is used for crushmap validation prior to the pool creation.
Conflicts:
src/crush/CrushTester.cc
in hammer the crushtool validation is via a shell
and not via an internal subprocess utility
src/tools/crushtool.cc
ceph_argparse_withint is preferred to ceph_argparse_witharg
make parsing 8601 more flexible by not restricting the length of seconds
to 5, this allows timestamp to be specified both as ms or us. Newer
keystone backends such as fernet token backend default to microseconds
when publishing iso8601 timestamps, so this allows these timestamps to
be allowed when specifying the token expiry time.
Fixes: #12761 Reported-by: Ian Unruh <ianunruh@gmail.com> Signed-off-by: Abhishek Lekshmanan <abhishek.lekshmanan@ril.com>
(cherry picked from commit 136242b5612b8bbf260910b1678389361e86d22a)
radosgw init script is unable to start radosgw daemon.
as it is relies on requiretty being disabled.
once init script start this daemon with sudo it fails
to start the daemon.
changing 'sudo' to 'su', it will fix this issue and
will also help running radosgw daemon with our new
"ceph" UID project.
Fixes: #13239
This fixes a regression introduced at commit abe4ec293d08b0314bf5c081ace2456073f3a22c.
The host var is a string, env->get() returns a char pointer, shouldn't
pass in NULL.
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
(cherry picked from commit 0d5730efc0054334897315dc23ba04f30548e36e) Signed-off-by: Robin H. Johnson <robin.johnson@dreamhost.com>
Yehuda Sadeh [Thu, 13 Aug 2015 17:59:32 +0000 (10:59 -0700)]
rgw: don't preserve acls when copying object
Fixes: #12370
When copying an object we need to use the acls we calculated earlier,
and not the source acls.
This was broken at e41d97c8e38bb60d7e09e9801c0179efe7af1734.
Sage Weil [Wed, 3 Jun 2015 18:57:34 +0000 (14:57 -0400)]
upstart: limit respawn to 3 in 30 mins (instead of 5 in 30s)
It may take tens of seconds to restart each time, so 5 in 30s does not stop
the crash on startup respawn loop in many cases. In particular, we'd like
to catch the case where the internal heartbeats fail.
This should be enough for all but the most sluggish of OSDs and capture
many cases of failure shortly after startup.
When accepting and "connect.connect_seq == existing->connect_seq",
existing->state maybe STATE_OPEN, STATE_STANDBY or STANDY_CONNECTING.
This commit only fix partial problem and want to assert
"(existing->state == STATE_CONNECTING)".
So later we added codes to catch
"(existing->state == STATE_OPEN || existing->state == STATE_STANDBY)"
before asserting.
Sage Weil [Fri, 11 Sep 2015 15:00:38 +0000 (11:00 -0400)]
osd/PG: peek_map_epoch: skip legacy PGs if infos object is missing
- pg is removed
- osd is stopped before pg is fully removed
- on restart, we ignore/skip the pg because its epoch is too old
- we upgrade to hammer and convert other pgs, skipping this one, and then
remove the legacy infos object
- hammer starts, tries to parse the legacy pg, and fails because the infos
object is gone, crashing.
The fix is to continue ignoring the zombie pg.
Fixes: #16030 Signed-off-by: Sage Weil <sage@redhat.com>
we may create a CephContext without calling common_init_finish(), then
delete the CephContext. In this case, ceph::crypto:init() is not called,
so CephContext::~CephContext() should not call ceph::crypto::shutdown().