mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
block: mark bdev files as FMODE_NOWAIT if underlying device supports it
We set this unconditionally, but it really should be dependent on if the underlying device is nowait compliant. Cc: linux-block@vger.kernel.org Reviewed-by: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20230509151910.183637-3-axboe@kernel.dk Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
@@ -481,7 +481,7 @@ static int blkdev_open(struct inode *inode, struct file *filp)
|
|||||||
* during an unstable branch.
|
* during an unstable branch.
|
||||||
*/
|
*/
|
||||||
filp->f_flags |= O_LARGEFILE;
|
filp->f_flags |= O_LARGEFILE;
|
||||||
filp->f_mode |= FMODE_NOWAIT | FMODE_BUF_RASYNC;
|
filp->f_mode |= FMODE_BUF_RASYNC;
|
||||||
|
|
||||||
if (filp->f_flags & O_NDELAY)
|
if (filp->f_flags & O_NDELAY)
|
||||||
filp->f_mode |= FMODE_NDELAY;
|
filp->f_mode |= FMODE_NDELAY;
|
||||||
@@ -494,6 +494,9 @@ static int blkdev_open(struct inode *inode, struct file *filp)
|
|||||||
if (IS_ERR(bdev))
|
if (IS_ERR(bdev))
|
||||||
return PTR_ERR(bdev);
|
return PTR_ERR(bdev);
|
||||||
|
|
||||||
|
if (bdev_nowait(bdev))
|
||||||
|
filp->f_mode |= FMODE_NOWAIT;
|
||||||
|
|
||||||
filp->private_data = bdev;
|
filp->private_data = bdev;
|
||||||
filp->f_mapping = bdev->bd_inode->i_mapping;
|
filp->f_mapping = bdev->bd_inode->i_mapping;
|
||||||
filp->f_wb_err = filemap_sample_wb_err(filp->f_mapping);
|
filp->f_wb_err = filemap_sample_wb_err(filp->f_mapping);
|
||||||
|
Reference in New Issue
Block a user