diff options
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/brd.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/block/brd.c b/drivers/block/brd.c index e73b85cf0756..807d3d5d2fe5 100644 --- a/drivers/block/brd.c +++ b/drivers/block/brd.c | |||
@@ -360,6 +360,15 @@ out: | |||
360 | bio_endio(bio, err); | 360 | bio_endio(bio, err); |
361 | } | 361 | } |
362 | 362 | ||
363 | static int brd_rw_page(struct block_device *bdev, sector_t sector, | ||
364 | struct page *page, int rw) | ||
365 | { | ||
366 | struct brd_device *brd = bdev->bd_disk->private_data; | ||
367 | int err = brd_do_bvec(brd, page, PAGE_CACHE_SIZE, 0, rw, sector); | ||
368 | page_endio(page, rw & WRITE, err); | ||
369 | return err; | ||
370 | } | ||
371 | |||
363 | #ifdef CONFIG_BLK_DEV_XIP | 372 | #ifdef CONFIG_BLK_DEV_XIP |
364 | static int brd_direct_access(struct block_device *bdev, sector_t sector, | 373 | static int brd_direct_access(struct block_device *bdev, sector_t sector, |
365 | void **kaddr, unsigned long *pfn) | 374 | void **kaddr, unsigned long *pfn) |
@@ -419,6 +428,7 @@ static int brd_ioctl(struct block_device *bdev, fmode_t mode, | |||
419 | 428 | ||
420 | static const struct block_device_operations brd_fops = { | 429 | static const struct block_device_operations brd_fops = { |
421 | .owner = THIS_MODULE, | 430 | .owner = THIS_MODULE, |
431 | .rw_page = brd_rw_page, | ||
422 | .ioctl = brd_ioctl, | 432 | .ioctl = brd_ioctl, |
423 | #ifdef CONFIG_BLK_DEV_XIP | 433 | #ifdef CONFIG_BLK_DEV_XIP |
424 | .direct_access = brd_direct_access, | 434 | .direct_access = brd_direct_access, |