0001
0002
0003 #include "blk-cgroup.h"
0004
0005
0006
0007
0008
0009
0010
0011 int blkcg_set_fc_appid(char *app_id, u64 cgrp_id, size_t app_id_len)
0012 {
0013 struct cgroup *cgrp;
0014 struct cgroup_subsys_state *css;
0015 struct blkcg *blkcg;
0016 int ret = 0;
0017
0018 if (app_id_len > FC_APPID_LEN)
0019 return -EINVAL;
0020
0021 cgrp = cgroup_get_from_id(cgrp_id);
0022 if (!cgrp)
0023 return -ENOENT;
0024 css = cgroup_get_e_css(cgrp, &io_cgrp_subsys);
0025 if (!css) {
0026 ret = -ENOENT;
0027 goto out_cgrp_put;
0028 }
0029 blkcg = css_to_blkcg(css);
0030
0031
0032
0033
0034
0035
0036
0037 strlcpy(blkcg->fc_app_id, app_id, app_id_len);
0038 css_put(css);
0039 out_cgrp_put:
0040 cgroup_put(cgrp);
0041 return ret;
0042 }
0043 EXPORT_SYMBOL_GPL(blkcg_set_fc_appid);
0044
0045
0046
0047
0048
0049
0050
0051 char *blkcg_get_fc_appid(struct bio *bio)
0052 {
0053 if (!bio->bi_blkg || bio->bi_blkg->blkcg->fc_app_id[0] == '\0')
0054 return NULL;
0055 return bio->bi_blkg->blkcg->fc_app_id;
0056 }
0057 EXPORT_SYMBOL_GPL(blkcg_get_fc_appid);