ps3disk.c (df668a5fe461bb9d7e899c538acc7197746038f4) | ps3disk.c (6e0a48552b8cfc3767b98e3e8beed3f4cbafc9f4) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * PS3 Disk Storage Driver 4 * 5 * Copyright (C) 2007 Sony Computer Entertainment Inc. 6 * Copyright 2007 Sony Corp. 7 */ 8 --- 69 unchanged lines hidden (view full) --- 78 79 80static void ps3disk_scatter_gather(struct ps3_storage_device *dev, 81 struct request *req, int gather) 82{ 83 unsigned int offset = 0; 84 struct req_iterator iter; 85 struct bio_vec bvec; | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * PS3 Disk Storage Driver 4 * 5 * Copyright (C) 2007 Sony Computer Entertainment Inc. 6 * Copyright 2007 Sony Corp. 7 */ 8 --- 69 unchanged lines hidden (view full) --- 78 79 80static void ps3disk_scatter_gather(struct ps3_storage_device *dev, 81 struct request *req, int gather) 82{ 83 unsigned int offset = 0; 84 struct req_iterator iter; 85 struct bio_vec bvec; |
86 unsigned int i = 0; 87 size_t size; 88 void *buf; | |
89 90 rq_for_each_segment(bvec, req, iter) { | 86 87 rq_for_each_segment(bvec, req, iter) { |
91 unsigned long flags; 92 dev_dbg(&dev->sbd.core, "%s:%u: bio %u: %u sectors from %llu\n", 93 __func__, __LINE__, i, bio_sectors(iter.bio), 94 iter.bio->bi_iter.bi_sector); 95 96 size = bvec.bv_len; 97 buf = bvec_kmap_irq(&bvec, &flags); | |
98 if (gather) | 88 if (gather) |
99 memcpy(dev->bounce_buf+offset, buf, size); | 89 memcpy_from_bvec(dev->bounce_buf + offset, &bvec); |
100 else | 90 else |
101 memcpy(buf, dev->bounce_buf+offset, size); 102 offset += size; 103 flush_kernel_dcache_page(bvec.bv_page); 104 bvec_kunmap_irq(buf, &flags); 105 i++; | 91 memcpy_to_bvec(&bvec, dev->bounce_buf + offset); |
106 } 107} 108 109static blk_status_t ps3disk_submit_request_sg(struct ps3_storage_device *dev, 110 struct request *req) 111{ 112 struct ps3disk_private *priv = ps3_system_bus_get_drvdata(&dev->sbd); 113 int write = rq_data_dir(req), res; --- 457 unchanged lines hidden --- | 92 } 93} 94 95static blk_status_t ps3disk_submit_request_sg(struct ps3_storage_device *dev, 96 struct request *req) 97{ 98 struct ps3disk_private *priv = ps3_system_bus_get_drvdata(&dev->sbd); 99 int write = rq_data_dir(req), res; --- 457 unchanged lines hidden --- |