コード例 #1
0
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);
}
コード例 #2
0
ファイル: heartbeat.c プロジェクト: 3sOx/asuswrt-merlin
/* 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;
}
コード例 #3
0
ファイル: heartbeat.c プロジェクト: 3sOx/asuswrt-merlin
/* 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;
}