The commit is pushed to "branch-rh9-5.14.0-427.37.1.vz9.78.x-ovz" and will 
appear at g...@bitbucket.org:openvz/vzkernel.git
after rh9-5.14.0-427.37.1.vz9.78.2
------>
commit defc69cb67924947d46f93e5c86f6ea2be5f5a8e
Author: Alexey Kuznetsov <kuz...@virtuozzo.com>
Date:   Wed Oct 30 03:43:26 2024 +0800

    fs: fuse: kio: port new fatal errors from userspace
    
    Otherwise we enter lockup instead of IO error.
    
    Signed-off-by: Alexey Kuznetsov <kuz...@virtuozzo.com>
    
    Feature: vStorage
---
 fs/fuse/kio/pcs/pcs_cluster.c | 11 +++++++----
 fs/fuse/kio/pcs/pcs_error.h   | 10 ++++++++--
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/fs/fuse/kio/pcs/pcs_cluster.c b/fs/fuse/kio/pcs/pcs_cluster.c
index b0a5e140faf8..c64668a2a121 100644
--- a/fs/fuse/kio/pcs/pcs_cluster.c
+++ b/fs/fuse/kio/pcs/pcs_cluster.c
@@ -525,17 +525,20 @@ static void ireq_on_error_(struct pcs_int_request *ireq)
                if (!ireq->dentry->cluster->cfg.fail_on_nospace)
                        break;
                fallthrough;
+       case PCS_ERR_LEASE_REQUIRED:
+       case PCS_ERR_LEASE_EXPIRED:
+       case PCS_ERR_INTEGRITY_FAIL:
+       case PCS_ERR_LEASE_CONFLICT:
        case PCS_ERR_INV_PARAMS:
        case PCS_ERR_NOT_FOUND:
        case PCS_ERR_NON_EMPTY_DIR:
        case PCS_ERR_NOT_DIR:
        case PCS_ERR_IS_DIR:
+       case PCS_ERR_NOT_ALLOWED:
        case PCS_ERR_NO_STORAGE:
        case PCS_ERR_UNAVAIL:
-       case PCS_ERR_LEASE_REQUIRED:
-       case PCS_ERR_LEASE_EXPIRED:
-       case PCS_ERR_INTEGRITY_FAIL:
-       case PCS_ERR_LEASE_CONFLICT:
+       case PCS_ERR_BAD_FILE:
+       case PCS_ERR_NO_CHUNK:
                TRACE("fatal error:%d ireq->type:%d nodeid:%llu\n",
                      ireq->error.value, ireq->type,
                      ireq->dentry->inode->nodeid);
diff --git a/fs/fuse/kio/pcs/pcs_error.h b/fs/fuse/kio/pcs/pcs_error.h
index cbf5c1532945..ecb1c8989bd9 100644
--- a/fs/fuse/kio/pcs/pcs_error.h
+++ b/fs/fuse/kio/pcs/pcs_error.h
@@ -62,7 +62,10 @@ typedef enum {
                                         */
 
        PCS_ERR_NO_STORAGE      = 50,   /* The number of chunk servers in 
cluster is less than the required number of replicas */
-       PCS_ERR_NOT_ALLOWED     = 51,   /* Operation is not allowed due to 
licensing limitations */
+       PCS_ERR_NOT_ALLOWED     = 51,   /* Operation is not allowed */
+       PCS_ERR_IO_HOLE         = 52,   /* Read operation encountered a hole */
+       PCS_ERR_BAD_FILE        = 53,   /* Unrecoverable corruption happened */
+       PCS_ERR_NO_CHUNK        = 54,   /* Request is rejected, no chunk at 
this offset */
        PCS_ERR_CFG_VERSION     = 60,   /* Configuration version mismatch */
        PCS_ERR_CLNT_VERSION    = 61,   /* Client version is incompatible with 
sever version (outdated) */
        PCS_ERR_EXISTS          = 70,   /* Specified object already exists */
@@ -144,7 +147,10 @@ static const char *const prot_err_list[] = {
        [PCS_ERR_INTEGRITY_FAIL]        = "Fatal MDS integrity error",
 
        [PCS_ERR_NO_STORAGE]            = "The number of chunk servers in 
cluster is less than the required number of replicas",
-       [PCS_ERR_NOT_ALLOWED]           = "Operation is not allowed due to 
licensing limitations",
+       [PCS_ERR_NOT_ALLOWED]           = "Operation is not allowed",
+       [PCS_ERR_IO_HOLE]               = "Read operation encountered a hole",
+       [PCS_ERR_BAD_FILE]              = "Unrecoverable corruption happened",
+       [PCS_ERR_NO_CHUNK]              = "Request is rejected, no chunk at 
this offset",
        [PCS_ERR_CFG_VERSION]           = "Configuration version mismatch",
        [PCS_ERR_CLNT_VERSION]          = "Client version is incompatible with 
server version (outdated)",
        [PCS_ERR_EXISTS]                = "Specified object already exists",
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to