++static void fitblk_mark_dead(struct block_device *bdev, bool surprise)
++{
++ struct list_head *n, *tmp;
++ struct fitblk *fitblk;
++
++ mutex_lock(&devices_mutex);
++ list_for_each_safe(n, tmp, &fitblk_devices) {
++ fitblk = list_entry(n, struct fitblk, list);
++ if (fitblk->lower_bdev != bdev)
++ continue;
++
++ fitblk->dead = true;
++ list_del(&fitblk->list);
++ /* removal needs to be deferred to avoid deadlock */
++ schedule_work(&fitblk->remove_work);
++ }
++ mutex_unlock(&devices_mutex);
++}
++
++static const struct blk_holder_ops fitblk_hops = {
++ .mark_dead = fitblk_mark_dead,
++};
++