The commit is pushed to "branch-rh7-3.10.0-957.12.2.vz7.96.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-957.12.2.vz7.96.1 ------> commit b58e8dd902592bab0fa4706d0beb9fdf8190f51d Author: Pavel Butsykin <pbutsy...@virtuozzo.com> Date: Tue May 21 18:47:42 2019 +0300
fs/fuse kio: implement pcs_strerror() This function will be necessary to implement the requests statistics info. Signed-off-by: Pavel Butsykin <pbutsy...@virtuozzo.com> ===================== Patchset description: Statistics for vstorage kernel fast-path Vstorage provides plenty of statistics information via 'vstorage -c cl mnt-top', but when it comes kernel fast-path, it doesn't work. All because mnt-top command collects information from .vstorage.info directory, where vstorage-mount provides a lot of different statistical information in the form of files, but it was not implemented for for fast-path. This patch-set is aimed to implementation of the support of some statistics inforamtion files from .vstorage.info: cs_stats fstat fstat_lat iostat requests Which will be located at "/sys/fs/fuse/connections/*mnt_id*/kio_stat/". This will be enough to maintain vstorage mnt-top command for fast-path mount points. https://pmc.acronis.com/browse/VSTOR-20979 Pavel Butsykin (15): fs/fuse: add conn_ctl to fuse_conn struct fs/fuse kio: create sysfs stat directory fs/fuse kio: implement iostat fs/fuse kio: make common interface pcs_kio_file_list() for listing kio files fs/fuse kio: make common interface pcs_kio_req_list() for listing kio reqs fs/fuse kio: add retry counter for kio requests fs/fuse kio: implement pcs_strerror() fs/fuse kio: implement requests statistics fs/fuse kio: implement fstat statistics info fs/fuse kio: implement fstat_lat statistics info fs/fuse kio: remove useless pcs_cs initialization fs/fuse kio: implement cs statistics accounting fs/fuse kio: convert rpc state id to string fs/fuse kio: implement cs_stats statistics info fs/fuse kio: add locked cs_get_avg_in_flight() --- fs/fuse/kio/pcs/pcs_error.h | 83 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 82 insertions(+), 1 deletion(-) diff --git a/fs/fuse/kio/pcs/pcs_error.h b/fs/fuse/kio/pcs/pcs_error.h index f4ec588943dc..19bf650e9df2 100644 --- a/fs/fuse/kio/pcs/pcs_error.h +++ b/fs/fuse/kio/pcs/pcs_error.h @@ -91,8 +91,89 @@ typedef enum { PCS_ERR_MAX = PCS_ERR_UNKNOWN } pcs_err_t; +static const char *const prot_err_list[] = { + [0] = "Success", + + [PCS_ERR_NOMEM] = "Out of memory", + [PCS_ERR_PROTOCOL] = "Fatal protocol error", + [PCS_ERR_AUTH] = "Authentication failure due to wrong credentials", + [PCS_ERR_NET] = "Misc network error", + [PCS_ERR_NOSPACE] = "No space/quota exceeded while local file io", + [PCS_ERR_IO] = "Misc error while local file io", + [PCS_ERR_LOST_LOCK] = "CN did not get response from MDS for lease update.", + + [PCS_ERR_NOT_FOUND] = "Requested object not found", + [PCS_ERR_INTERRUPTED] = "The operation was interrupted, should be retried", + [PCS_ERR_NET_ABORT] = "Message dropped due to abort of network connection", + [PCS_ERR_CONNECT_TIMEOUT] = "Failed connect()", + [PCS_ERR_AUTH_TIMEOUT] = "Authentication failure due to timeout", + [PCS_ERR_RESPONSE_TIMEOUT] = "Peer did not respond or did not hold deadline", + [PCS_ERR_WRITE_TIMEOUT] = "Socket write() failed, peer is stuck or network is broken", + + [PCS_ERR_CANCEL_REQUEST] = "Request was canceled by user", + [PCS_ERR_CANCEL_IO] = "IO request was canceled", + + [PCS_ERR_LEASE_REQUIRED] = "Lease required", + [PCS_ERR_LEASE_EXPIRED] = "Lease is expired", + [PCS_ERR_LEASE_CONFLICT] = "Lease request conflicts with another lease", + [PCS_ERR_INV_PATH] = "The path is invalid", + [PCS_ERR_NOT_DIR] = "Attempt to read non-directory", + [PCS_ERR_IS_DIR] = "Attempt to access directory (resize/io)", + [PCS_ERR_NON_EMPTY_DIR] = "Attempt to rename/delete non empty directory", + [PCS_ERR_ZERO_CHUNK] = "The requested chunk was not written yet and contains zero data", + [PCS_ERR_INVALID] = "Object is invalid", + [PCS_ERR_INV_PARAMS] = "Invalid parameters", + [PCS_ERR_NO_ID] = "Request from the client without ID", + [PCS_ERR_INVALID_ID] = "The client or server ID is invalid or banned", + [PCS_ERR_NORES] = "Not enough resources (too many requests)", + [PCS_ERR_UNAVAIL] = "Service unavailable", + [PCS_ERR_BAD_CLUSTER] = "Bad cluster ID", + [PCS_ERR_READONLY] = "Invalid operation on read-only object", + [PCS_ERR_PERM] = "Permission denied", + [PCS_ERR_UNSUPPORTED] = "Operation is not supported", + + [PCS_ERR_TEMP_UNAVAIL] = "The resource is temporarily unavailable", + [PCS_ERR_INTEGRITY] = "Not enough alive replicas available", + [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_CFG_VERSION] = "Configuration version mismatch", + [PCS_ERR_CLNT_VERSION] = "Client version is incompatible with server version (outdated)", + [PCS_ERR_EXISTS] = "Specified object already exists", + [PCS_ERR_EPOCH_MISMATCH] = "Object epoch mismatch due to concurrent update", + [PCS_ERR_NO_DIR] = "Name directory does not exists", + [PCS_ERR_DIR_INST_VER] = "Name directory instance version mismatch", + [PCS_ERR_CONTEXT_LOST] = "Operation context is lost on server restart", + + [PCS_ERR_CSD_STALE_MAP] = "Old map (or no map) at CS", + [PCS_ERR_CSD_RO_MAP] = "Write request with read-only map", + [PCS_ERR_CSD_WR_IN_PROGR] = "Read only map is rejected due to write requests being processed", + [PCS_ERR_CSD_REPLICATING] = "Attempt to read from unfinished replica", + [PCS_ERR_CANCEL_KEEPWAIT] = "IO request was canceled and redirected to another CS", + [PCS_ERR_CSD_STALLED_REPL] = "Replication stalled", + [PCS_ERR_CSD_LACKING] = "Not enough CS servers available", + [PCS_ERR_CSD_DROPPED] = "The CS server was dropped by administrator", + [PCS_ERR_MDS_NOT_MASTER] = "The target MDS is not current master", + [PCS_ERR_MDS_EXIST] = "The MDS with such id already exist in cluster", + [PCS_ERR_MDS_RM_TOOMANY] = "Removing this MDS will make the cluster unusable", + [PCS_ERR_LICENSE_LIMIT] = "Operation can't be completed due to license limitations", + [PCS_ERR_NO_LICENSE] = "No loaded license", + + [PCS_ERR_SSL_CERTIFICATE_REVOKED] = "Certificate revoked", + [PCS_ERR_SSL_CERTIFICATE_EXPIRED] = "Certificate expired", + [PCS_ERR_SSL_UNKNOWN_CA] = "The certificate could not be matched with a known, trusted CA", + [PCS_ERR_PEER_CERTIFICATE_REJECTED] = "The peer certificate has failed the verification", +}; + /* Get long description of the error */ -const char *pcs_strerror(pcs_err_t errnum); +static __inline const char *pcs_strerror(pcs_err_t errnum) +{ + if ((int)errnum < 0 || errnum >= ARRAY_SIZE(prot_err_list)) + return "Unknown error"; + + return prot_err_list[errnum]; +} /* Get short mnemonic */ const char *pcs_errname(pcs_err_t errnum); _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel