]> git.baikalelectronics.ru Git - kernel.git/commitdiff
blk-cgroup: move blkcg_{get,set}_fc_appid out of line
authorChristoph Hellwig <hch@lst.de>
Wed, 20 Apr 2022 04:27:12 +0000 (06:27 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 2 May 2022 20:06:20 +0000 (14:06 -0600)
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>
block/Makefile
block/blk-cgroup-fc-appid.c [new file with mode: 0644]
drivers/scsi/lpfc/lpfc_scsi.c
include/linux/blk-cgroup.h

index 3950ecbc5c263b0bc93575383d0c388ef6d2edde..4e01bb71ad6e07b7176caf277724a35b54fa4056 100644 (file)
@@ -16,6 +16,7 @@ obj-$(CONFIG_BLK_DEV_BSG_COMMON) += bsg.o
 obj-$(CONFIG_BLK_DEV_BSGLIB)   += bsg-lib.o
 obj-$(CONFIG_BLK_CGROUP)       += blk-cgroup.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_CGROUP_IOPRIO)        += blk-ioprio.o
 obj-$(CONFIG_BLK_CGROUP_IOLATENCY)     += blk-iolatency.o
diff --git a/block/blk-cgroup-fc-appid.c b/block/blk-cgroup-fc-appid.c
new file mode 100644 (file)
index 0000000..760a2e1
--- /dev/null
@@ -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);
index ba9dbb51b75f06b9536695a0ec943695844703f5..f6b83853f7eea122b8ac87085b3c486b3981dcab 100644 (file)
@@ -5528,7 +5528,9 @@ static char *lpfc_is_command_vm_io(struct scsi_cmnd *cmd)
 {
        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);
 }
 
 /**
index 652cd05b0924c3d687716a0f4bb42e5c7f8d331e..7a2f7de30173c29a6abef1cf1550c76954c6f72d 100644 (file)
@@ -218,61 +218,7 @@ static inline struct blkcg *bio_blkcg(struct bio *bio) { return NULL; }
 
 #endif /* CONFIG_BLK_CGROUP */
 
-#ifdef CONFIG_BLK_CGROUP_FC_APPID
-/*
- * 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;
-}
+int blkcg_set_fc_appid(char *app_id, u64 cgrp_id, size_t app_id_len);
+char *blkcg_get_fc_appid(struct bio *bio);
 
-/**
- * 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 */