#include <linux/blk-mq.h>
#include <linux/blk_types.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include "blk-cgroup.h"
#include "blk-ioprio.h"
#include "blk-rq-qos.h"
enum prio_policy { … };
static const char *policy_name[] = …;
static struct blkcg_policy ioprio_policy;
struct ioprio_blkg { … };
struct ioprio_blkcg { … };
static inline struct ioprio_blkg *pd_to_ioprio(struct blkg_policy_data *pd)
{ … }
static struct ioprio_blkcg *blkcg_to_ioprio_blkcg(struct blkcg *blkcg)
{ … }
static struct ioprio_blkcg *
ioprio_blkcg_from_css(struct cgroup_subsys_state *css)
{ … }
static struct ioprio_blkcg *ioprio_blkcg_from_bio(struct bio *bio)
{ … }
static int ioprio_show_prio_policy(struct seq_file *sf, void *v)
{ … }
static ssize_t ioprio_set_prio_policy(struct kernfs_open_file *of, char *buf,
size_t nbytes, loff_t off)
{ … }
static struct blkg_policy_data *
ioprio_alloc_pd(struct gendisk *disk, struct blkcg *blkcg, gfp_t gfp)
{ … }
static void ioprio_free_pd(struct blkg_policy_data *pd)
{ … }
static struct blkcg_policy_data *ioprio_alloc_cpd(gfp_t gfp)
{ … }
static void ioprio_free_cpd(struct blkcg_policy_data *cpd)
{ … }
#define IOPRIO_ATTRS …
static struct cftype ioprio_files[] = …;
static struct cftype ioprio_legacy_files[] = …;
static struct blkcg_policy ioprio_policy = …;
void blkcg_set_ioprio(struct bio *bio)
{ … }
void blk_ioprio_exit(struct gendisk *disk)
{ … }
int blk_ioprio_init(struct gendisk *disk)
{ … }
static int __init ioprio_init(void)
{ … }
static void __exit ioprio_exit(void)
{ … }
module_init(…) …;
module_exit(ioprio_exit);