brd.c (8c57a5e7b2820f349c95b8c8393fec1e0f4070d2) | brd.c (70246286e94c335b5bea0cbc68a17a96dd620281) |
---|---|
1/* 2 * Ram backed block device driver. 3 * 4 * Copyright (C) 2007 Nick Piggin 5 * Copyright (C) 2007 Novell Inc. 6 * 7 * Parts derived from drivers/block/rd.c, and drivers/block/loop.c, copyright 8 * of their respective owners. --- 325 unchanged lines hidden (view full) --- 334 struct bio_vec bvec; 335 sector_t sector; 336 struct bvec_iter iter; 337 338 sector = bio->bi_iter.bi_sector; 339 if (bio_end_sector(bio) > get_capacity(bdev->bd_disk)) 340 goto io_error; 341 | 1/* 2 * Ram backed block device driver. 3 * 4 * Copyright (C) 2007 Nick Piggin 5 * Copyright (C) 2007 Novell Inc. 6 * 7 * Parts derived from drivers/block/rd.c, and drivers/block/loop.c, copyright 8 * of their respective owners. --- 325 unchanged lines hidden (view full) --- 334 struct bio_vec bvec; 335 sector_t sector; 336 struct bvec_iter iter; 337 338 sector = bio->bi_iter.bi_sector; 339 if (bio_end_sector(bio) > get_capacity(bdev->bd_disk)) 340 goto io_error; 341 |
342 if (unlikely(bio->bi_rw & REQ_DISCARD)) { | 342 if (unlikely(bio_op(bio) == REQ_OP_DISCARD)) { |
343 if (sector & ((PAGE_SIZE >> SECTOR_SHIFT) - 1) || 344 bio->bi_iter.bi_size & ~PAGE_MASK) 345 goto io_error; 346 discard_from_brd(brd, sector, bio->bi_iter.bi_size); 347 goto out; 348 } 349 | 343 if (sector & ((PAGE_SIZE >> SECTOR_SHIFT) - 1) || 344 bio->bi_iter.bi_size & ~PAGE_MASK) 345 goto io_error; 346 discard_from_brd(brd, sector, bio->bi_iter.bi_size); 347 goto out; 348 } 349 |
350 rw = bio_rw(bio); 351 if (rw == READA) 352 rw = READ; | 350 rw = bio_data_dir(bio); |
353 354 bio_for_each_segment(bvec, bio, iter) { 355 unsigned int len = bvec.bv_len; 356 int err; 357 358 err = brd_do_bvec(brd, bvec.bv_page, len, 359 bvec.bv_offset, rw, sector); 360 if (err) --- 15 unchanged lines hidden (view full) --- 376 struct brd_device *brd = bdev->bd_disk->private_data; 377 int err = brd_do_bvec(brd, page, PAGE_SIZE, 0, rw, sector); 378 page_endio(page, rw & WRITE, err); 379 return err; 380} 381 382#ifdef CONFIG_BLK_DEV_RAM_DAX 383static long brd_direct_access(struct block_device *bdev, sector_t sector, | 351 352 bio_for_each_segment(bvec, bio, iter) { 353 unsigned int len = bvec.bv_len; 354 int err; 355 356 err = brd_do_bvec(brd, bvec.bv_page, len, 357 bvec.bv_offset, rw, sector); 358 if (err) --- 15 unchanged lines hidden (view full) --- 374 struct brd_device *brd = bdev->bd_disk->private_data; 375 int err = brd_do_bvec(brd, page, PAGE_SIZE, 0, rw, sector); 376 page_endio(page, rw & WRITE, err); 377 return err; 378} 379 380#ifdef CONFIG_BLK_DEV_RAM_DAX 381static long brd_direct_access(struct block_device *bdev, sector_t sector, |
384 void __pmem **kaddr, pfn_t *pfn) | 382 void __pmem **kaddr, pfn_t *pfn, long size) |
385{ 386 struct brd_device *brd = bdev->bd_disk->private_data; 387 struct page *page; 388 389 if (!brd) 390 return -ENODEV; 391 page = brd_insert_page(brd, sector); 392 if (!page) --- 265 unchanged lines hidden --- | 383{ 384 struct brd_device *brd = bdev->bd_disk->private_data; 385 struct page *page; 386 387 if (!brd) 388 return -ENODEV; 389 page = brd_insert_page(brd, sector); 390 if (!page) --- 265 unchanged lines hidden --- |