diff --git a/src/cm_utils/cm_disklock.c b/src/cm_utils/cm_disklock.c index 15b7f14cb4c0a33e4d7e7958889255d8a71c2e78..a7065383fc2cebdee63dcc6b23f1343c65061546 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 b01c5e49a8b3d137f99da7e66af51d337d41d80b..21df24c56e4c4bf1ae6cdb398f7462333edb5dea 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