mbox series

[v7,00/16] blkcg:Support to track FC storage blk io traffic

Message ID 1609970430-19084-1-git-send-email-muneendra.kumar@broadcom.com
Headers show
Series blkcg:Support to track FC storage blk io traffic | expand

Message

Muneendra Kumar Jan. 6, 2021, 10 p.m. UTC
This Patch added a unique application identifier i.e
app_id  knob to  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 sysfs attribute appid_store to set the application identfier
in  the blkcg associted with cgroup id
/sys/class/fc/fc_udev_device/*
With this new interface the user can set the application identfier
in  the blkcg associted with cgroup id.

This capability can be utilized by multiple block transport infrastructure
like fc,iscsi,roce.

Existing FC fabric will use this feature and the description of
the use case is below.

Various virtualization technologies used in Fibre Channel
SAN deployments have created the opportunity to identify
and associate traffic with specific virtualized applications.
The concepts behind the T11 Application Services standard is
to provide the general mechanisms needed to identify
virtualized services.
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.

The patches were cut against  5.11/scsi-queue tree

v7:
Modified the Kconfig comments

v6:
Addressed the issues reported by kernel test robot
Modified the Kconfig files as per standard

v5:
Renamed the function cgroup_get_from_kernfs_id to
cgroup_get_from_id.

Moved the input validation at the beginning of the function in 
Renamed the arguments appropriatley.

Changed Return code to non-numeric/SymbolChanged Return code
to non-numeric/Symbol

Modified the comments.

v4:
Addressed the error reported by  kernel test robot

v3:
removed RFC.

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 made changes to 
select the same under SCSI_FC_ATTRS

V2:
renamed app_identifier to app_id.
removed the  sysfs interface blkio.app_identifie under
/sys/fs/cgroup/blkio
Ported the patch on top of 5.10/scsi-queue.
Removed redundant code due to changes since last submit.
Added a fix for issuing QFPA command.



Gaurav Srivastava (12):
  lpfc: vmid: Add the datastructure for supporting VMID in lpfc
  lpfc: vmid: Supplementary data structures for vmid and APIs
  lpfc: vmid: Forward declarations for APIs
  lpfc: vmid: VMID params initialization
  lpfc: vmid: Add support for vmid in mailbox command, does vmid
    resource allocation and vmid cleanup
  lpfc: vmid: Implements ELS commands for appid patch
  lpfc: vmid: Functions to manage vmids
  lpfc: vmid: Implements CT commands for appid.
  lpfc: vmid: Appends the vmid in the wqe before sending
  lpfc: vmid: Timeout implementation for vmid
  lpfc: vmid: Adding qfpa and vmid timeout check in worker thread
  lpfc: vmid: Introducing vmid in io path.

Muneendra (4):
  cgroup: Added cgroup_get_from_id
  blkcg: Added a app identifier support for blkcg
  nvme: Added a newsysfs attribute appid_store
  scsi: Made changes in Kconfig to select BLK_CGROUP_FC_APPID

 block/Kconfig                    |   9 +
 drivers/nvme/host/fc.c           |  73 +++++-
 drivers/scsi/Kconfig             |  13 ++
 drivers/scsi/lpfc/lpfc.h         | 121 ++++++++++
 drivers/scsi/lpfc/lpfc_attr.c    |  47 ++++
 drivers/scsi/lpfc/lpfc_crtn.h    |  11 +
 drivers/scsi/lpfc/lpfc_ct.c      | 252 +++++++++++++++++++++
 drivers/scsi/lpfc/lpfc_disc.h    |   1 +
 drivers/scsi/lpfc/lpfc_els.c     | 369 ++++++++++++++++++++++++++++++-
 drivers/scsi/lpfc/lpfc_hbadisc.c | 153 +++++++++++++
 drivers/scsi/lpfc/lpfc_hw.h      | 124 ++++++++++-
 drivers/scsi/lpfc/lpfc_hw4.h     |  12 +
 drivers/scsi/lpfc/lpfc_init.c    | 109 +++++++++
 drivers/scsi/lpfc/lpfc_mbox.c    |   6 +
 drivers/scsi/lpfc/lpfc_scsi.c    | 334 ++++++++++++++++++++++++++++
 drivers/scsi/lpfc/lpfc_sli.c     |  65 +++++-
 drivers/scsi/lpfc/lpfc_sli.h     |   8 +
 include/linux/blk-cgroup.h       |  56 +++++
 include/linux/cgroup.h           |   6 +
 kernel/cgroup/cgroup.c           |  26 +++
 20 files changed, 1782 insertions(+), 13 deletions(-)

Comments

Hannes Reinecke Jan. 11, 2021, 7:29 a.m. UTC | #1
On 1/6/21 11:00 PM, Muneendra wrote:
> Added a new function cgroup_get_from_id  to retrieve the cgroup

> associated with cgroup id.

> Exported the same as this can be used by blk-cgorup.c

> 

> Added function declaration of cgroup_get_from_id in cgorup.h

> 

> This patch also exported the function cgroup_get_e_css

> as this is getting used in blk-cgroup.h

> 

> Signed-off-by: Muneendra <muneendra.kumar@broadcom.com>

> 

> ---

> v7:

> No change

> 

> v6:

> No change

> 

> v5:

> renamed the function cgroup_get_from_kernfs_id to

> cgroup_get_from_id

> 

> v4:

> No change

> 

> v3:

> Exported the cgroup_get_e_css

> 

> v2:

> New patch

> ---

>   include/linux/cgroup.h |  6 ++++++

>   kernel/cgroup/cgroup.c | 26 ++++++++++++++++++++++++++

>   2 files changed, 32 insertions(+)

> 

Reviewed-by: Hannes Reinecke <hare@suse.de>


Cheers,

Hannes
-- 
Dr. Hannes Reinecke                Kernel Storage Architect
hare@suse.de                              +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer
Hannes Reinecke Jan. 11, 2021, 7:33 a.m. UTC | #2
On 1/6/21 11:00 PM, Muneendra wrote:
> From: Gaurav Srivastava <gaurav.srivastava@broadcom.com>

> 

> This patch adds additional data structures for supporting the two

> versions of vmid implementation. First type uses app header while

> the other types uses priority tagging mechanism. These data

> structures are used mostly for ELS and CT commands for the

> two vmid implementation.

> 

> The API determines if VMID is enabled by the user or not.

> 

> Signed-off-by: Gaurav Srivastava <gaurav.srivastava@broadcom.com>

> Signed-off-by: James Smart <jsmart2021@gmail.com>

> 

> ---

> v7:

> No change

> 

> v6:

> No change

> 

> v5:

> Merged the patch5 of v4 to this patch

> Uniform data type naming scheme

> 

> v4:

> No change

> 

> v3:

> No change

> 

> v2:

> Ported the patch on top of 5.10/scsi-queue

> ---

>   drivers/scsi/lpfc/lpfc.h      |  24 +++++++

>   drivers/scsi/lpfc/lpfc_disc.h |   1 +

>   drivers/scsi/lpfc/lpfc_hw.h   | 124 ++++++++++++++++++++++++++++++++--

>   drivers/scsi/lpfc/lpfc_sli.h  |   8 +++

>   4 files changed, 153 insertions(+), 4 deletions(-)

> 

Reviewed-by: Hannes Reinecke <hare@suse.de>


Cheers,

Hannes
-- 
Dr. Hannes Reinecke                Kernel Storage Architect
hare@suse.de                              +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer
Hannes Reinecke Jan. 11, 2021, 7:35 a.m. UTC | #3
On 1/6/21 11:00 PM, Muneendra wrote:
> From: Gaurav Srivastava <gaurav.srivastava@broadcom.com>

> 

> This patch contains the forward declarations of commonly used APIs which

> are used outside the scope of the file.

> 

> Signed-off-by: Gaurav Srivastava <gaurav.srivastava@broadcom.com>

> Signed-off-by: James Smart <jsmart2021@gmail.com>

> 

> ---

> v7:

> No change

> 

> v6:

> No change

> 

> v5:

> No change

> 

> v4:

> No change

> 

> v3:

> No change

> 

> v2:

> Ported the patch on top of 5.10/scsi-queue

> ---

>   drivers/scsi/lpfc/lpfc_crtn.h | 11 +++++++++++

>   1 file changed, 11 insertions(+)

> 

> diff --git a/drivers/scsi/lpfc/lpfc_crtn.h b/drivers/scsi/lpfc/lpfc_crtn.h

> index f78e52a18b0b..7eb0200ecaa8 100644

> --- a/drivers/scsi/lpfc/lpfc_crtn.h

> +++ b/drivers/scsi/lpfc/lpfc_crtn.h

> @@ -606,3 +606,14 @@ extern unsigned long lpfc_no_hba_reset[];

>   extern union lpfc_wqe128 lpfc_iread_cmd_template;

>   extern union lpfc_wqe128 lpfc_iwrite_cmd_template;

>   extern union lpfc_wqe128 lpfc_icmnd_cmd_template;

> +

> +/* vmid interface */

> +int lpfc_vmid_uvem(struct lpfc_vport *vport, struct lpfc_vmid *vmid, bool ins);

> +uint32_t lpfc_vmid_get_cs_ctl(struct lpfc_vport *vport);

> +int lpfc_vmid_cmd(struct lpfc_vport *vport,

> +		  int cmdcode, struct lpfc_vmid *vmid);

> +int lpfc_vmid_hash_fn(char *vmid, int len);

> +struct lpfc_vmid *lpfc_get_vmid_from_hastable(struct lpfc_vport *vport,

> +					      uint32_t hash, uint8_t *buf);

> +void lpfc_vmid_vport_cleanup(struct lpfc_vport *vport);

> +int lpfc_issue_els_qfpa(struct lpfc_vport *vport);

> 

I'd rather merge this patch with that patch defining the functions; but 
this is more a style issue.

Reviewed-by: Hannes Reinecke <hare@suse.de>


Cheers,

Hannes
-- 
Dr. Hannes Reinecke                Kernel Storage Architect
hare@suse.de                              +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer