From: Sergey Senozhatsky Date: Thu, 12 Feb 2015 23:00:48 +0000 (-0800) Subject: zram: remove request_queue from struct zram X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=ee98016010ae036a5b27300d83bd99ef3fd5776e;p=openwrt%2Fstaging%2Fblogic.git zram: remove request_queue from struct zram `struct zram' contains both `struct gendisk' and `struct request_queue'. the latter can be deleted, because zram->disk carries ->queue pointer, and ->queue carries zram pointer: create_device() zram->queue->queuedata = zram zram->disk->queue = zram->queue zram->disk->private_data = zram so zram->queue is not needed, we can access all necessary data anyway. Signed-off-by: Sergey Senozhatsky Cc: Minchan Kim Cc: Jerome Marchand Cc: Nitin Gupta Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c index db94572b35c4..eca4b67274c1 100644 --- a/drivers/block/zram/zram_drv.c +++ b/drivers/block/zram/zram_drv.c @@ -1061,19 +1061,19 @@ static struct attribute_group zram_disk_attr_group = { static int create_device(struct zram *zram, int device_id) { + struct request_queue *queue; int ret = -ENOMEM; init_rwsem(&zram->init_lock); - zram->queue = blk_alloc_queue(GFP_KERNEL); - if (!zram->queue) { + queue = blk_alloc_queue(GFP_KERNEL); + if (!queue) { pr_err("Error allocating disk queue for device %d\n", device_id); goto out; } - blk_queue_make_request(zram->queue, zram_make_request); - zram->queue->queuedata = zram; + blk_queue_make_request(queue, zram_make_request); /* gendisk structure */ zram->disk = alloc_disk(1); @@ -1086,7 +1086,8 @@ static int create_device(struct zram *zram, int device_id) zram->disk->major = zram_major; zram->disk->first_minor = device_id; zram->disk->fops = &zram_devops; - zram->disk->queue = zram->queue; + zram->disk->queue = queue; + zram->disk->queue->queuedata = zram; zram->disk->private_data = zram; snprintf(zram->disk->disk_name, 16, "zram%d", device_id); @@ -1137,7 +1138,7 @@ out_free_disk: del_gendisk(zram->disk); put_disk(zram->disk); out_free_queue: - blk_cleanup_queue(zram->queue); + blk_cleanup_queue(queue); out: return ret; } @@ -1158,10 +1159,9 @@ static void destroy_devices(unsigned int nr) zram_reset_device(zram); + blk_cleanup_queue(zram->disk->queue); del_gendisk(zram->disk); put_disk(zram->disk); - - blk_cleanup_queue(zram->queue); } kfree(zram_devices); diff --git a/drivers/block/zram/zram_drv.h b/drivers/block/zram/zram_drv.h index 5249f51ccdb3..17056e589146 100644 --- a/drivers/block/zram/zram_drv.h +++ b/drivers/block/zram/zram_drv.h @@ -101,7 +101,6 @@ struct zram_meta { struct zram { struct zram_meta *meta; struct zcomp *comp; - struct request_queue *queue; struct gendisk *disk; /* Prevent concurrent execution of device init */ struct rw_semaphore init_lock;