/* cdt_last_cookie is protected by cdt_llog_lock */
cdt->cdt_last_cookie = ktime_get_real_seconds();
atomic_set(&cdt->cdt_request_count, 0);
+ atomic_set(&cdt->cdt_archive_count, 0);
+ atomic_set(&cdt->cdt_restore_count, 0);
+ atomic_set(&cdt->cdt_remove_count, 0);
cdt->cdt_user_request_mask = (1UL << HSMA_RESTORE);
cdt->cdt_group_request_mask = (1UL << HSMA_RESTORE);
cdt->cdt_other_request_mask = (1UL << HSMA_RESTORE);
mdt_hsm_agent_update_statistics(cdt, 0, 0, 1, &car->car_uuid);
+ switch (car->car_hai->hai_action) {
+ case HSMA_ARCHIVE:
+ atomic_inc(&cdt->cdt_archive_count);
+ break;
+ case HSMA_RESTORE:
+ atomic_inc(&cdt->cdt_restore_count);
+ break;
+ case HSMA_REMOVE:
+ atomic_inc(&cdt->cdt_remove_count);
+ break;
+ }
atomic_inc(&cdt->cdt_request_count);
RETURN(0);
list_del(&car->car_request_list);
up_write(&cdt->cdt_request_lock);
+ switch (car->car_hai->hai_action) {
+ case HSMA_ARCHIVE:
+ atomic_dec(&cdt->cdt_archive_count);
+ break;
+ case HSMA_RESTORE:
+ atomic_dec(&cdt->cdt_restore_count);
+ break;
+ case HSMA_REMOVE:
+ atomic_dec(&cdt->cdt_remove_count);
+ break;
+ }
+
/* Drop reference from cdt_request_list. */
mdt_cdt_put_request(car);
* specified */
__u64 cdt_max_requests; /**< max count of started
* requests */
- atomic_t cdt_request_count; /**< current count of
- * started requests */
+ /** Current count of active requests */
+ atomic_t cdt_request_count; /** total */
+ atomic_t cdt_archive_count;
+ atomic_t cdt_restore_count;
+ atomic_t cdt_remove_count;
+
/* started requests (struct cdt_agent_req:car_cookie_hash)
* indexed by cookie */
struct cfs_hash *cdt_request_cookie_hash;