From: Haomai Wang Date: Tue, 10 Mar 2015 09:44:09 +0000 (+0800) Subject: librbd: Make image metadata copied during image copy X-Git-Tag: v9.0.0~153^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ba112d599d70b47b81924fa76753cd31d7716262;p=ceph.git librbd: Make image metadata copied during image copy Signed-off-by: Haomai Wang --- diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index 36699b27bd2d..b29ede86a38a 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -2277,6 +2277,21 @@ reprotect_and_return_err: return -EINVAL; } int r; + map pairs; + + r = cls_client::metadata_list(&src->md_ctx, src->header_oid, &pairs); + if (r < 0) { + lderr(cct) << "couldn't list metadata: " << r << dendl; + return r; + } + for (map::iterator it = pairs.begin(); it != pairs.end(); it++) { + r = cls_client::metadata_set(&dest->md_ctx, dest->header_oid, it->first, it->second); + if (r < 0) { + lderr(cct) << "couldn't set metadata: " << r << dendl; + return r; + } + } + SimpleThrottle throttle(cct->_conf->rbd_concurrent_management_ops, false); uint64_t period = src->get_stripe_period(); for (uint64_t offset = 0; offset < src_size; offset += period) {