- */
- static int dm_blk_open(struct inode *inode, struct file *file)
- {
- struct mapped_device *md;
- spin_lock(&_minor_lock);
- md = inode->i_bdev->bd_disk->private_data;
- if (!md)
- goto out;
- if (test_bit(DMF_FREEING, &md->flags) ||
- test_bit(DMF_DELETING, &md->flags)) {
- md = NULL;
- goto out;
- }
- dm_get(md);
- atomic_inc(&md->open_count);
- out:
- spin_unlock(&_minor_lock);
- return md ? 0 : -ENXIO;
- }
