static bool oid_stale(uint64_t oid) { int i, nr_copies; struct vnode_info *vinfo; struct sd_vnode *v; bool ret = true; struct sd_vnode *obj_vnodes[SD_MAX_COPIES]; vinfo = get_vnode_info(); nr_copies = get_obj_copy_number(oid, vinfo->nr_zones); if (!nr_copies) { ret = false; goto out; } oid_to_vnodes(vinfo->vnodes, vinfo->nr_vnodes, oid, nr_copies, obj_vnodes); for (i = 0; i < nr_copies; i++) { v = obj_vnodes[i]; if (vnode_is_local(v)) { ret = false; break; } } out: put_vnode_info(vinfo); return ret; }
static inline void kick_recover(void) { struct vnode_info *vinfo = get_vnode_info(); start_recovery(vinfo, vinfo); put_vnode_info(vinfo); }
static size_t get_nr_nodes(void) { struct vnode_info *vinfo; size_t nr = 1; vinfo = get_vnode_info(); if (vinfo != NULL) nr = vinfo->nr_nodes; put_vnode_info(vinfo); return nr; }