blk-cgroup: move blkcg_{get,set}_fc_appid out of line
No need to have these helpers inline. Also remove the stubs and just use an IS_ENABLED for the get side (the set side already is only built conditionlly). Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Tejun Heo <tj@kernel.org> Link: https://lore.kernel.org/r/20220420042723.1010598-5-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
c814153c83
commit
db05628435
@ -16,6 +16,7 @@ obj-$(CONFIG_BLK_DEV_BSG_COMMON) += bsg.o
|
|||||||
obj-$(CONFIG_BLK_DEV_BSGLIB) += bsg-lib.o
|
obj-$(CONFIG_BLK_DEV_BSGLIB) += bsg-lib.o
|
||||||
obj-$(CONFIG_BLK_CGROUP) += blk-cgroup.o
|
obj-$(CONFIG_BLK_CGROUP) += blk-cgroup.o
|
||||||
obj-$(CONFIG_BLK_CGROUP_RWSTAT) += blk-cgroup-rwstat.o
|
obj-$(CONFIG_BLK_CGROUP_RWSTAT) += blk-cgroup-rwstat.o
|
||||||
|
obj-$(CONFIG_BLK_CGROUP_FC_APPID) += blk-cgroup-fc-appid.o
|
||||||
obj-$(CONFIG_BLK_DEV_THROTTLING) += blk-throttle.o
|
obj-$(CONFIG_BLK_DEV_THROTTLING) += blk-throttle.o
|
||||||
obj-$(CONFIG_BLK_CGROUP_IOPRIO) += blk-ioprio.o
|
obj-$(CONFIG_BLK_CGROUP_IOPRIO) += blk-ioprio.o
|
||||||
obj-$(CONFIG_BLK_CGROUP_IOLATENCY) += blk-iolatency.o
|
obj-$(CONFIG_BLK_CGROUP_IOLATENCY) += blk-iolatency.o
|
||||||
|
57
block/blk-cgroup-fc-appid.c
Normal file
57
block/blk-cgroup-fc-appid.c
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
#include "blk-cgroup.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* blkcg_set_fc_appid - set the fc_app_id field associted to blkcg
|
||||||
|
* @app_id: application identifier
|
||||||
|
* @cgrp_id: cgroup id
|
||||||
|
* @app_id_len: size of application identifier
|
||||||
|
*/
|
||||||
|
int blkcg_set_fc_appid(char *app_id, u64 cgrp_id, size_t app_id_len)
|
||||||
|
{
|
||||||
|
struct cgroup *cgrp;
|
||||||
|
struct cgroup_subsys_state *css;
|
||||||
|
struct blkcg *blkcg;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (app_id_len > FC_APPID_LEN)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
cgrp = cgroup_get_from_id(cgrp_id);
|
||||||
|
if (!cgrp)
|
||||||
|
return -ENOENT;
|
||||||
|
css = cgroup_get_e_css(cgrp, &io_cgrp_subsys);
|
||||||
|
if (!css) {
|
||||||
|
ret = -ENOENT;
|
||||||
|
goto out_cgrp_put;
|
||||||
|
}
|
||||||
|
blkcg = css_to_blkcg(css);
|
||||||
|
/*
|
||||||
|
* There is a slight race condition on setting the appid.
|
||||||
|
* Worst case an I/O may not find the right id.
|
||||||
|
* This is no different from the I/O we let pass while obtaining
|
||||||
|
* the vmid from the fabric.
|
||||||
|
* Adding the overhead of a lock is not necessary.
|
||||||
|
*/
|
||||||
|
strlcpy(blkcg->fc_app_id, app_id, app_id_len);
|
||||||
|
css_put(css);
|
||||||
|
out_cgrp_put:
|
||||||
|
cgroup_put(cgrp);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(blkcg_set_fc_appid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* blkcg_get_fc_appid - get the fc app identifier associated with a bio
|
||||||
|
* @bio: target bio
|
||||||
|
*
|
||||||
|
* On success return the fc_app_id, on failure return NULL
|
||||||
|
*/
|
||||||
|
char *blkcg_get_fc_appid(struct bio *bio)
|
||||||
|
{
|
||||||
|
if (!bio->bi_blkg || bio->bi_blkg->blkcg->fc_app_id[0] == '\0')
|
||||||
|
return NULL;
|
||||||
|
return bio->bi_blkg->blkcg->fc_app_id;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(blkcg_get_fc_appid);
|
@ -5528,7 +5528,9 @@ static char *lpfc_is_command_vm_io(struct scsi_cmnd *cmd)
|
|||||||
{
|
{
|
||||||
struct bio *bio = scsi_cmd_to_rq(cmd)->bio;
|
struct bio *bio = scsi_cmd_to_rq(cmd)->bio;
|
||||||
|
|
||||||
return bio ? blkcg_get_fc_appid(bio) : NULL;
|
if (!IS_ENABLED(CONFIG_BLK_CGROUP_FC_APPID) || !bio)
|
||||||
|
return NULL;
|
||||||
|
return blkcg_get_fc_appid(bio);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -218,61 +218,7 @@ static inline struct blkcg *bio_blkcg(struct bio *bio) { return NULL; }
|
|||||||
|
|
||||||
#endif /* CONFIG_BLK_CGROUP */
|
#endif /* CONFIG_BLK_CGROUP */
|
||||||
|
|
||||||
#ifdef CONFIG_BLK_CGROUP_FC_APPID
|
int blkcg_set_fc_appid(char *app_id, u64 cgrp_id, size_t app_id_len);
|
||||||
/*
|
char *blkcg_get_fc_appid(struct bio *bio);
|
||||||
* Sets the fc_app_id field associted to blkcg
|
|
||||||
* @app_id: application identifier
|
|
||||||
* @cgrp_id: cgroup id
|
|
||||||
* @app_id_len: size of application identifier
|
|
||||||
*/
|
|
||||||
static inline int blkcg_set_fc_appid(char *app_id, u64 cgrp_id, size_t app_id_len)
|
|
||||||
{
|
|
||||||
struct cgroup *cgrp;
|
|
||||||
struct cgroup_subsys_state *css;
|
|
||||||
struct blkcg *blkcg;
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
if (app_id_len > FC_APPID_LEN)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
cgrp = cgroup_get_from_id(cgrp_id);
|
|
||||||
if (!cgrp)
|
|
||||||
return -ENOENT;
|
|
||||||
css = cgroup_get_e_css(cgrp, &io_cgrp_subsys);
|
|
||||||
if (!css) {
|
|
||||||
ret = -ENOENT;
|
|
||||||
goto out_cgrp_put;
|
|
||||||
}
|
|
||||||
blkcg = css_to_blkcg(css);
|
|
||||||
/*
|
|
||||||
* There is a slight race condition on setting the appid.
|
|
||||||
* Worst case an I/O may not find the right id.
|
|
||||||
* This is no different from the I/O we let pass while obtaining
|
|
||||||
* the vmid from the fabric.
|
|
||||||
* Adding the overhead of a lock is not necessary.
|
|
||||||
*/
|
|
||||||
strlcpy(blkcg->fc_app_id, app_id, app_id_len);
|
|
||||||
css_put(css);
|
|
||||||
out_cgrp_put:
|
|
||||||
cgroup_put(cgrp);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* blkcg_get_fc_appid - get the fc app identifier associated with a bio
|
|
||||||
* @bio: target bio
|
|
||||||
*
|
|
||||||
* On success return the fc_app_id, on failure return NULL
|
|
||||||
*/
|
|
||||||
static inline char *blkcg_get_fc_appid(struct bio *bio)
|
|
||||||
{
|
|
||||||
if (bio && bio->bi_blkg &&
|
|
||||||
(bio->bi_blkg->blkcg->fc_app_id[0] != '\0'))
|
|
||||||
return bio->bi_blkg->blkcg->fc_app_id;
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static inline int blkcg_set_fc_appid(char *buf, u64 id, size_t len) { return -EINVAL; }
|
|
||||||
static inline char *blkcg_get_fc_appid(struct bio *bio) { return NULL; }
|
|
||||||
#endif /*CONFIG_BLK_CGROUP_FC_APPID*/
|
|
||||||
#endif /* _BLK_CGROUP_H */
|
#endif /* _BLK_CGROUP_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user