From: Muneendra <muneendra.kumar@broadcom.com>
To: linux-block@vger.kernel.org, linux-scsi@vger.kernel.org,
tj@kernel.org, linux-nvme@lists.infradead.org, hare@suse.de
Cc: jsmart2021@gmail.com, emilne@redhat.com, mkumar@redhat.com,
pbonzini@redhat.com, Muneendra <muneendra.kumar@broadcom.com>
Subject: [PATCH v5 02/16] blkcg: Added a app identifier support for blkcg
Date: Wed, 16 Dec 2020 10:59:32 +0530 [thread overview]
Message-ID: <1608096586-21656-3-git-send-email-muneendra.kumar@broadcom.com> (raw)
In-Reply-To: <1608096586-21656-1-git-send-email-muneendra.kumar@broadcom.com>
[-- Attachment #1: Type: text/plain, Size: 4982 bytes --]
This Patch added a unique application identifier i.e
fc_app_id member in blkcg which allows identification of traffic
sources at an individual cgroup based Applications
(ex:virtual machine (VM))level in both host and
fabric infrastructure.
Added a new function blkcg_get_fc_appid to
grab the app identifier associated with a bio.
Added a new function blkcg_set_fc_appid to
set the app identifier in a blkcgrp associated with cgroup id
Added a new config BLK_CGROUP_FC_APPID and moved the changes
under this config
Signed-off-by: Muneendra <muneendra.kumar@broadcom.com>
---
v5:
Renamed the arguments appropriatley
Renamed APPID_LEN to FC_APPID_LEN
Moved the input validation at the begining of the function
Modified the comments
v4:
No change
v3:
Renamed the functions and app_id to more specific
Addressed the reference leaks in blkcg_set_app_identifier
Added a new config BLK_CGROUP_FC_APPID and moved the changes
under this config
Added blkcg_get_fc_appid,blkcg_set_fc_appid as inline functions
v2:
renamed app_identifier to app_id
removed the sysfs interface blkio.app_identifie under
---
block/Kconfig | 9 ++++++
include/linux/blk-cgroup.h | 56 ++++++++++++++++++++++++++++++++++++++
2 files changed, 65 insertions(+)
diff --git a/block/Kconfig b/block/Kconfig
index a2297edfdde8..1920388fb0e9 100644
--- a/block/Kconfig
+++ b/block/Kconfig
@@ -144,6 +144,15 @@ config BLK_CGROUP_IOLATENCY
Note, this is an experimental interface and could be changed someday.
+config BLK_CGROUP_FC_APPID
+ bool "Enable support to track FC io Traffic across cgroup applications"
+ depends on BLK_CGROUP=y
+ help
+ Enabling this option enables the support to track FC io traffic across
+ cgroup applications.It enables the Fabric and the storage targets to
+ identify, monitor, and handle FC traffic based on vm tags by inserting
+ application specific identification into the FC frame.
+
config BLK_CGROUP_IOCOST
bool "Enable support for cost model based cgroup IO controller"
depends on BLK_CGROUP=y
diff --git a/include/linux/blk-cgroup.h b/include/linux/blk-cgroup.h
index c8fc9792ac77..216ca0d5eda7 100644
--- a/include/linux/blk-cgroup.h
+++ b/include/linux/blk-cgroup.h
@@ -30,6 +30,8 @@
/* Max limits for throttle policy */
#define THROTL_IOPS_MAX UINT_MAX
+#define FC_APPID_LEN 129
+
#ifdef CONFIG_BLK_CGROUP
@@ -55,6 +57,9 @@ struct blkcg {
struct blkcg_policy_data *cpd[BLKCG_MAX_POLS];
struct list_head all_blkcgs_node;
+#ifdef CONFIG_BLK_CGROUP_FC_APPID
+ char fc_app_id[FC_APPID_LEN];
+#endif
#ifdef CONFIG_CGROUP_WRITEBACK
struct list_head cgwb_list;
#endif
@@ -660,4 +665,55 @@ static inline void blk_cgroup_bio_start(struct bio *bio) { }
#endif /* CONFIG_BLOCK */
#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);
+ 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 it returns the fc_app_id on failure it returns 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 */
--
2.26.2
--
This electronic communication and the information and any files transmitted
with it, or attached to it, are confidential and are intended solely for
the use of the individual or entity to whom it is addressed and may contain
information that is confidential, legally privileged, protected by privacy
laws, or otherwise restricted from disclosure to anyone else. If you are
not the intended recipient or the person responsible for delivering the
e-mail to the intended recipient, you are hereby notified that any use,
copying, distributing, dissemination, forwarding, printing, or copying of
this e-mail is strictly prohibited. If you received this e-mail in error,
please return the e-mail to the sender, delete it from your computer, and
destroy any printed copy of it.
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4177 bytes --]
next prev parent reply other threads:[~2020-12-16 12:24 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-16 5:29 [PATCH v5 00/16] blkcg:Support to track FC storage blk io traffic Muneendra
2020-12-16 5:29 ` [PATCH v5 01/16] cgroup: Added cgroup_get_from_id Muneendra
2020-12-16 5:29 ` Muneendra [this message]
2020-12-19 17:12 ` [PATCH v5 02/16] blkcg: Added a app identifier support for blkcg Randy Dunlap
2020-12-22 6:02 ` Muneendra Kumar M
2020-12-16 5:29 ` [PATCH v5 03/16] nvme: Added a newsysfs attribute appid_store Muneendra
2020-12-16 5:29 ` [PATCH v5 04/16] lpfc: vmid: Add the datastructure for supporting VMID in lpfc Muneendra
2020-12-16 5:29 ` [PATCH v5 05/16] lpfc: vmid: Supplementary data structures for vmid and APIs Muneendra
2020-12-16 5:29 ` [PATCH v5 06/16] lpfc: vmid: Forward declarations for APIs Muneendra
2020-12-16 5:29 ` [PATCH v5 07/16] lpfc: vmid: VMID params initialization Muneendra
2020-12-16 5:29 ` [PATCH v5 08/16] lpfc: vmid: Add support for vmid in mailbox command, does vmid resource allocation and vmid cleanup Muneendra
2020-12-16 15:13 ` kernel test robot
2020-12-19 15:58 ` kernel test robot
2020-12-16 5:29 ` [PATCH v5 09/16] lpfc: vmid: Implements ELS commands for appid patch Muneendra
2020-12-16 15:47 ` kernel test robot
2020-12-19 18:04 ` kernel test robot
2020-12-16 5:29 ` [PATCH v5 10/16] lpfc: vmid: Functions to manage vmids Muneendra
2020-12-16 16:23 ` kernel test robot
2020-12-19 20:20 ` kernel test robot
2020-12-16 5:29 ` [PATCH v5 11/16] lpfc: vmid: Implements CT commands for appid Muneendra
2020-12-16 16:57 ` kernel test robot
2020-12-19 23:27 ` kernel test robot
2020-12-16 5:29 ` [PATCH v5 12/16] lpfc: vmid: Appends the vmid in the wqe before sending Muneendra
2020-12-16 5:29 ` [PATCH v5 13/16] lpfc: vmid: Timeout implementation for vmid Muneendra
2020-12-16 17:51 ` kernel test robot
2020-12-16 5:29 ` [PATCH v5 14/16] lpfc: vmid: Adding qfpa and vmid timeout check in worker thread Muneendra
2020-12-16 18:31 ` kernel test robot
2020-12-16 5:29 ` [PATCH v5 15/16] lpfc: vmid: Introducing vmid in io path Muneendra
2020-12-16 5:29 ` [PATCH v5 16/16] scsi: Made changes in Kconfig to select BLK_CGROUP_FC_APPID Muneendra
2020-12-19 17:15 ` Randy Dunlap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1608096586-21656-3-git-send-email-muneendra.kumar@broadcom.com \
--to=muneendra.kumar@broadcom.com \
--cc=emilne@redhat.com \
--cc=hare@suse.de \
--cc=jsmart2021@gmail.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mkumar@redhat.com \
--cc=pbonzini@redhat.com \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).