|
@@ -19,6 +19,7 @@
|
|
|
#include <linux/radix-tree.h>
|
|
|
#include <linux/blkdev.h>
|
|
|
#include <linux/atomic.h>
|
|
|
+#include <linux/kthread.h>
|
|
|
|
|
|
/* percpu_counter batch for blkg_[rw]stats, per-cpu drift doesn't matter */
|
|
|
#define BLKG_STAT_CPU_BATCH (INT_MAX / 2)
|
|
@@ -223,16 +224,16 @@ static inline struct blkcg *css_to_blkcg(struct cgroup_subsys_state *css)
|
|
|
return css ? container_of(css, struct blkcg, css) : NULL;
|
|
|
}
|
|
|
|
|
|
-static inline struct blkcg *task_blkcg(struct task_struct *tsk)
|
|
|
-{
|
|
|
- return css_to_blkcg(task_css(tsk, io_cgrp_id));
|
|
|
-}
|
|
|
-
|
|
|
static inline struct blkcg *bio_blkcg(struct bio *bio)
|
|
|
{
|
|
|
+ struct cgroup_subsys_state *css;
|
|
|
+
|
|
|
if (bio && bio->bi_css)
|
|
|
return css_to_blkcg(bio->bi_css);
|
|
|
- return task_blkcg(current);
|
|
|
+ css = kthread_blkcg();
|
|
|
+ if (css)
|
|
|
+ return css_to_blkcg(css);
|
|
|
+ return css_to_blkcg(task_css(current, io_cgrp_id));
|
|
|
}
|
|
|
|
|
|
/**
|