Whamcloud - gitweb
LU-16313 pcc: use two bits to indicate pcc type for attach 60/49160/5
authorQian Yingjin <qian@ddn.com>
Tue, 15 Nov 2022 06:57:08 +0000 (01:57 -0500)
committerOleg Drokin <green@whamcloud.com>
Tue, 6 Dec 2022 02:44:26 +0000 (02:44 +0000)
PCC currenty supports two types: readwrite and readonly.
The attach data structure @lu_pcc_attach is using 32 bit value to
indicate the PCC type:
struct lu_pcc_attach {
__u32 pcca_type;
__u32 pcca_id;
};

In this patch, it changes to use 2 bits to represent the PCC type.
The left bits in @pcca_type can be used as flags for attach such
as a flag to indicate using the asynchronous attach via the
command "lfs pcc attach -A" for PCCRO.

Signed-off-by: Qian Yingjin <qian@ddn.com>
Change-Id: Idee26018642a174b04d1d36a81952ea98a06514e
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/49160
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Feng Lei <flei@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/include/uapi/linux/lustre/lustre_user.h
lustre/utils/liblustreapi_pcc.c

index 676a33e..1306ae0 100644 (file)
@@ -2670,18 +2670,22 @@ struct lu_heat {
 };
 
 enum lu_pcc_type {
-       LU_PCC_NONE = 0,
-       LU_PCC_READWRITE,
+       LU_PCC_NONE             = 0x0,
+       LU_PCC_READWRITE        = 0x01,
+       LU_PCC_READONLY         = 0x02,
+       LU_PCC_TYPE_MASK        = LU_PCC_READWRITE | LU_PCC_READONLY,
        LU_PCC_MAX
 };
 
 static inline const char *pcc_type2string(enum lu_pcc_type type)
 {
-       switch (type) {
+       switch (type & LU_PCC_TYPE_MASK) {
        case LU_PCC_NONE:
                return "none";
        case LU_PCC_READWRITE:
                return "readwrite";
+       case LU_PCC_READONLY:
+               return "readonly";
        default:
                return "fault";
        }
index 5ca405c..0045d7e 100644 (file)
@@ -105,7 +105,7 @@ int llapi_pcc_attach(const char *path, __u32 id, enum lu_pcc_type type)
 {
        int rc;
 
-       switch (type) {
+       switch (type & LU_PCC_TYPE_MASK) {
        case LU_PCC_READWRITE:
                rc = llapi_readwrite_pcc_attach(path, id);
                break;
@@ -143,7 +143,7 @@ int llapi_pcc_attach_fid(const char *mntpath, const struct lu_fid *fid,
 {
        int rc;
 
-       switch (type) {
+       switch (type & LU_PCC_TYPE_MASK) {
        case LU_PCC_READWRITE:
                rc = llapi_readwrite_pcc_attach_fid(mntpath, fid, id);
                break;