libceph: ceph_osd_{exists,is_up,is_down}(osd) definitions
authorIlya Dryomov <ilya.dryomov@inktank.com>
Mon, 24 Mar 2014 15:12:46 +0000 (17:12 +0200)
committerSage Weil <sage@inktank.com>
Sat, 5 Apr 2014 04:08:07 +0000 (21:08 -0700)
Sync up with ceph.git definitions.  Bring in ceph_osd_is_down().

Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
Reviewed-by: Alex Elder <elder@linaro.org>
include/linux/ceph/osdmap.h

index 6e030cb3c9ca41c0941b87a80760ef506cd4615c..0895797b9e28dd48cd7440f2eaaa71e3805e6edc 100644 (file)
@@ -125,9 +125,21 @@ static inline void ceph_oid_copy(struct ceph_object_id *dest,
        dest->name_len = src->name_len;
 }
 
+static inline int ceph_osd_exists(struct ceph_osdmap *map, int osd)
+{
+       return osd >= 0 && osd < map->max_osd &&
+              (map->osd_state[osd] & CEPH_OSD_EXISTS);
+}
+
 static inline int ceph_osd_is_up(struct ceph_osdmap *map, int osd)
 {
-       return (osd < map->max_osd) && (map->osd_state[osd] & CEPH_OSD_UP);
+       return ceph_osd_exists(map, osd) &&
+              (map->osd_state[osd] & CEPH_OSD_UP);
+}
+
+static inline int ceph_osd_is_down(struct ceph_osdmap *map, int osd)
+{
+       return !ceph_osd_is_up(map, osd);
 }
 
 static inline bool ceph_osdmap_flag(struct ceph_osdmap *map, int flag)