Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1cdb7f9c authored by Jan Kara's avatar Jan Kara Committed by Gerrit - the friendly Code Review server
Browse files

block: Use pointer to backing_dev_info from request_queue



We will want to have struct backing_dev_info allocated separately from
struct request_queue. As the first step add pointer to backing_dev_info
to request_queue and convert all users touching it. No functional
changes in this patch.

Change-Id: Ib99961747ed2d58cc2f9c0581c66c55a49aaee4b
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
Git-commit: dc3b17cc8bf21307c7e076e7c778d5db756f7871
Git-repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git


[riteshh@codeaurora.org: Resolved minor merge conflicts]
Signed-off-by: default avatarRitesh Harjani <riteshh@codeaurora.org>
parent 9507b39a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -184,7 +184,7 @@ static struct blkcg_gq *blkg_create(struct blkcg *blkcg,
		goto err_free_blkg;
	}

	wb_congested = wb_congested_get_create(&q->backing_dev_info,
	wb_congested = wb_congested_get_create(q->backing_dev_info,
					       blkcg->css.id,
					       GFP_NOWAIT | __GFP_NOWARN);
	if (!wb_congested) {
@@ -469,8 +469,8 @@ static int blkcg_reset_stats(struct cgroup_subsys_state *css,
const char *blkg_dev_name(struct blkcg_gq *blkg)
{
	/* some drivers (floppy) instantiate a queue w/o disk registered */
	if (blkg->q->backing_dev_info.dev)
		return dev_name(blkg->q->backing_dev_info.dev);
	if (blkg->q->backing_dev_info->dev)
		return dev_name(blkg->q->backing_dev_info->dev);
	return NULL;
}
EXPORT_SYMBOL_GPL(blkg_dev_name);
+14 −13
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ static void blk_clear_congested(struct request_list *rl, int sync)
	 * flip its congestion state for events on other blkcgs.
	 */
	if (rl == &rl->q->root_rl)
		clear_wb_congested(rl->q->backing_dev_info.wb.congested, sync);
		clear_wb_congested(rl->q->backing_dev_info->wb.congested, sync);
#endif
}

@@ -86,7 +86,7 @@ static void blk_set_congested(struct request_list *rl, int sync)
#else
	/* see blk_clear_congested() */
	if (rl == &rl->q->root_rl)
		set_wb_congested(rl->q->backing_dev_info.wb.congested, sync);
		set_wb_congested(rl->q->backing_dev_info->wb.congested, sync);
#endif
}

@@ -117,7 +117,7 @@ struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev)
{
	struct request_queue *q = bdev_get_queue(bdev);

	return &q->backing_dev_info;
	return q->backing_dev_info;
}
EXPORT_SYMBOL(blk_get_backing_dev_info);

@@ -586,7 +586,7 @@ void blk_cleanup_queue(struct request_queue *q)
	blk_flush_integrity();

	/* @q won't process any more request, flush async actions */
	del_timer_sync(&q->backing_dev_info.laptop_mode_wb_timer);
	del_timer_sync(&q->backing_dev_info->laptop_mode_wb_timer);
	blk_sync_queue(q);

	if (q->mq_ops)
@@ -598,7 +598,7 @@ void blk_cleanup_queue(struct request_queue *q)
		q->queue_lock = &q->__queue_lock;
	spin_unlock_irq(lock);

	bdi_unregister(&q->backing_dev_info);
	bdi_unregister(q->backing_dev_info);

	/* @q is and will stay empty, shutdown and put */
	blk_put_queue(q);
@@ -710,17 +710,18 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
	if (!q->bio_split)
		goto fail_id;

	q->backing_dev_info.ra_pages =
	q->backing_dev_info = &q->_backing_dev_info;
	q->backing_dev_info->ra_pages =
			(VM_MAX_READAHEAD * 1024) / PAGE_SIZE;
	q->backing_dev_info.capabilities = BDI_CAP_CGROUP_WRITEBACK;
	q->backing_dev_info.name = "block";
	q->backing_dev_info->capabilities = BDI_CAP_CGROUP_WRITEBACK;
	q->backing_dev_info->name = "block";
	q->node = node_id;

	err = bdi_init(&q->backing_dev_info);
	err = bdi_init(q->backing_dev_info);
	if (err)
		goto fail_split;

	setup_timer(&q->backing_dev_info.laptop_mode_wb_timer,
	setup_timer(&q->backing_dev_info->laptop_mode_wb_timer,
		    laptop_mode_timer_fn, (unsigned long) q);
	setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q);
	INIT_WORK(&q->timeout_work, NULL);
@@ -771,7 +772,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
fail_ref:
	percpu_ref_exit(&q->q_usage_counter);
fail_bdi:
	bdi_destroy(&q->backing_dev_info);
	bdi_destroy(q->backing_dev_info);
fail_split:
	bioset_free(q->bio_split);
fail_id:
@@ -1197,7 +1198,7 @@ static struct request *__get_request(struct request_list *rl, int op,
	 * disturb iosched and blkcg but weird is bettern than dead.
	 */
	printk_ratelimited(KERN_WARNING "%s: dev %s: request aux data allocation failed, iosched may be disturbed\n",
			   __func__, dev_name(q->backing_dev_info.dev));
			   __func__, dev_name(q->backing_dev_info->dev));

	rq->cmd_flags &= ~REQ_ELVPRIV;
	rq->elv.icq = NULL;
@@ -2739,7 +2740,7 @@ void blk_finish_request(struct request *req, int error)
	BUG_ON(blk_queued_rq(req));

	if (unlikely(laptop_mode) && req->cmd_type == REQ_TYPE_FS)
		laptop_io_completion(&req->q->backing_dev_info);
		laptop_io_completion(req->q->backing_dev_info);

	blk_delete_timer(req);

+2 −2
Original line number Diff line number Diff line
@@ -418,7 +418,7 @@ void blk_integrity_register(struct gendisk *disk, struct blk_integrity *template
	bi->tuple_size = template->tuple_size;
	bi->tag_size = template->tag_size;

	disk->queue->backing_dev_info.capabilities |= BDI_CAP_STABLE_WRITES;
	disk->queue->backing_dev_info->capabilities |= BDI_CAP_STABLE_WRITES;
}
EXPORT_SYMBOL(blk_integrity_register);

@@ -431,7 +431,7 @@ EXPORT_SYMBOL(blk_integrity_register);
 */
void blk_integrity_unregister(struct gendisk *disk)
{
	disk->queue->backing_dev_info.capabilities &= ~BDI_CAP_STABLE_WRITES;
	disk->queue->backing_dev_info->capabilities &= ~BDI_CAP_STABLE_WRITES;
	memset(&disk->queue->integrity, 0, sizeof(struct blk_integrity));
}
EXPORT_SYMBOL(blk_integrity_unregister);
+3 −3
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ queue_requests_store(struct request_queue *q, const char *page, size_t count)

static ssize_t queue_ra_show(struct request_queue *q, char *page)
{
	unsigned long ra_kb = q->backing_dev_info.ra_pages <<
	unsigned long ra_kb = q->backing_dev_info->ra_pages <<
					(PAGE_SHIFT - 10);

	return queue_var_show(ra_kb, (page));
@@ -90,7 +90,7 @@ queue_ra_store(struct request_queue *q, const char *page, size_t count)
	if (ret < 0)
		return ret;

	q->backing_dev_info.ra_pages = ra_kb >> (PAGE_SHIFT - 10);
	q->backing_dev_info->ra_pages = ra_kb >> (PAGE_SHIFT - 10);

	return ret;
}
@@ -627,7 +627,7 @@ static void blk_release_queue(struct kobject *kobj)
	struct request_queue *q =
		container_of(kobj, struct request_queue, kobj);

	bdi_exit(&q->backing_dev_info);
	bdi_exit(q->backing_dev_info);
	blkcg_exit_queue(q);

	if (q->elevator) {
+1 −1
Original line number Diff line number Diff line
@@ -613,7 +613,7 @@ void device_add_disk(struct device *parent, struct gendisk *disk)
	disk_alloc_events(disk);

	/* Register BDI before referencing it from bdev */
	bdi = &disk->queue->backing_dev_info;
	bdi = disk->queue->backing_dev_info;
	bdi_register_owner(bdi, disk_to_dev(disk));

	blk_register_region(disk_devt(disk), disk->minors, NULL,
Loading