]> err.no Git - linux-2.6/blobdiff - block/ll_rw_blk.c
[SCSI] Add SATA support to libsas
[linux-2.6] / block / ll_rw_blk.c
index 3795e0708a229b9641d2c70354b81e641dc3853b..d7cadf304168694d9ce542eea5f1c02930331a8a 100644 (file)
@@ -256,6 +256,7 @@ static void rq_init(request_queue_t *q, struct request *rq)
        rq->end_io = NULL;
        rq->end_io_data = NULL;
        rq->completion_data = NULL;
+       rq->next_rq = NULL;
 }
 
 /**
@@ -1828,11 +1829,11 @@ request_queue_t *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
 {
        request_queue_t *q;
 
-       q = kmem_cache_alloc_node(requestq_cachep, gfp_mask, node_id);
+       q = kmem_cache_alloc_node(requestq_cachep,
+                               gfp_mask | __GFP_ZERO, node_id);
        if (!q)
                return NULL;
 
-       memset(q, 0, sizeof(*q));
        init_timer(&q->unplug_timer);
 
        snprintf(q->kobj.name, KOBJ_NAME_LEN, "%s", "queue");
@@ -4091,13 +4092,6 @@ int blk_register_queue(struct gendisk *disk)
                return ret;
        }
 
-       ret = bsg_register_disk(disk);
-       if (ret) {
-               elv_unregister_queue(q);
-               kobject_unregister(&q->kobj);
-               return ret;
-       }
-
        return 0;
 }
 
@@ -4106,7 +4100,6 @@ void blk_unregister_queue(struct gendisk *disk)
        request_queue_t *q = disk->queue;
 
        if (q && q->request_fn) {
-               bsg_unregister_disk(disk);
                elv_unregister_queue(q);
 
                kobject_uevent(&q->kobj, KOBJ_REMOVE);