aboutsummaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-10-21 00:54:21 -0700
committerDavid S. Miller <davem@davemloft.net>2010-10-21 00:54:21 -0700
commit4c2a1b86644a6f3fc6b788d3a591563aff71f836 (patch)
treef615b0d88e2039ebc0ada2daf5009411f43febb9 /block
parente2269308359d5863b6aa1fcb95a425a2ab255f1f (diff)
parentf6f94e2ab1b33f0082ac22d71f66385a60d8157f (diff)
downloadkernel_samsung_crespo-4c2a1b86644a6f3fc6b788d3a591563aff71f836.zip
kernel_samsung_crespo-4c2a1b86644a6f3fc6b788d3a591563aff71f836.tar.gz
kernel_samsung_crespo-4c2a1b86644a6f3fc6b788d3a591563aff71f836.tar.bz2
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Diffstat (limited to 'block')
-rw-r--r--block/bsg.c2
-rw-r--r--block/elevator.c12
2 files changed, 9 insertions, 5 deletions
diff --git a/block/bsg.c b/block/bsg.c
index 82d5882..0c00870 100644
--- a/block/bsg.c
+++ b/block/bsg.c
@@ -426,7 +426,7 @@ static int blk_complete_sgv4_hdr_rq(struct request *rq, struct sg_io_v4 *hdr,
/*
* fill in all the output members
*/
- hdr->device_status = status_byte(rq->errors);
+ hdr->device_status = rq->errors & 0xff;
hdr->transport_status = host_byte(rq->errors);
hdr->driver_status = driver_byte(rq->errors);
hdr->info = 0;
diff --git a/block/elevator.c b/block/elevator.c
index 205b09a..4e11559 100644
--- a/block/elevator.c
+++ b/block/elevator.c
@@ -938,6 +938,7 @@ int elv_register_queue(struct request_queue *q)
}
}
kobject_uevent(&e->kobj, KOBJ_ADD);
+ e->registered = 1;
}
return error;
}
@@ -947,6 +948,7 @@ static void __elv_unregister_queue(struct elevator_queue *e)
{
kobject_uevent(&e->kobj, KOBJ_REMOVE);
kobject_del(&e->kobj);
+ e->registered = 0;
}
void elv_unregister_queue(struct request_queue *q)
@@ -1042,11 +1044,13 @@ static int elevator_switch(struct request_queue *q, struct elevator_type *new_e)
spin_unlock_irq(q->queue_lock);
- __elv_unregister_queue(old_elevator);
+ if (old_elevator->registered) {
+ __elv_unregister_queue(old_elevator);
- err = elv_register_queue(q);
- if (err)
- goto fail_register;
+ err = elv_register_queue(q);
+ if (err)
+ goto fail_register;
+ }
/*
* finally exit old elevator and turn off BYPASS.