Skip to content

Commit

Permalink
block: move bio_associate_blkg_from_page to mm/page_io.c
Browse files Browse the repository at this point in the history
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: Tejun Heo <tj@kernel.org>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
  • Loading branch information
Christoph Hellwig authored and axboe committed Jun 29, 2020
1 parent 2badf06 commit a18b9b1
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 33 deletions.
26 changes: 0 additions & 26 deletions block/bio.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 0 additions & 7 deletions include/linux/bio.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
17 changes: 17 additions & 0 deletions mm/page_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down

0 comments on commit a18b9b1

Please sign in to comment.