diff options
author | Sage Weil <sage@inktank.com> | 2013-10-01 16:01:24 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-10-01 16:01:24 -0700 |
commit | ece11f4a82062f7fb4413a6af5a64d80fd2046bf (patch) | |
tree | 39b70656e7040cebd94b603a3a4b6232bac5b212 | |
parent | 011bff3405b06ed9c226cfbebaf9304295ecb184 (diff) | |
parent | 9b7a2ae329b6a511064dd3d6e549ba61f52cfd21 (diff) | |
download | ceph-ece11f4a82062f7fb4413a6af5a64d80fd2046bf.tar.gz |
Merge remote-tracking branch 'gh/next'
Conflicts:
PendingReleaseNotes
-rw-r--r-- | PendingReleaseNotes | 36 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rwxr-xr-x | src/ceph-create-keys | 2 | ||||
-rwxr-xr-x | src/ceph-disk | 2 | ||||
-rwxr-xr-x | src/ceph-rest-api | 2 | ||||
-rw-r--r-- | src/crush/CrushWrapper.cc | 1 | ||||
-rw-r--r-- | src/crush/CrushWrapper.h | 1 | ||||
-rw-r--r-- | src/librados/RadosClient.cc | 2 | ||||
-rwxr-xr-x | src/objsync/boto_del.py | 2 | ||||
-rw-r--r-- | src/pybind/ceph_argparse.py | 6 | ||||
-rwxr-xr-x | src/pybind/ceph_rest_api.py | 1 | ||||
-rw-r--r-- | src/rgw/rgw_metadata.cc | 2 | ||||
-rw-r--r-- | src/rgw/rgw_rados.cc | 2 | ||||
-rwxr-xr-x | src/script/perf-watch.py | 2 | ||||
-rwxr-xr-x | src/vstart.sh | 4 |
15 files changed, 53 insertions, 14 deletions
diff --git a/PendingReleaseNotes b/PendingReleaseNotes index 7d667f3ff59..ef52aca884b 100644 --- a/PendingReleaseNotes +++ b/PendingReleaseNotes @@ -1,3 +1,37 @@ v0.70 ~~~~~ -mds: disable adding snapshots by default. (re-enable them with "ceph mds allow_snaps")
\ No newline at end of file + +* librados::Rados::pool_create_async() and librados::Rados::pool_delete_async() + don't drop a reference to the completion object on error, caller needs to take + care of that. This has never really worked correctly and we were leaking an + object + +* 'ceph osd crush set <id> <weight> <loc..>' no longer adds the osd to the + specified location, as that's a job for 'ceph osd crush add'. It will + however continue to work just the same as long as the osd already exists + in the crush map. + +* The OSD now enforces that class write methods cannot both mutate an + object and return data. The rbd.assign_bid method, the lone + offender, has been removed. This breaks compatibility with + pre-bobtail librbd clients by preventing them from creating new + images. + +* librados now returns on commit instead of ack for synchronous calls. + This is a bit safer in the case where both OSDs and the client crash, and + is probably how it should have been acting from the beginning. Users are + unlikely to notice but it could result in lower performance in some + circumstances. Those who care should switch to using the async interfaces, + which let you specify safety semantics precisely. + +* The C++ librados AioComplete::get_version() method was incorrectly + returning an int (usually 32-bits). To avoid breaking library + compatibility, a get_version64() method is added that returns the + full-width value. The old method is deprecated and will be removed + in a future release. Users of the C++ librados API that make use of + the get_version() method should modify their code to avoid getting a + value that is truncated from 64 to to 32 bits. + +v0.71 +~~~~~ + diff --git a/src/Makefile.am b/src/Makefile.am index e09941ed8f3..280b268479e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -295,7 +295,7 @@ CLEANFILES += ceph_ver.h sample.fetch_config ceph: ceph.in ./ceph_ver.h Makefile rm -f $@ $@.tmp - echo "#!/usr/bin/python" >$@.tmp + echo "#!/usr/bin/env python" >$@.tmp grep "#define CEPH_GIT_NICE_VER" ./ceph_ver.h | \ sed -e 's/#define \(.*VER\) /\1=/' >>$@.tmp grep "#define CEPH_GIT_VER" ./ceph_ver.h | \ diff --git a/src/ceph-create-keys b/src/ceph-create-keys index 176b06e7a38..0359228d5f8 100755 --- a/src/ceph-create-keys +++ b/src/ceph-create-keys @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python import argparse import errno import json diff --git a/src/ceph-disk b/src/ceph-disk index 3d09bdf7418..0691d252cd7 100755 --- a/src/ceph-disk +++ b/src/ceph-disk @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python import argparse import errno diff --git a/src/ceph-rest-api b/src/ceph-rest-api index ae5245b4f76..772b3d20fcd 100755 --- a/src/ceph-rest-api +++ b/src/ceph-rest-api @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # vim: ts=4 sw=4 smarttab expandtab import argparse diff --git a/src/crush/CrushWrapper.cc b/src/crush/CrushWrapper.cc index bab9f9a817e..d17166bc4a9 100644 --- a/src/crush/CrushWrapper.cc +++ b/src/crush/CrushWrapper.cc @@ -861,7 +861,6 @@ void CrushWrapper::decode(bufferlist::iterator& blp) decode_32_or_64_string_map(type_map, blp); decode_32_or_64_string_map(name_map, blp); decode_32_or_64_string_map(rule_name_map, blp); - build_rmaps(); // tunables if (!blp.end()) { diff --git a/src/crush/CrushWrapper.h b/src/crush/CrushWrapper.h index 80906e4fe18..b4bb67bb742 100644 --- a/src/crush/CrushWrapper.h +++ b/src/crush/CrushWrapper.h @@ -94,6 +94,7 @@ public: crush_destroy(crush); crush = crush_create(); assert(crush); + have_rmaps = false; } // tunables diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 8a5f499ec15..1be3ebd10f9 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -459,7 +459,6 @@ int librados::RadosClient::pool_create_async(string& name, PoolAsyncCompletionIm Context *onfinish = new C_PoolAsync_Safe(c); int r = objecter->create_pool(name, onfinish, auid, crush_rule); if (r < 0) { - delete c; delete onfinish; } return r; @@ -505,7 +504,6 @@ int librados::RadosClient::pool_delete_async(const char *name, PoolAsyncCompleti Context *onfinish = new C_PoolAsync_Safe(c); int r = objecter->delete_pool(tmp_pool_id, onfinish); if (r < 0) { - delete c; delete onfinish; } return r; diff --git a/src/objsync/boto_del.py b/src/objsync/boto_del.py index 14e790544ec..ba512e1ca33 100755 --- a/src/objsync/boto_del.py +++ b/src/objsync/boto_del.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # # Ceph - scalable distributed file system diff --git a/src/pybind/ceph_argparse.py b/src/pybind/ceph_argparse.py index 7ec7b8b2f0c..1f6e90b6c1d 100644 --- a/src/pybind/ceph_argparse.py +++ b/src/pybind/ceph_argparse.py @@ -843,6 +843,11 @@ def validate(args, signature, partial=False): # wanted n, got too few if partial: return d + # special-case the "0 expected 1" case + if desc.numseen == 0 and desc.n == 1: + raise ArgumentNumber( + 'missing required parameter {0}'.format(desc) + ) raise ArgumentNumber( 'saw {0} of {1}, expected {2}'.\ format(desc.numseen, desc, desc.n) @@ -951,6 +956,7 @@ def validate_command(sigdict, args, verbose=False): # Stop now, because we have the right command but # some other input is invalid print >> sys.stderr, "Invalid command: ", str(e) + print >> sys.stderr, concise_sig(sig), ': ', cmd['help'] return {} if found: break diff --git a/src/pybind/ceph_rest_api.py b/src/pybind/ceph_rest_api.py index c53c3d77737..75e61060544 100755 --- a/src/pybind/ceph_rest_api.py +++ b/src/pybind/ceph_rest_api.py @@ -1,4 +1,3 @@ -#!/usr/bin/python # vim: ts=4 sw=4 smarttab expandtab import errno diff --git a/src/rgw/rgw_metadata.cc b/src/rgw/rgw_metadata.cc index 6da1ff5ab24..ca5ad3f2e7a 100644 --- a/src/rgw/rgw_metadata.cc +++ b/src/rgw/rgw_metadata.cc @@ -388,6 +388,8 @@ int RGWMetadataManager::remove(string& metadata_key) objv_tracker.read_version = obj->get_version(); + delete obj; + return handler->remove(store, entry, objv_tracker); } diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 556aa1abba5..8b4d18f4e68 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -2184,8 +2184,8 @@ int RGWRados::create_pools(vector<string>& names, vector<int>& retcodes) if (r < 0) { ldout(cct, 0) << "WARNING: async pool_create returned " << r << dendl; } - c->release(); } + c->release(); retcodes.push_back(r); } return 0; diff --git a/src/script/perf-watch.py b/src/script/perf-watch.py index 8c18c3ec766..826d4a499d7 100755 --- a/src/script/perf-watch.py +++ b/src/script/perf-watch.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python import json import argparse diff --git a/src/vstart.sh b/src/vstart.sh index 4c04ef96410..def480779de 100755 --- a/src/vstart.sh +++ b/src/vstart.sh @@ -249,11 +249,11 @@ if [ -n "$ip" ]; then IP="$ip" else echo hostname $HOSTNAME - RAW_IP=`hostname --ip-address` + RAW_IP=`hostname -I` # filter out IPv6 and localhost addresses IP="$(echo "$RAW_IP"|tr ' ' '\012'|grep -v :|grep -v '^127\.'|head -n1)" # if that left nothing, then try to use the raw thing, it might work - if [ -z "IP" ]; then IP="$RAW_IP"; fi + if [ -z "$IP" ]; then IP="$RAW_IP"; fi echo ip $IP fi echo "ip $IP" |