From ee1bee86dee6c17d2f49032faa752421d8f694f9 Mon Sep 17 00:00:00 2001 From: dengyong Date: Fri, 11 Apr 2025 14:38:58 +0800 Subject: [PATCH] add cm_dl_modify_lease interface --- src/cm_utils/cm_disklock.c | 23 +++++++++++++++++++++++ src/cm_utils/cm_disklock.h | 10 ++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/cm_utils/cm_disklock.c b/src/cm_utils/cm_disklock.c index 15b7f14..a706538 100644 --- a/src/cm_utils/cm_disklock.c +++ b/src/cm_utils/cm_disklock.c @@ -524,6 +524,29 @@ unsigned int cm_dl_alloc_lease( return lock_id; } +int cm_dl_modify_lease(unsigned int lock_id, unsigned int lease_sec) +{ + if (lock_id >= CM_MAX_DISKLOCK_COUNT) { + LOG_RUN_ERR("DL:invalid lock_id:%u.", lock_id); + return CM_DL_ERR_INVALID_LOCK_ID; + } + + cm_dl_t *lock_info = &g_dl_ctx.lock_info[lock_id]; + if (lock_info->fd <= 0) { + LOG_RUN_ERR("DL:invalid lock not ready,lock_id:%u.", lock_id); + return CM_DL_ERR_INVALID_LOCK_ID; + } + + if(lock_info->type != LT_LEASE) { + LOG_RUN_ERR("DL:lock is not lease lock,lock_id:%u.", lock_id); + return CM_DL_ERR_INVALID_PARAM; + } + + lock_info->lease_sec = lease_sec; + + return CM_SUCCESS; +} + int cm_dl_check_lock_remain(unsigned int lock_id, unsigned long long inst_id, unsigned int *is_remain) { *is_remain = CM_FALSE; diff --git a/src/cm_utils/cm_disklock.h b/src/cm_utils/cm_disklock.h index b01c5e4..21df24c 100644 --- a/src/cm_utils/cm_disklock.h +++ b/src/cm_utils/cm_disklock.h @@ -117,6 +117,16 @@ int cm_dl_getowner(unsigned int lock_id, unsigned long long *inst_id); * @return != 0 fail */ int cm_dl_getlocktime(unsigned int lock_id, unsigned long long *locktime); + +/** + * modify the lease lock's lease duration. + * @param [in] lock_id: lock_id + * @param [in] lease_sec: lease duration,unit second. + * @return 0 success + * @return != 0 fail + */ +int cm_dl_modify_lease(unsigned int lock_id, unsigned int lease_sec); + /** * Check whether the lock remains. * @param [in] lock_id: lock_id -- Gitee