diff options
author | Christoph Hellwig <hch@lst.de> | 2017-08-29 10:13:21 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2017-09-04 19:04:23 -0400 |
commit | c35fc7a5abae9c154dd6f8c0b288462342facd45 (patch) | |
tree | 4531ee1324e372e1382f55f09f2c710564af8838 /fs/block_dev.c | |
parent | 91f9943e1c7b6638f27312d03fe71fcc67b23571 (diff) |
block_dev: support RFW_NOWAIT on block device nodes
All support is already there in the generic code, we just need to wire
it up.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/block_dev.c')
-rw-r--r-- | fs/block_dev.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index 9941dc8342df..ea21d18d8e79 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
@@ -1739,6 +1739,8 @@ static int blkdev_open(struct inode * inode, struct file * filp) | |||
1739 | */ | 1739 | */ |
1740 | filp->f_flags |= O_LARGEFILE; | 1740 | filp->f_flags |= O_LARGEFILE; |
1741 | 1741 | ||
1742 | filp->f_mode |= FMODE_NOWAIT; | ||
1743 | |||
1742 | if (filp->f_flags & O_NDELAY) | 1744 | if (filp->f_flags & O_NDELAY) |
1743 | filp->f_mode |= FMODE_NDELAY; | 1745 | filp->f_mode |= FMODE_NDELAY; |
1744 | if (filp->f_flags & O_EXCL) | 1746 | if (filp->f_flags & O_EXCL) |
@@ -1891,6 +1893,9 @@ ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from) | |||
1891 | if (iocb->ki_pos >= size) | 1893 | if (iocb->ki_pos >= size) |
1892 | return -ENOSPC; | 1894 | return -ENOSPC; |
1893 | 1895 | ||
1896 | if ((iocb->ki_flags & (IOCB_NOWAIT | IOCB_DIRECT)) == IOCB_NOWAIT) | ||
1897 | return -EOPNOTSUPP; | ||
1898 | |||
1894 | iov_iter_truncate(from, size - iocb->ki_pos); | 1899 | iov_iter_truncate(from, size - iocb->ki_pos); |
1895 | 1900 | ||
1896 | blk_start_plug(&plug); | 1901 | blk_start_plug(&plug); |