diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-04 20:06:58 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-04 20:06:58 -0400 |
commit | b4fdcb02f1e39c27058a885905bd0277370ba441 (patch) | |
tree | fd4cfd1994f21f44afe5e7904681fb5ac09f81b8 /drivers/block | |
parent | 044595d4e448305fbaec472eb7d22636d24e7d8c (diff) | |
parent | 6dd9ad7df2019b1e33a372a501907db293ebcd0d (diff) |
Merge branch 'for-3.2/core' of git://git.kernel.dk/linux-block
* 'for-3.2/core' of git://git.kernel.dk/linux-block: (29 commits)
block: don't call blk_drain_queue() if elevator is not up
blk-throttle: use queue_is_locked() instead of lockdep_is_held()
blk-throttle: Take blkcg->lock while traversing blkcg->policy_list
blk-throttle: Free up policy node associated with deleted rule
block: warn if tag is greater than real_max_depth.
block: make gendisk hold a reference to its queue
blk-flush: move the queue kick into
blk-flush: fix invalid BUG_ON in blk_insert_flush
block: Remove the control of complete cpu from bio.
block: fix a typo in the blk-cgroup.h file
block: initialize the bounce pool if high memory may be added later
block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown
block: drop @tsk from attempt_plug_merge() and explain sync rules
block: make get_request[_wait]() fail if queue is dead
block: reorganize throtl_get_tg() and blk_throtl_bio()
block: reorganize queue draining
block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg()
block: pass around REQ_* flags instead of broken down booleans during request alloc/free
block: move blk_throtl prototypes to block/blk.h
block: fix genhd refcounting in blkio_policy_parse_and_set()
...
Fix up trivial conflicts due to "mddev_t" -> "struct mddev" conversion
and making the request functions be of type "void" instead of "int" in
- drivers/md/{faulty.c,linear.c,md.c,md.h,multipath.c,raid0.c,raid1.c,raid10.c,raid5.c}
- drivers/staging/zram/zram_drv.c
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/aoe/aoeblk.c | 14 | ||||
-rw-r--r-- | drivers/block/brd.c | 4 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_int.h | 2 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_req.c | 8 | ||||
-rw-r--r-- | drivers/block/loop.c | 140 | ||||
-rw-r--r-- | drivers/block/pktcdvd.c | 11 | ||||
-rw-r--r-- | drivers/block/ps3vram.c | 6 | ||||
-rw-r--r-- | drivers/block/umem.c | 4 |
8 files changed, 46 insertions, 143 deletions
diff --git a/drivers/block/aoe/aoeblk.c b/drivers/block/aoe/aoeblk.c index 528f6318ded1..167ba0af47f5 100644 --- a/drivers/block/aoe/aoeblk.c +++ b/drivers/block/aoe/aoeblk.c | |||
@@ -159,7 +159,7 @@ aoeblk_release(struct gendisk *disk, fmode_t mode) | |||
159 | return 0; | 159 | return 0; |
160 | } | 160 | } |
161 | 161 | ||
162 | static int | 162 | static void |
163 | aoeblk_make_request(struct request_queue *q, struct bio *bio) | 163 | aoeblk_make_request(struct request_queue *q, struct bio *bio) |
164 | { | 164 | { |
165 | struct sk_buff_head queue; | 165 | struct sk_buff_head queue; |
@@ -172,25 +172,25 @@ aoeblk_make_request(struct request_queue *q, struct bio *bio) | |||
172 | if (bio == NULL) { | 172 | if (bio == NULL) { |
173 | printk(KERN_ERR "aoe: bio is NULL\n"); | 173 | printk(KERN_ERR "aoe: bio is NULL\n"); |
174 | BUG(); | 174 | BUG(); |
175 | return 0; | 175 | return; |
176 | } | 176 | } |
177 | d = bio->bi_bdev->bd_disk->private_data; | 177 | d = bio->bi_bdev->bd_disk->private_data; |
178 | if (d == NULL) { | 178 | if (d == NULL) { |
179 | printk(KERN_ERR "aoe: bd_disk->private_data is NULL\n"); | 179 | printk(KERN_ERR "aoe: bd_disk->private_data is NULL\n"); |
180 | BUG(); | 180 | BUG(); |
181 | bio_endio(bio, -ENXIO); | 181 | bio_endio(bio, -ENXIO); |
182 | return 0; | 182 | return; |
183 | } else if (bio->bi_io_vec == NULL) { | 183 | } else if (bio->bi_io_vec == NULL) { |
184 | printk(KERN_ERR "aoe: bi_io_vec is NULL\n"); | 184 | printk(KERN_ERR "aoe: bi_io_vec is NULL\n"); |
185 | BUG(); | 185 | BUG(); |
186 | bio_endio(bio, -ENXIO); | 186 | bio_endio(bio, -ENXIO); |
187 | return 0; | 187 | return; |
188 | } | 188 | } |
189 | buf = mempool_alloc(d->bufpool, GFP_NOIO); | 189 | buf = mempool_alloc(d->bufpool, GFP_NOIO); |
190 | if (buf == NULL) { | 190 | if (buf == NULL) { |
191 | printk(KERN_INFO "aoe: buf allocation failure\n"); | 191 | printk(KERN_INFO "aoe: buf allocation failure\n"); |
192 | bio_endio(bio, -ENOMEM); | 192 | bio_endio(bio, -ENOMEM); |
193 | return 0; | 193 | return; |
194 | } | 194 | } |
195 | memset(buf, 0, sizeof(*buf)); | 195 | memset(buf, 0, sizeof(*buf)); |
196 | INIT_LIST_HEAD(&buf->bufs); | 196 | INIT_LIST_HEAD(&buf->bufs); |
@@ -211,7 +211,7 @@ aoeblk_make_request(struct request_queue *q, struct bio *bio) | |||
211 | spin_unlock_irqrestore(&d->lock, flags); | 211 | spin_unlock_irqrestore(&d->lock, flags); |
212 | mempool_free(buf, d->bufpool); | 212 | mempool_free(buf, d->bufpool); |
213 | bio_endio(bio, -ENXIO); | 213 | bio_endio(bio, -ENXIO); |
214 | return 0; | 214 | return; |
215 | } | 215 | } |
216 | 216 | ||
217 | list_add_tail(&buf->bufs, &d->bufq); | 217 | list_add_tail(&buf->bufs, &d->bufq); |
@@ -222,8 +222,6 @@ aoeblk_make_request(struct request_queue *q, struct bio *bio) | |||
222 | 222 | ||
223 | spin_unlock_irqrestore(&d->lock, flags); | 223 | spin_unlock_irqrestore(&d->lock, flags); |
224 | aoenet_xmit(&queue); | 224 | aoenet_xmit(&queue); |
225 | |||
226 | return 0; | ||
227 | } | 225 | } |
228 | 226 | ||
229 | static int | 227 | static int |
diff --git a/drivers/block/brd.c b/drivers/block/brd.c index dba1c32e1ddf..d22119d49e53 100644 --- a/drivers/block/brd.c +++ b/drivers/block/brd.c | |||
@@ -323,7 +323,7 @@ out: | |||
323 | return err; | 323 | return err; |
324 | } | 324 | } |
325 | 325 | ||
326 | static int brd_make_request(struct request_queue *q, struct bio *bio) | 326 | static void brd_make_request(struct request_queue *q, struct bio *bio) |
327 | { | 327 | { |
328 | struct block_device *bdev = bio->bi_bdev; | 328 | struct block_device *bdev = bio->bi_bdev; |
329 | struct brd_device *brd = bdev->bd_disk->private_data; | 329 | struct brd_device *brd = bdev->bd_disk->private_data; |
@@ -359,8 +359,6 @@ static int brd_make_request(struct request_queue *q, struct bio *bio) | |||
359 | 359 | ||
360 | out: | 360 | out: |
361 | bio_endio(bio, err); | 361 | bio_endio(bio, err); |
362 | |||
363 | return 0; | ||
364 | } | 362 | } |
365 | 363 | ||
366 | #ifdef CONFIG_BLK_DEV_XIP | 364 | #ifdef CONFIG_BLK_DEV_XIP |
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h index 1706d60b8c99..9cf20355ceec 100644 --- a/drivers/block/drbd/drbd_int.h +++ b/drivers/block/drbd/drbd_int.h | |||
@@ -1506,7 +1506,7 @@ extern void drbd_free_mdev(struct drbd_conf *mdev); | |||
1506 | extern int proc_details; | 1506 | extern int proc_details; |
1507 | 1507 | ||
1508 | /* drbd_req */ | 1508 | /* drbd_req */ |
1509 | extern int drbd_make_request(struct request_queue *q, struct bio *bio); | 1509 | extern void drbd_make_request(struct request_queue *q, struct bio *bio); |
1510 | extern int drbd_read_remote(struct drbd_conf *mdev, struct drbd_request *req); | 1510 | extern int drbd_read_remote(struct drbd_conf *mdev, struct drbd_request *req); |
1511 | extern int drbd_merge_bvec(struct request_queue *q, struct bvec_merge_data *bvm, struct bio_vec *bvec); | 1511 | extern int drbd_merge_bvec(struct request_queue *q, struct bvec_merge_data *bvm, struct bio_vec *bvec); |
1512 | extern int is_valid_ar_handle(struct drbd_request *, sector_t); | 1512 | extern int is_valid_ar_handle(struct drbd_request *, sector_t); |
diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c index 3424d675b769..4a0f314086e5 100644 --- a/drivers/block/drbd/drbd_req.c +++ b/drivers/block/drbd/drbd_req.c | |||
@@ -1073,7 +1073,7 @@ static int drbd_fail_request_early(struct drbd_conf *mdev, int is_write) | |||
1073 | return 0; | 1073 | return 0; |
1074 | } | 1074 | } |
1075 | 1075 | ||
1076 | int drbd_make_request(struct request_queue *q, struct bio *bio) | 1076 | void drbd_make_request(struct request_queue *q, struct bio *bio) |
1077 | { | 1077 | { |
1078 | unsigned int s_enr, e_enr; | 1078 | unsigned int s_enr, e_enr; |
1079 | struct drbd_conf *mdev = (struct drbd_conf *) q->queuedata; | 1079 | struct drbd_conf *mdev = (struct drbd_conf *) q->queuedata; |
@@ -1081,7 +1081,7 @@ int drbd_make_request(struct request_queue *q, struct bio *bio) | |||
1081 | 1081 | ||
1082 | if (drbd_fail_request_early(mdev, bio_data_dir(bio) & WRITE)) { | 1082 | if (drbd_fail_request_early(mdev, bio_data_dir(bio) & WRITE)) { |
1083 | bio_endio(bio, -EPERM); | 1083 | bio_endio(bio, -EPERM); |
1084 | return 0; | 1084 | return; |
1085 | } | 1085 | } |
1086 | 1086 | ||
1087 | start_time = jiffies; | 1087 | start_time = jiffies; |
@@ -1100,7 +1100,8 @@ int drbd_make_request(struct request_queue *q, struct bio *bio) | |||
1100 | 1100 | ||
1101 | if (likely(s_enr == e_enr)) { | 1101 | if (likely(s_enr == e_enr)) { |
1102 | inc_ap_bio(mdev, 1); | 1102 | inc_ap_bio(mdev, 1); |
1103 | return drbd_make_request_common(mdev, bio, start_time); | 1103 | drbd_make_request_common(mdev, bio, start_time); |
1104 | return; | ||
1104 | } | 1105 | } |
1105 | 1106 | ||
1106 | /* can this bio be split generically? | 1107 | /* can this bio be split generically? |
@@ -1148,7 +1149,6 @@ int drbd_make_request(struct request_queue *q, struct bio *bio) | |||
1148 | 1149 | ||
1149 | bio_pair_release(bp); | 1150 | bio_pair_release(bp); |
1150 | } | 1151 | } |
1151 | return 0; | ||
1152 | } | 1152 | } |
1153 | 1153 | ||
1154 | /* This is called by bio_add_page(). With this function we reduce | 1154 | /* This is called by bio_add_page(). With this function we reduce |
diff --git a/drivers/block/loop.c b/drivers/block/loop.c index 4720c7ade0ae..c77983ea86c8 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c | |||
@@ -203,74 +203,6 @@ lo_do_transfer(struct loop_device *lo, int cmd, | |||
203 | } | 203 | } |
204 | 204 | ||
205 | /** | 205 | /** |
206 | * do_lo_send_aops - helper for writing data to a loop device | ||
207 | * | ||
208 | * This is the fast version for backing filesystems which implement the address | ||
209 | * space operations write_begin and write_end. | ||
210 | */ | ||
211 | static int do_lo_send_aops(struct loop_device *lo, struct bio_vec *bvec, | ||
212 | loff_t pos, struct page *unused) | ||
213 | { | ||
214 | struct file *file = lo->lo_backing_file; /* kudos to NFsckingS */ | ||
215 | struct address_space *mapping = file->f_mapping; | ||
216 | pgoff_t index; | ||
217 | unsigned offset, bv_offs; | ||
218 | int len, ret; | ||
219 | |||
220 | mutex_lock(&mapping->host->i_mutex); | ||
221 | index = pos >> PAGE_CACHE_SHIFT; | ||
222 | offset = pos & ((pgoff_t)PAGE_CACHE_SIZE - 1); | ||
223 | bv_offs = bvec->bv_offset; | ||
224 | len = bvec->bv_len; | ||
225 | while (len > 0) { | ||
226 | sector_t IV; | ||
227 | unsigned size, copied; | ||
228 | int transfer_result; | ||
229 | struct page *page; | ||
230 | void *fsdata; | ||
231 | |||
232 | IV = ((sector_t)index << (PAGE_CACHE_SHIFT - 9))+(offset >> 9); | ||
233 | size = PAGE_CACHE_SIZE - offset; | ||
234 | if (size > len) | ||
235 | size = len; | ||
236 | |||
237 | ret = pagecache_write_begin(file, mapping, pos, size, 0, | ||
238 | &page, &fsdata); | ||
239 | if (ret) | ||
240 | goto fail; | ||
241 | |||
242 | file_update_time(file); | ||
243 | |||
244 | transfer_result = lo_do_transfer(lo, WRITE, page, offset, | ||
245 | bvec->bv_page, bv_offs, size, IV); | ||
246 | copied = size; | ||
247 | if (unlikely(transfer_result)) | ||
248 | copied = 0; | ||
249 | |||
250 | ret = pagecache_write_end(file, mapping, pos, size, copied, | ||
251 | page, fsdata); | ||
252 | if (ret < 0 || ret != copied) | ||
253 | goto fail; | ||
254 | |||
255 | if (unlikely(transfer_result)) | ||
256 | goto fail; | ||
257 | |||
258 | bv_offs += copied; | ||
259 | len -= copied; | ||
260 | offset = 0; | ||
261 | index++; | ||
262 | pos += copied; | ||
263 | } | ||
264 | ret = 0; | ||
265 | out: | ||
266 | mutex_unlock(&mapping->host->i_mutex); | ||
267 | return ret; | ||
268 | fail: | ||
269 | ret = -1; | ||
270 | goto out; | ||
271 | } | ||
272 | |||
273 | /** | ||
274 | * __do_lo_send_write - helper for writing data to a loop device | 206 | * __do_lo_send_write - helper for writing data to a loop device |
275 | * | 207 | * |
276 | * This helper just factors out common code between do_lo_send_direct_write() | 208 | * This helper just factors out common code between do_lo_send_direct_write() |
@@ -297,10 +229,8 @@ static int __do_lo_send_write(struct file *file, | |||
297 | /** | 229 | /** |
298 | * do_lo_send_direct_write - helper for writing data to a loop device | 230 | * do_lo_send_direct_write - helper for writing data to a loop device |
299 | * | 231 | * |
300 | * This is the fast, non-transforming version for backing filesystems which do | 232 | * This is the fast, non-transforming version that does not need double |
301 | * not implement the address space operations write_begin and write_end. | 233 | * buffering. |
302 | * It uses the write file operation which should be present on all writeable | ||
303 | * filesystems. | ||
304 | */ | 234 | */ |
305 | static int do_lo_send_direct_write(struct loop_device *lo, | 235 | static int do_lo_send_direct_write(struct loop_device *lo, |
306 | struct bio_vec *bvec, loff_t pos, struct page *page) | 236 | struct bio_vec *bvec, loff_t pos, struct page *page) |
@@ -316,15 +246,9 @@ static int do_lo_send_direct_write(struct loop_device *lo, | |||
316 | /** | 246 | /** |
317 | * do_lo_send_write - helper for writing data to a loop device | 247 | * do_lo_send_write - helper for writing data to a loop device |
318 | * | 248 | * |
319 | * This is the slow, transforming version for filesystems which do not | 249 | * This is the slow, transforming version that needs to double buffer the |
320 | * implement the address space operations write_begin and write_end. It | 250 | * data as it cannot do the transformations in place without having direct |
321 | * uses the write file operation which should be present on all writeable | 251 | * access to the destination pages of the backing file. |
322 | * filesystems. | ||
323 | * | ||
324 | * Using fops->write is slower than using aops->{prepare,commit}_write in the | ||
325 | * transforming case because we need to double buffer the data as we cannot do | ||
326 | * the transformations in place as we do not have direct access to the | ||
327 | * destination pages of the backing file. | ||
328 | */ | 252 | */ |
329 | static int do_lo_send_write(struct loop_device *lo, struct bio_vec *bvec, | 253 | static int do_lo_send_write(struct loop_device *lo, struct bio_vec *bvec, |
330 | loff_t pos, struct page *page) | 254 | loff_t pos, struct page *page) |
@@ -350,17 +274,16 @@ static int lo_send(struct loop_device *lo, struct bio *bio, loff_t pos) | |||
350 | struct page *page = NULL; | 274 | struct page *page = NULL; |
351 | int i, ret = 0; | 275 | int i, ret = 0; |
352 | 276 | ||
353 | do_lo_send = do_lo_send_aops; | 277 | if (lo->transfer != transfer_none) { |
354 | if (!(lo->lo_flags & LO_FLAGS_USE_AOPS)) { | 278 | page = alloc_page(GFP_NOIO | __GFP_HIGHMEM); |
279 | if (unlikely(!page)) | ||
280 | goto fail; | ||
281 | kmap(page); | ||
282 | do_lo_send = do_lo_send_write; | ||
283 | } else { | ||
355 | do_lo_send = do_lo_send_direct_write; | 284 | do_lo_send = do_lo_send_direct_write; |
356 | if (lo->transfer != transfer_none) { | ||
357 | page = alloc_page(GFP_NOIO | __GFP_HIGHMEM); | ||
358 | if (unlikely(!page)) | ||
359 | goto fail; | ||
360 | kmap(page); | ||
361 | do_lo_send = do_lo_send_write; | ||
362 | } | ||
363 | } | 285 | } |
286 | |||
364 | bio_for_each_segment(bvec, bio, i) { | 287 | bio_for_each_segment(bvec, bio, i) { |
365 | ret = do_lo_send(lo, bvec, pos, page); | 288 | ret = do_lo_send(lo, bvec, pos, page); |
366 | if (ret < 0) | 289 | if (ret < 0) |
@@ -514,7 +437,7 @@ static struct bio *loop_get_bio(struct loop_device *lo) | |||
514 | return bio_list_pop(&lo->lo_bio_list); | 437 | return bio_list_pop(&lo->lo_bio_list); |
515 | } | 438 | } |
516 | 439 | ||
517 | static int loop_make_request(struct request_queue *q, struct bio *old_bio) | 440 | static void loop_make_request(struct request_queue *q, struct bio *old_bio) |
518 | { | 441 | { |
519 | struct loop_device *lo = q->queuedata; | 442 | struct loop_device *lo = q->queuedata; |
520 | int rw = bio_rw(old_bio); | 443 | int rw = bio_rw(old_bio); |
@@ -532,12 +455,11 @@ static int loop_make_request(struct request_queue *q, struct bio *old_bio) | |||
532 | loop_add_bio(lo, old_bio); | 455 | loop_add_bio(lo, old_bio); |
533 | wake_up(&lo->lo_event); | 456 | wake_up(&lo->lo_event); |
534 | spin_unlock_irq(&lo->lo_lock); | 457 | spin_unlock_irq(&lo->lo_lock); |
535 | return 0; | 458 | return; |
536 | 459 | ||
537 | out: | 460 | out: |
538 | spin_unlock_irq(&lo->lo_lock); | 461 | spin_unlock_irq(&lo->lo_lock); |
539 | bio_io_error(old_bio); | 462 | bio_io_error(old_bio); |
540 | return 0; | ||
541 | } | 463 | } |
542 | 464 | ||
543 | struct switch_request { | 465 | struct switch_request { |
@@ -849,35 +771,23 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode, | |||
849 | mapping = file->f_mapping; | 771 | mapping = file->f_mapping; |
850 | inode = mapping->host; | 772 | inode = mapping->host; |
851 | 773 | ||
852 | if (!(file->f_mode & FMODE_WRITE)) | ||
853 | lo_flags |= LO_FLAGS_READ_ONLY; | ||
854 | |||
855 | error = -EINVAL; | 774 | error = -EINVAL; |
856 | if (S_ISREG(inode->i_mode) || S_ISBLK(inode->i_mode)) { | 775 | if (!S_ISREG(inode->i_mode) && !S_ISBLK(inode->i_mode)) |
857 | const struct address_space_operations *aops = mapping->a_ops; | 776 | goto out_putf; |
858 | |||
859 | if (aops->write_begin) | ||
860 | lo_flags |= LO_FLAGS_USE_AOPS; | ||
861 | if (!(lo_flags & LO_FLAGS_USE_AOPS) && !file->f_op->write) | ||
862 | lo_flags |= LO_FLAGS_READ_ONLY; | ||
863 | 777 | ||
864 | lo_blocksize = S_ISBLK(inode->i_mode) ? | 778 | if (!(file->f_mode & FMODE_WRITE) || !(mode & FMODE_WRITE) || |
865 | inode->i_bdev->bd_block_size : PAGE_SIZE; | 779 | !file->f_op->write) |
780 | lo_flags |= LO_FLAGS_READ_ONLY; | ||
866 | 781 | ||
867 | error = 0; | 782 | lo_blocksize = S_ISBLK(inode->i_mode) ? |
868 | } else { | 783 | inode->i_bdev->bd_block_size : PAGE_SIZE; |
869 | goto out_putf; | ||
870 | } | ||
871 | 784 | ||
785 | error = -EFBIG; | ||
872 | size = get_loop_size(lo, file); | 786 | size = get_loop_size(lo, file); |
873 | 787 | if ((loff_t)(sector_t)size != size) | |
874 | if ((loff_t)(sector_t)size != size) { | ||
875 | error = -EFBIG; | ||
876 | goto out_putf; | 788 | goto out_putf; |
877 | } | ||
878 | 789 | ||
879 | if (!(mode & FMODE_WRITE)) | 790 | error = 0; |
880 | lo_flags |= LO_FLAGS_READ_ONLY; | ||
881 | 791 | ||
882 | set_device_ro(bdev, (lo_flags & LO_FLAGS_READ_ONLY) != 0); | 792 | set_device_ro(bdev, (lo_flags & LO_FLAGS_READ_ONLY) != 0); |
883 | 793 | ||
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index e133f094ab08..a63b0a2b7805 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c | |||
@@ -2444,7 +2444,7 @@ static void pkt_end_io_read_cloned(struct bio *bio, int err) | |||
2444 | pkt_bio_finished(pd); | 2444 | pkt_bio_finished(pd); |
2445 | } | 2445 | } |
2446 | 2446 | ||
2447 | static int pkt_make_request(struct request_queue *q, struct bio *bio) | 2447 | static void pkt_make_request(struct request_queue *q, struct bio *bio) |
2448 | { | 2448 | { |
2449 | struct pktcdvd_device *pd; | 2449 | struct pktcdvd_device *pd; |
2450 | char b[BDEVNAME_SIZE]; | 2450 | char b[BDEVNAME_SIZE]; |
@@ -2473,7 +2473,7 @@ static int pkt_make_request(struct request_queue *q, struct bio *bio) | |||
2473 | cloned_bio->bi_end_io = pkt_end_io_read_cloned; | 2473 | cloned_bio->bi_end_io = pkt_end_io_read_cloned; |
2474 | pd->stats.secs_r += bio->bi_size >> 9; | 2474 | pd->stats.secs_r += bio->bi_size >> 9; |
2475 | pkt_queue_bio(pd, cloned_bio); | 2475 | pkt_queue_bio(pd, cloned_bio); |
2476 | return 0; | 2476 | return; |
2477 | } | 2477 | } |
2478 | 2478 | ||
2479 | if (!test_bit(PACKET_WRITABLE, &pd->flags)) { | 2479 | if (!test_bit(PACKET_WRITABLE, &pd->flags)) { |
@@ -2509,7 +2509,7 @@ static int pkt_make_request(struct request_queue *q, struct bio *bio) | |||
2509 | pkt_make_request(q, &bp->bio1); | 2509 | pkt_make_request(q, &bp->bio1); |
2510 | pkt_make_request(q, &bp->bio2); | 2510 | pkt_make_request(q, &bp->bio2); |
2511 | bio_pair_release(bp); | 2511 | bio_pair_release(bp); |
2512 | return 0; | 2512 | return; |
2513 | } | 2513 | } |
2514 | } | 2514 | } |
2515 | 2515 | ||
@@ -2533,7 +2533,7 @@ static int pkt_make_request(struct request_queue *q, struct bio *bio) | |||
2533 | } | 2533 | } |
2534 | spin_unlock(&pkt->lock); | 2534 | spin_unlock(&pkt->lock); |
2535 | spin_unlock(&pd->cdrw.active_list_lock); | 2535 | spin_unlock(&pd->cdrw.active_list_lock); |
2536 | return 0; | 2536 | return; |
2537 | } else { | 2537 | } else { |
2538 | blocked_bio = 1; | 2538 | blocked_bio = 1; |
2539 | } | 2539 | } |
@@ -2584,10 +2584,9 @@ static int pkt_make_request(struct request_queue *q, struct bio *bio) | |||
2584 | */ | 2584 | */ |
2585 | wake_up(&pd->wqueue); | 2585 | wake_up(&pd->wqueue); |
2586 | } | 2586 | } |
2587 | return 0; | 2587 | return; |
2588 | end_io: | 2588 | end_io: |
2589 | bio_io_error(bio); | 2589 | bio_io_error(bio); |
2590 | return 0; | ||
2591 | } | 2590 | } |
2592 | 2591 | ||
2593 | 2592 | ||
diff --git a/drivers/block/ps3vram.c b/drivers/block/ps3vram.c index b3bdb8af89cf..7fad7af87eb2 100644 --- a/drivers/block/ps3vram.c +++ b/drivers/block/ps3vram.c | |||
@@ -596,7 +596,7 @@ out: | |||
596 | return next; | 596 | return next; |
597 | } | 597 | } |
598 | 598 | ||
599 | static int ps3vram_make_request(struct request_queue *q, struct bio *bio) | 599 | static void ps3vram_make_request(struct request_queue *q, struct bio *bio) |
600 | { | 600 | { |
601 | struct ps3_system_bus_device *dev = q->queuedata; | 601 | struct ps3_system_bus_device *dev = q->queuedata; |
602 | struct ps3vram_priv *priv = ps3_system_bus_get_drvdata(dev); | 602 | struct ps3vram_priv *priv = ps3_system_bus_get_drvdata(dev); |
@@ -610,13 +610,11 @@ static int ps3vram_make_request(struct request_queue *q, struct bio *bio) | |||
610 | spin_unlock_irq(&priv->lock); | 610 | spin_unlock_irq(&priv->lock); |
611 | 611 | ||
612 | if (busy) | 612 | if (busy) |
613 | return 0; | 613 | return; |
614 | 614 | ||
615 | do { | 615 | do { |
616 | bio = ps3vram_do_bio(dev, bio); | 616 | bio = ps3vram_do_bio(dev, bio); |
617 | } while (bio); | 617 | } while (bio); |
618 | |||
619 | return 0; | ||
620 | } | 618 | } |
621 | 619 | ||
622 | static int __devinit ps3vram_probe(struct ps3_system_bus_device *dev) | 620 | static int __devinit ps3vram_probe(struct ps3_system_bus_device *dev) |
diff --git a/drivers/block/umem.c b/drivers/block/umem.c index 031ca720d926..aa2712060bfb 100644 --- a/drivers/block/umem.c +++ b/drivers/block/umem.c | |||
@@ -513,7 +513,7 @@ static void process_page(unsigned long data) | |||
513 | } | 513 | } |
514 | } | 514 | } |
515 | 515 | ||
516 | static int mm_make_request(struct request_queue *q, struct bio *bio) | 516 | static void mm_make_request(struct request_queue *q, struct bio *bio) |
517 | { | 517 | { |
518 | struct cardinfo *card = q->queuedata; | 518 | struct cardinfo *card = q->queuedata; |
519 | pr_debug("mm_make_request %llu %u\n", | 519 | pr_debug("mm_make_request %llu %u\n", |
@@ -525,7 +525,7 @@ static int mm_make_request(struct request_queue *q, struct bio *bio) | |||
525 | card->biotail = &bio->bi_next; | 525 | card->biotail = &bio->bi_next; |
526 | spin_unlock_irq(&card->lock); | 526 | spin_unlock_irq(&card->lock); |
527 | 527 | ||
528 | return 0; | 528 | return; |
529 | } | 529 | } |
530 | 530 | ||
531 | static irqreturn_t mm_interrupt(int irq, void *__card) | 531 | static irqreturn_t mm_interrupt(int irq, void *__card) |