summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Wilkins <john.wilkins@inktank.com>2013-05-09 12:49:59 -0700
committerJohn Wilkins <john.wilkins@inktank.com>2013-05-09 12:49:59 -0700
commitc55c6abb6055ff7983dd7b1b7c7903e8b08e23b4 (patch)
treecddead6fe49df7f61286b205b08eee7db246ef9d
parent270ca6232d297af53ddbb79543e604c514adb92e (diff)
parentc19146163632b1125b5df9ae573fb654606a57c8 (diff)
downloadceph-c55c6abb6055ff7983dd7b1b7c7903e8b08e23b4.tar.gz
Merge branch 'master' of https://github.com/ceph/ceph
-rw-r--r--src/librbd/librbd.cc6
-rw-r--r--src/mds/MDCache.cc5
-rw-r--r--src/mon/Monitor.cc1
-rw-r--r--src/os/FileStore.cc2
-rw-r--r--src/osd/OSD.cc2
-rw-r--r--src/rados.cc12
-rw-r--r--src/rbd.cc5
-rw-r--r--src/rgw/rgw_admin.cc10
-rw-r--r--src/rgw/rgw_bucket.h2
-rw-r--r--src/rgw/rgw_rados.cc9
-rw-r--r--src/rgw/rgw_user.cc18
-rw-r--r--src/tools/ceph-filestore-dump.cc12
12 files changed, 52 insertions, 32 deletions
diff --git a/src/librbd/librbd.cc b/src/librbd/librbd.cc
index 9513e1e5f2c..89bbe595752 100644
--- a/src/librbd/librbd.cc
+++ b/src/librbd/librbd.cc
@@ -692,7 +692,8 @@ extern "C" int rbd_open(rados_ioctx_t p, const char *name, rbd_image_t *image,
librbd::ImageCtx *ictx = new librbd::ImageCtx(name, "", snap_name, io_ctx,
false);
int r = librbd::open_image(ictx);
- *image = (rbd_image_t)ictx;
+ if (r >= 0)
+ *image = (rbd_image_t)ictx;
return r;
}
@@ -704,7 +705,8 @@ extern "C" int rbd_open_read_only(rados_ioctx_t p, const char *name,
librbd::ImageCtx *ictx = new librbd::ImageCtx(name, "", snap_name, io_ctx,
true);
int r = librbd::open_image(ictx);
- *image = (rbd_image_t)ictx;
+ if (r >= 0)
+ *image = (rbd_image_t)ictx;
return r;
}
diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc
index 9df91b47961..191d04d6e6e 100644
--- a/src/mds/MDCache.cc
+++ b/src/mds/MDCache.cc
@@ -10869,7 +10869,7 @@ void MDCache::dump_cache(const char *fn)
string t = tt.str();
r = safe_write(fd, t.c_str(), t.length());
if (r < 0)
- return;
+ goto out;
for (CDir::map_t::iterator q = dir->items.begin();
q != dir->items.end();
@@ -10880,12 +10880,13 @@ void MDCache::dump_cache(const char *fn)
string u = uu.str();
r = safe_write(fd, u.c_str(), u.length());
if (r < 0)
- return;
+ goto out;
}
dir->check_rstats();
}
}
+ out:
::close(fd);
}
diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc
index 56cd291cd24..376b670bbdc 100644
--- a/src/mon/Monitor.cc
+++ b/src/mon/Monitor.cc
@@ -2624,6 +2624,7 @@ void Monitor::handle_command(MMonCommand *m)
} else if (string(args[0]) == "df") {
if (args.size() > 1) {
if (string(args[1]) != "detail") {
+ delete jf;
r = -EINVAL;
rs = "usage: df [detail]";
goto out;
diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc
index 140289babc4..332019b68cc 100644
--- a/src/os/FileStore.cc
+++ b/src/os/FileStore.cc
@@ -4015,7 +4015,7 @@ int FileStore::_setattrs(coll_t cid, const hobject_t& oid, map<string,bufferptr>
r = _fsetattrs(fd, inline_to_set);
if (r < 0)
- return r;
+ goto out_close;
if (!omap_remove.empty()) {
assert(g_conf->filestore_xattr_use_omap);
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index d27a3b51a3c..c812e1326b6 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -170,6 +170,7 @@ OSDService::OSDService(OSD *osd) :
scrubs_active(0),
watch_lock("OSD::watch_lock"),
watch_timer(osd->client_messenger->cct, watch_lock),
+ next_notif_id(0),
backfill_request_lock("OSD::backfill_request_lock"),
backfill_request_timer(g_ceph_context, backfill_request_lock, false),
last_tid(0),
@@ -905,6 +906,7 @@ OSD::OSD(int id, Messenger *internal_messenger, Messenger *external_messenger,
heartbeat_dispatcher(this),
stat_lock("OSD::stat_lock"),
finished_lock("OSD::finished_lock"),
+ test_ops_hook(NULL),
op_wq(this, g_conf->osd_op_thread_timeout, &op_tp),
peering_wq(this, g_conf->osd_op_thread_timeout, &op_tp, 200),
map_lock("OSD::map_lock"),
diff --git a/src/rados.cc b/src/rados.cc
index 8d06d2fa593..69a97a91748 100644
--- a/src/rados.cc
+++ b/src/rados.cc
@@ -192,25 +192,28 @@ static int do_get(IoCtx& io_ctx, const char *objname, const char *outfile, unsig
}
uint64_t offset = 0;
+ int ret;
while (true) {
bufferlist outdata;
- int ret = io_ctx.read(oid, outdata, op_size, offset);
+ ret = io_ctx.read(oid, outdata, op_size, offset);
if (ret <= 0) {
- return ret;
+ goto out;
}
ret = outdata.write_fd(fd);
if (ret < 0) {
cerr << "error writing to file: " << cpp_strerror(ret) << std::endl;
- return ret;
+ goto out;
}
if (outdata.length() < op_size)
break;
offset += outdata.length();
}
+ ret = 0;
+ out:
if (fd != 1)
TEMP_FAILURE_RETRY(::close(fd));
- return 0;
+ return ret;
}
static int do_copy(IoCtx& io_ctx, const char *objname, IoCtx& target_ctx, const char *target_obj)
@@ -412,6 +415,7 @@ static int do_put(IoCtx& io_ctx, const char *objname, const char *infile, int op
ret = 0;
out:
TEMP_FAILURE_RETRY(close(fd));
+ delete[] buf;
return ret;
}
diff --git a/src/rbd.cc b/src/rbd.cc
index 044442eb33b..79860c2d772 100644
--- a/src/rbd.cc
+++ b/src/rbd.cc
@@ -1301,7 +1301,7 @@ static int do_import(librbd::RBD &rbd, librados::IoCtx& io_ctx,
if (fd < 0) {
r = -errno;
cerr << "rbd: error opening " << path << std::endl;
- return r;
+ goto done2;
}
r = fstat(fd, &stat_buf);
@@ -1394,7 +1394,8 @@ static int do_import(librbd::RBD &rbd, librados::IoCtx& io_ctx,
pc.finish();
close(fd);
}
-
+ done2:
+ delete[] p;
return r;
}
diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc
index edbe887c208..fff32ca435d 100644
--- a/src/rgw/rgw_admin.cc
+++ b/src/rgw/rgw_admin.cc
@@ -399,24 +399,26 @@ static int read_input(const string& infile, bufferlist& bl)
#define READ_CHUNK 8196
int r;
+ int err;
do {
char buf[READ_CHUNK];
r = read(fd, buf, READ_CHUNK);
if (r < 0) {
- int err = -errno;
+ err = -errno;
cerr << "error while reading input" << std::endl;
- return err;
+ goto out;
}
bl.append(buf, r);
} while (r > 0);
+ err = 0;
+ out:
if (infile.size()) {
close(fd);
}
-
- return 0;
+ return err;
}
template <class T>
diff --git a/src/rgw/rgw_bucket.h b/src/rgw/rgw_bucket.h
index 9eb16cf3707..e2f4d5eee40 100644
--- a/src/rgw/rgw_bucket.h
+++ b/src/rgw/rgw_bucket.h
@@ -173,7 +173,7 @@ class RGWBucket
private:
public:
- RGWBucket() : store(NULL), failure(false) {}
+ RGWBucket() : store(NULL), handle(NULL), failure(false) {}
int init(RGWRados *storage, RGWBucketAdminOpState& op_state);
int create_bucket(string bucket_str, string& user_id, string& display_name);
diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc
index 2fdcfe5bebd..67d8b555527 100644
--- a/src/rgw/rgw_rados.cc
+++ b/src/rgw/rgw_rados.cc
@@ -2784,9 +2784,12 @@ struct get_obj_data : public RefCountedObject {
atomic_t err_code;
Throttle throttle;
- get_obj_data(CephContext *_cct) : cct(_cct),
- total_read(0), lock("get_obj_data"), data_lock("get_obj_data::data_lock"),
- throttle(cct, "get_obj_data", cct->_conf->rgw_get_obj_window_size, false) {}
+ get_obj_data(CephContext *_cct)
+ : cct(_cct),
+ rados(NULL), ctx(NULL),
+ total_read(0), lock("get_obj_data"), data_lock("get_obj_data::data_lock"),
+ client_cb(NULL),
+ throttle(cct, "get_obj_data", cct->_conf->rgw_get_obj_window_size, false) {}
virtual ~get_obj_data() { }
void set_cancelled(int r) {
cancelled.set(1);
diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc
index 8a636d1cae3..1d998e2b338 100644
--- a/src/rgw/rgw_user.cc
+++ b/src/rgw/rgw_user.cc
@@ -526,9 +526,12 @@ static void dump_user_info(Formatter *f, RGWUserInfo &info)
RGWAccessKeyPool::RGWAccessKeyPool(RGWUser* usr)
{
user = usr;
+ swift_keys = NULL;
+ access_keys = NULL;
if (!user) {
keys_allowed = false;
+ store = NULL;
return;
}
@@ -987,13 +990,10 @@ int RGWAccessKeyPool::remove(RGWUserAdminOpState& op_state, std::string *err_msg
RGWSubUserPool::RGWSubUserPool(RGWUser *usr)
{
- if (!usr)
- subusers_allowed = false;
-
- subusers_allowed = true;
-
+ subusers_allowed = (usr != NULL);
store = usr->get_store();
user = usr;
+ subuser_map = NULL;
}
RGWSubUserPool::~RGWSubUserPool()
@@ -1276,10 +1276,8 @@ int RGWSubUserPool::modify(RGWUserAdminOpState& op_state, std::string *err_msg,
RGWUserCapPool::RGWUserCapPool(RGWUser *usr)
{
user = usr;
-
- if (!user) {
- caps_allowed = false;
- }
+ caps = NULL;
+ caps_allowed = (user != NULL);
}
RGWUserCapPool::~RGWUserCapPool()
@@ -1392,7 +1390,7 @@ int RGWUserCapPool::remove(RGWUserAdminOpState& op_state, std::string *err_msg,
return 0;
}
-RGWUser::RGWUser() : caps(this), keys(this), subusers(this)
+RGWUser::RGWUser() : store(NULL), info_stored(false), caps(this), keys(this), subusers(this)
{
init_default();
}
diff --git a/src/tools/ceph-filestore-dump.cc b/src/tools/ceph-filestore-dump.cc
index cbde3a52d47..7b8a2243fbe 100644
--- a/src/tools/ceph-filestore-dump.cc
+++ b/src/tools/ceph-filestore-dump.cc
@@ -253,10 +253,16 @@ struct metadata_section {
epoch_t map_epoch;
pg_info_t info;
pg_log_t log;
+
metadata_section(__u8 struct_ver, epoch_t map_epoch, const pg_info_t &info,
- const pg_log_t &log): struct_ver(struct_ver),
- map_epoch(map_epoch), info(info), log(log) { }
- metadata_section() { }
+ const pg_log_t &log)
+ : struct_ver(struct_ver),
+ map_epoch(map_epoch),
+ info(info),
+ log(log) { }
+ metadata_section()
+ : struct_ver(0),
+ map_epoch(0) { }
void encode(bufferlist& bl) const {
ENCODE_START(1, 1, bl);