summaryrefslogtreecommitdiff
path: root/src/libcephfs.cc
diff options
context:
space:
mode:
authorNoah Watkins <noahwatkins@gmail.com>2013-03-14 13:27:27 -0700
committerNoah Watkins <noahwatkins@gmail.com>2013-03-14 13:27:56 -0700
commit1cbcc044673d30a940f1b7415f19f0dcf1430511 (patch)
tree0173ca22e7f87e9c2c9129a5d329b91c087b0678 /src/libcephfs.cc
parent41897fcba168b409fd370d0b26016fe4d30c5a59 (diff)
parent47378d69ed475e720bab19176b893697178a6dcf (diff)
downloadceph-1cbcc044673d30a940f1b7415f19f0dcf1430511.tar.gz
Merge remote-tracking branch 'origin/wip-osd-addr-api'
Reviewed-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'src/libcephfs.cc')
-rw-r--r--src/libcephfs.cc19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/libcephfs.cc b/src/libcephfs.cc
index ef988855425..74cd8b70417 100644
--- a/src/libcephfs.cc
+++ b/src/libcephfs.cc
@@ -854,6 +854,25 @@ extern "C" int ceph_get_osd_crush_location(struct ceph_mount_info *cmount,
return needed;
}
+extern "C" int ceph_get_osd_addr(struct ceph_mount_info *cmount, int osd,
+ struct sockaddr_storage *addr)
+{
+ if (!cmount->is_mounted())
+ return -ENOTCONN;
+
+ if (!addr)
+ return -EINVAL;
+
+ entity_addr_t address;
+ int ret = cmount->get_client()->get_osd_addr(osd, address);
+ if (ret < 0)
+ return ret;
+
+ memcpy(addr, &address.ss_addr(), sizeof(*addr));
+
+ return 0;
+}
+
extern "C" int ceph_get_file_stripe_address(struct ceph_mount_info *cmount, int fh,
loff_t offset, struct sockaddr_storage *addr, int naddr)
{