Whamcloud - gitweb
LU-16977 utils: access_log_reader accesses beyond batch array
[fs/lustre-release.git] / lustre / utils / liblustreapi_pcc.c
index f538e02..47192e5 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;
@@ -193,6 +193,9 @@ int llapi_pcc_detach_fd(int fd, __u32 option)
 
        detach.pccd_opt = option;
        rc = ioctl(fd, LL_IOC_PCC_DETACH, &detach);
+       /* If error, save errno value */
+       rc = rc ? -errno : 0;
+
        return rc;
 }
 
@@ -212,7 +215,7 @@ int llapi_pcc_detach_fid(const char *mntpath, const struct lu_fid *fid,
        int fd;
        struct lu_pcc_detach_fid detach;
 
-       rc = get_root_path(WANT_FD, NULL, &fd, (char *)mntpath, -1);
+       rc = llapi_root_path_open(mntpath, &fd);
        if (rc) {
                llapi_error(LLAPI_MSG_ERROR, rc, "cannot get root path: %s",
                            mntpath);
@@ -228,7 +231,10 @@ int llapi_pcc_detach_fid(const char *mntpath, const struct lu_fid *fid,
         */
        detach.pccd_fid = *fid;
        detach.pccd_opt = option;
+
        rc = ioctl(fd, LL_IOC_PCC_DETACH_BY_FID, &detach);
+       rc = rc ? -errno : 0;
+
        close(fd);
        return rc;
 }