Commit a18b9b15 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

block: move bio_associate_blkg_from_page to mm/page_io.c



bio_associate_blkg_from_page is a special purpose helper for swap bios
that doesn't need access to bio internals.  Move it to the swap code
instead of having it in bio.c.

Acked-by: default avatarTejun Heo <tj@kernel.org>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 2badf06c
Loading
Loading
Loading
Loading
+0 −26
Original line number Diff line number Diff line
@@ -1659,32 +1659,6 @@ void bio_associate_blkg_from_css(struct bio *bio,
}
EXPORT_SYMBOL_GPL(bio_associate_blkg_from_css);

#ifdef CONFIG_MEMCG
/**
 * bio_associate_blkg_from_page - associate a bio with the page's blkg
 * @bio: target bio
 * @page: the page to lookup the blkcg from
 *
 * Associate @bio with the blkg from @page's owning memcg and the respective
 * request_queue.  If cgroup_e_css returns %NULL, fall back to the queue's
 * root_blkg.
 */
void bio_associate_blkg_from_page(struct bio *bio, struct page *page)
{
	struct cgroup_subsys_state *css;

	if (!page->mem_cgroup)
		return;

	rcu_read_lock();

	css = cgroup_e_css(page->mem_cgroup->css.cgroup, &io_cgrp_subsys);
	bio_associate_blkg_from_css(bio, css);

	rcu_read_unlock();
}
#endif /* CONFIG_MEMCG */

/**
 * bio_associate_blkg - associate a bio with a blkg
 * @bio: target bio
+0 −7
Original line number Diff line number Diff line
@@ -489,13 +489,6 @@ do { \
#define bio_dev(bio) \
	disk_devt((bio)->bi_disk)

#if defined(CONFIG_MEMCG) && defined(CONFIG_BLK_CGROUP)
void bio_associate_blkg_from_page(struct bio *bio, struct page *page);
#else
static inline void bio_associate_blkg_from_page(struct bio *bio,
						struct page *page) { }
#endif

#ifdef CONFIG_BLK_CGROUP
void bio_associate_blkg(struct bio *bio);
void bio_associate_blkg_from_css(struct bio *bio,
+17 −0
Original line number Diff line number Diff line
@@ -277,6 +277,23 @@ static inline void count_swpout_vm_event(struct page *page)
	count_vm_events(PSWPOUT, hpage_nr_pages(page));
}

#if defined(CONFIG_MEMCG) && defined(CONFIG_BLK_CGROUP)
static void bio_associate_blkg_from_page(struct bio *bio, struct page *page)
{
	struct cgroup_subsys_state *css;

	if (!page->mem_cgroup)
		return;

	rcu_read_lock();
	css = cgroup_e_css(page->mem_cgroup->css.cgroup, &io_cgrp_subsys);
	bio_associate_blkg_from_css(bio, css);
	rcu_read_unlock();
}
#else
#define bio_associate_blkg_from_page(bio, page)		do { } while (0)
#endif /* CONFIG_MEMCG && CONFIG_BLK_CGROUP */

int __swap_writepage(struct page *page, struct writeback_control *wbc,
		bio_end_io_t end_write_func)
{