[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 23/45] block: remove i_bdev



On Tue, Nov 24, 2020 at 02:27:29PM +0100, Christoph Hellwig wrote:
> Switch the block device lookup interfaces to directly work with a dev_t
> so that struct block_device references are only acquired by the
> blkdev_get variants (and the blk-cgroup special case).  This means that
> we not don't need an extra reference in the inode and can generally
     ^
     now
> simplify handling of struct block_device to keep the lookups contained
> in the core block layer code.
> 
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>
...
> @@ -1689,14 +1599,12 @@ static int blkdev_open(struct inode * inode, struct 
> file * filp)
>       if ((filp->f_flags & O_ACCMODE) == 3)
>               filp->f_mode |= FMODE_WRITE_IOCTL;
>  
> -     bdev = bd_acquire(inode);
> -     if (bdev == NULL)
> -             return -ENOMEM;
> -
> +     bdev = blkdev_get_by_dev(inode->i_rdev, filp->f_mode, filp);
> +     if (IS_ERR(bdev))
> +             return PTR_ERR(bdev);
>       filp->f_mapping = bdev->bd_inode->i_mapping;
>       filp->f_wb_err = filemap_sample_wb_err(filp->f_mapping);
> -
> -     return blkdev_get(bdev, filp->f_mode, filp);
> +     return 0;
>  }

I was wondering whether losing the stale bdev flushing in bd_acquire() would
cause user-visible behavior changes but can't see how it would given that
userland has no way of holding onto a specific instance of block inode.
Maybe it's something worth mentioning in the commit message?

Other than that, for the block part:

Acked-by: Tejun Heo <tj@xxxxxxxxxx>

Thanks.

-- 
tejun



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.