We should update the list prev pointer (for the first node) when a
recompaction changes the address of the list head. Currently a
work-around.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* list (while holding lock).
*/
cds_hlist_for_each_rcu(hlist_node, &hlist_head) {
+ if (count == 0) {
+ /* FIXME: currently a work-around */
+ hlist_node->prev = (struct cds_hlist_node *) node_flag_ptr;
+ }
count++;
if (hlist_node == &node->list)
found++;
goto end;
}
cds_hlist_del_rcu(&node->list);
+ /*
+ * Validate that we indeed removed the node from linked list.
+ */
+ assert(ja_node_ptr(*node_flag_ptr) != (struct cds_ja_inode *) node);
end:
rcuja_shadow_unlock(shadow_node);
return ret;