linux/block
Tejun Heo 6f41469c62 block: clear req->errors on bio completion only for fs requests
Impact: subtle behavior change

For fs requests, rq is only carrier of bios and rq error status as a
whole doesn't mean much.  This is the reason why rq->errors is being
cleared on each partial completion of a request as on each partial
completion the error status is transferred to the respective bios.

For pc requests, rq->errors is used to carry error status to the
issuer and thus __end_that_request_first() doesn't clear it on such
cases.

The condition was fine till now as only fs and pc requests have used
bio and thus the bio completion path.  However, future changes will
unify data accesses to bio and all non fs users care about rq error
status.  Clear rq->errors on bio completion only for fs requests.

In general, the implicit clearing is a bit too subtle especially as
the meaning of rq->errors is completely dependent on low level
drivers.  Unifying / cleaning up rq->errors usage and letting llds
manage it would be better.  TODO comment added.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Jens Axboe <axboe@kernel.dk>
2009-04-19 07:00:41 +09:00
..
as-iosched.c as-iosched: get rid of private REQ_SYNC/REQ_ASYNC defines 2009-04-15 08:28:10 +02:00
blk-barrier.c block: Remove code handling bio_alloc failure with __GFP_WAIT 2009-04-15 12:10:12 +02:00
blk-core.c block: clear req->errors on bio completion only for fs requests 2009-04-19 07:00:41 +09:00
blk-exec.c Add some block/ source files to the kernel-api docbook. Fix kernel-doc notation in them as needed. Fix changed function parameter names. Fix typos/spellos. In comments, change REQ_SPECIAL to REQ_TYPE_SPECIAL and REQ_BLOCK_PC to REQ_TYPE_BLOCK_PC. 2008-10-09 08:56:03 +02:00
blk-integrity.c block: Allow empty integrity profile 2009-01-30 12:34:36 +01:00
blk-ioc.c cfq-iosched: fix RCU race in the cfq io_context destructor handling 2008-05-07 09:28:57 +02:00
blk-map.c [SCSI] block: make blk_rq_map_user take a NULL user-space buffer for WRITE 2009-01-02 11:10:35 -06:00
blk-merge.c block: fix inconsistency in I/O stat accounting code 2009-04-07 08:12:38 +02:00
blk-settings.c pata_artop: typo 2009-04-06 20:00:29 -04:00
blk-softirq.c generic-ipi: remove CSD_FLAG_WAIT 2009-02-25 14:13:44 +01:00
blk-sysfs.c block: fix bad spelling of quiesce 2009-04-15 08:28:09 +02:00
blk-tag.c block/blk-tag.c: cleanup kernel-doc 2008-12-29 08:28:43 +01:00
blk-timeout.c block: fix deadlock in blk_abort_queue() for drivers that readd to timeout list 2009-02-18 10:34:16 +01:00
blk.h block: fix bad spelling of quiesce 2009-04-15 08:28:09 +02:00
bsg.c bsg: Remove bogus check against request_queue->max_sectors 2009-03-26 11:01:25 +01:00
cfq-iosched.c cfq-iosched: add close cooperator code 2009-04-15 12:15:11 +02:00
cmd-filter.c [SCSI] Make scsi.h independent of the rest of the scsi includes 2009-03-12 12:58:13 -05:00
compat_ioctl.c block: don't take lock on changing ra_pages 2008-12-29 08:28:43 +01:00
deadline-iosched.c block: get rid of elevator_t typedef 2008-12-29 08:29:50 +01:00
elevator.c block: fix bad spelling of quiesce 2009-04-15 08:28:09 +02:00
genhd.c block: add documentation for register_blkdev() 2009-02-26 10:45:48 +01:00
ioctl.c block: Remove code handling bio_alloc failure with __GFP_WAIT 2009-04-15 12:10:12 +02:00
Kconfig tracing/blktrace: move the tracing file to kernel/trace 2009-02-09 10:51:02 +01:00
Kconfig.iosched update I/O sched Kconfig help texts - CFQ is now default, not AS. 2007-02-17 20:08:22 +01:00
Makefile tracing/blktrace: move the tracing file to kernel/trace 2009-02-09 10:51:02 +01:00
noop-iosched.c block: get rid of elevator_t typedef 2008-12-29 08:29:50 +01:00
scsi_ioctl.c block: fix SG_IO to return a proper error value 2009-04-15 12:10:11 +02:00