void ocfs2_node_map_clear_bit(struct ocfs2_super *osb, struct ocfs2_node_map *map, int bit) { if (bit==-1) return; BUG_ON(bit >= map->num_nodes); spin_lock(&osb->node_map_lock); __ocfs2_node_map_clear_bit(map, bit); spin_unlock(&osb->node_map_lock); }
/* returns 1 if bit is the only bit set in target, 0 otherwise */ int ocfs2_node_map_is_only(struct ocfs2_super *osb, struct ocfs2_node_map *target, int bit) { struct ocfs2_node_map temp; int ret; spin_lock(&osb->node_map_lock); __ocfs2_node_map_dup(&temp, target); __ocfs2_node_map_clear_bit(&temp, bit); ret = __ocfs2_node_map_is_empty(&temp); spin_unlock(&osb->node_map_lock); return ret; }
/* Returns whether the recovery bit was actually set - it may not be * if a node is still marked as needing recovery */ int ocfs2_recovery_map_set(struct ocfs2_super *osb, int num) { int set = 0; spin_lock(&osb->node_map_lock); __ocfs2_node_map_clear_bit(&osb->mounted_map, num); if (!test_bit(num, osb->recovery_map.map)) { __ocfs2_node_map_set_bit(&osb->recovery_map, num); set = 1; } spin_unlock(&osb->node_map_lock); return set; }