projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lift generic_write_checks() into callers of __generic_file_write_iter()
[cascardo/linux.git]
/
fs
/
block_dev.c
diff --git
a/fs/block_dev.c
b/fs/block_dev.c
index
975266b
..
bcd7f97
100644
(file)
--- a/
fs/block_dev.c
+++ b/
fs/block_dev.c
@@
-27,7
+27,6
@@
#include <linux/namei.h>
#include <linux/log2.h>
#include <linux/cleancache.h>
#include <linux/namei.h>
#include <linux/log2.h>
#include <linux/cleancache.h>
-#include <linux/aio.h>
#include <asm/uaccess.h>
#include "internal.h"
#include <asm/uaccess.h>
#include "internal.h"
@@
-147,15
+146,13
@@
blkdev_get_block(struct inode *inode, sector_t iblock,
}
static ssize_t
}
static ssize_t
-blkdev_direct_IO(int rw, struct kiocb *iocb, struct iov_iter *iter,
- loff_t offset)
+blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t offset)
{
struct file *file = iocb->ki_filp;
struct inode *inode = file->f_mapping->host;
{
struct file *file = iocb->ki_filp;
struct inode *inode = file->f_mapping->host;
- return __blockdev_direct_IO(rw, iocb, inode, I_BDEV(inode), iter,
- offset, blkdev_get_block,
- NULL, NULL, 0);
+ return __blockdev_direct_IO(iocb, inode, I_BDEV(inode), iter, offset,
+ blkdev_get_block, NULL, NULL, 0);
}
int __sync_blockdev(struct block_device *bdev, int wait)
}
int __sync_blockdev(struct block_device *bdev, int wait)
@@
-1600,6
+1597,16
@@
ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
struct file *file = iocb->ki_filp;
struct blk_plug plug;
ssize_t ret;
struct file *file = iocb->ki_filp;
struct blk_plug plug;
ssize_t ret;
+ size_t count = iov_iter_count(from);
+
+ ret = generic_write_checks(file, &iocb->ki_pos, &count, 1);
+ if (ret)
+ return ret;
+
+ if (count == 0)
+ return 0;
+
+ iov_iter_truncate(from, count);
blk_start_plug(&plug);
ret = __generic_file_write_iter(iocb, from);
blk_start_plug(&plug);
ret = __generic_file_write_iter(iocb, from);
@@
-1660,8
+1667,6
@@
const struct file_operations def_blk_fops = {
.open = blkdev_open,
.release = blkdev_close,
.llseek = block_llseek,
.open = blkdev_open,
.release = blkdev_close,
.llseek = block_llseek,
- .read = new_sync_read,
- .write = new_sync_write,
.read_iter = blkdev_read_iter,
.write_iter = blkdev_write_iter,
.mmap = generic_file_mmap,
.read_iter = blkdev_read_iter,
.write_iter = blkdev_write_iter,
.mmap = generic_file_mmap,