Merge remote-tracking branch 'ceph/jewel'

This commit is contained in:
Loic Dachary 2015-12-08 09:03:55 +01:00
commit 84ee7c3399
11 changed files with 34 additions and 15 deletions

View File

@ -1,4 +1,3 @@
==========================
Submitting Patches to Ceph
==========================
@ -260,17 +259,20 @@ A: The target branch depends on the nature of your change:
If you are adding a feature, target the "master" branch in your pull
request.
If you are fixing a bug, target the "next" branch in your pull request.
The Ceph core developers will periodically merge "next" into "master". When
this happens, the master branch will contain your fix as well.
If you are fixing a bug, target the named branch corresponding to the
major version that is currently in development. For example, if
Infernalis is the latest stable release and Jewel is development, target
the "jewel" branch for bugfixes. The Ceph core developers will
periodically merge this named branch into "master". When this happens,
the master branch will contain your fix as well.
If you are fixing a bug (see above) *and* the bug exists in older stable
branches (for example, the "dumpling" or "firefly" branches), then you
branches (for example, the "hammer" or "infernalis" branches), then you
should file a Redmine ticket describing your issue and fill out the
"Backport: <branchname>" form field. This will notify other developers that
your commit should be cherry-picked to these stable branches. For example,
you should set "Backport: firefly" in your Redmine ticket to indicate that
you are fixing a bug that exists on the "firefly" branch and that you
you should set "Backport: hammer" in your Redmine ticket to indicate that
you are fixing a bug that exists on the "hammer" branch and that you
desire that your change be cherry-picked to that branch.
Q: How to include Reviewed-by: tag(s) in my pull request?

View File

@ -599,6 +599,11 @@ export RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS | sed -e 's/i386/i486/'`
%{?_with_tcmalloc} \
CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS"
%if %{with lowmem_builder}
%if 0%{?jobs} > 8
%define _smp_mflags -j8
%endif
%endif
make %{?_smp_mflags}

View File

@ -62,7 +62,7 @@ CentOS|Fedora|RedHatEnterpriseServer)
CentOS|RedHatEnterpriseServer)
$SUDO yum install -y yum-utils
MAJOR_VERSION=$(lsb_release -rs | cut -f1 -d.)
if test $(lsb_release -si) == RedHatEnterpriseServer ; then
if test $(lsb_release -si) = RedHatEnterpriseServer ; then
$SUDO yum install subscription-manager
$SUDO subscription-manager repos --enable=rhel-$MAJOR_VERSION-server-optional-rpms
fi
@ -70,6 +70,9 @@ CentOS|Fedora|RedHatEnterpriseServer)
$SUDO yum install --nogpgcheck -y epel-release
$SUDO rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$MAJOR_VERSION
$SUDO rm -f /etc/yum.repos.d/dl.fedoraproject.org*
if test $(lsb_release -si) = CentOS -a $MAJOR_VERSION = 7 ; then
$SUDO yum-config-manager --enable cr
fi
;;
esac
sed -e 's/@//g' < ceph.spec.in > $DIR/ceph.spec

View File

@ -134,6 +134,8 @@ void MonCapGrant::expand_profile(EntityName name) const
profile_grants.push_back(MonCapGrant("mds", MON_CAP_ALL));
profile_grants.push_back(MonCapGrant("mon", MON_CAP_R));
profile_grants.push_back(MonCapGrant("osd", MON_CAP_R));
// This command grant is checked explicitly in MRemoveSnaps handling
profile_grants.push_back(MonCapGrant("osd pool rmsnap"));
profile_grants.push_back(MonCapGrant("log", MON_CAP_W));
}
if (profile == "osd" || profile == "mds" || profile == "mon") {

View File

@ -2278,7 +2278,8 @@ bool OSDMonitor::preprocess_remove_snaps(MonOpRequestRef op)
MonSession *session = m->get_session();
if (!session)
goto ignore;
if (!session->is_capable("osd", MON_CAP_R | MON_CAP_W)) {
if (!session->caps.is_capable(g_ceph_context, session->entity_name,
"osd", "osd pool rmsnap", {}, true, true, false)) {
dout(0) << "got preprocess_remove_snaps from entity with insufficient caps "
<< session->caps << dendl;
goto ignore;

View File

@ -90,7 +90,7 @@ public:
ClassFilter *get_filter(const std::string &filter_name)
{
Mutex::Locker l(handler->mutex);
std::map<std::string, ClassFilter>::iterator i = filters_map.find(name);
std::map<std::string, ClassFilter>::iterator i = filters_map.find(filter_name);
if (i == filters_map.end()) {
return NULL;
} else {

View File

@ -2282,6 +2282,8 @@ void PG::split_into(pg_t child_pgid, PG *child, unsigned split_bits)
split_ops(child, split_bits);
_split_into(child_pgid, child, split_bits);
child->on_new_interval();
child->dirty_info = true;
child->dirty_big_info = true;
dirty_info = true;

View File

@ -16,6 +16,7 @@ using namespace std;
#include "common/ceph_argparse.h"
#include "common/Formatter.h"
#include "common/errno.h"
#include "common/safe_io.h"
#include "global/global_init.h"
@ -668,7 +669,7 @@ static int read_input(const string& infile, bufferlist& bl)
do {
char buf[READ_CHUNK];
r = read(fd, buf, READ_CHUNK);
r = safe_read(fd, buf, READ_CHUNK);
if (r < 0) {
err = -errno;
cerr << "error while reading input" << std::endl;

View File

@ -1305,6 +1305,7 @@ class RGWWatcher : public librados::WatchCtx2 {
watcher->reinit();
}
};
shared_ptr<C_ReinitWatch> reinit_watch;
public:
RGWWatcher(RGWRados *r, int i, const string& o) : rados(r), index(i), oid(o), watch_handle(0) {}
void handle_notify(uint64_t notify_id,
@ -1325,7 +1326,8 @@ public:
lderr(rados->ctx()) << "RGWWatcher::handle_error cookie " << cookie
<< " err " << cpp_strerror(err) << dendl;
rados->remove_watcher(index);
rados->schedule_context(new C_ReinitWatch(this));
reinit_watch.reset(new C_ReinitWatch(this));
rados->schedule_context(reinit_watch.get());
}
void reinit() {

View File

@ -4,6 +4,7 @@
#include <errno.h>
#include "common/errno.h"
#include "common/safe_io.h"
#include "include/types.h"
@ -141,9 +142,9 @@ static int ext_mime_map_init(CephContext *cct, const char *ext_map)
goto done;
}
ret = read(fd, buf, st.st_size + 1);
ret = safe_read(fd, buf, st.st_size + 1);
if (ret != st.st_size) {
// huh? file size has changed, what are the odds?
// huh? file size has changed?
ldout(cct, 0) << "ext_mime_map_init(): raced! will retry.." << dendl;
free(buf);
close(fd);

View File

@ -24,7 +24,7 @@ COPY install-deps.sh /root/
COPY ceph.spec.in /root/
# http://jperrin.github.io/centos/2014/09/25/centos-docker-and-systemd/
RUN yum -y swap -- remove fakesystemd systemd-libs systemd-container -- install systemd systemd-libs && (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done) && rm -f /lib/systemd/system/multi-user.target.wants/* && rm -f /etc/systemd/system/*.wants/* && rm -f /lib/systemd/system/local-fs.target.wants/* && rm -f /lib/systemd/system/sockets.target.wants/*udev* && rm -f /lib/systemd/system/sockets.target.wants/*initctl* && rm -f /lib/systemd/system/basic.target.wants/* && rm -f /lib/systemd/system/anaconda.target.wants/* && yum install -y redhat-lsb-core
RUN yum install -y yum-utils && yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && yum install --nogpgcheck -y epel-release && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && rm /etc/yum.repos.d/dl.fedoraproject.org*
RUN yum install -y yum-utils && yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && yum install --nogpgcheck -y epel-release && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && rm /etc/yum.repos.d/dl.fedoraproject.org* && yum-config-manager --enable cr
# build dependencies
RUN cd /root ; ./install-deps.sh
# development tools