From 82c8d4f45c6f9015b22fe458348b1ed1f57f405a Mon Sep 17 00:00:00 2001 From: Michal Mielewczyk Date: Sun, 27 Aug 2023 11:19:09 +0200 Subject: [PATCH 1/2] composite volume: add subvolume iterator API Signed-off-by: Michal Mielewczyk --- inc/ocf_composite_volume.h | 16 ++++++++++++++++ src/ocf_composite_volume.c | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/inc/ocf_composite_volume.h b/inc/ocf_composite_volume.h index 9c09eb4..04cb45f 100644 --- a/inc/ocf_composite_volume.h +++ b/inc/ocf_composite_volume.h @@ -1,5 +1,6 @@ /* * Copyright(c) 2022 Intel Corporation + * Copyright(c) 2024 Huawei Technologies * SPDX-License-Identifier: BSD-3-Clause */ @@ -54,4 +55,19 @@ int ocf_composite_volume_add(ocf_composite_volume_t cvolume, ocf_volume_type_t type, struct ocf_volume_uuid *uuid, void *volume_params); +typedef int (*ocf_composite_volume_member_visitor_t)(ocf_volume_t subvolume, + void *priv); + +/** + * @brief Call @visitor on every valid member of composite volume + * + * @param[in] cvolume composite volume handle + * @param[in] visitor function callback + * @param[in] priv pointer to be passed to the callback + * + * @return subvolume in composite volume + */ +int ocf_composite_volume_member_visit(ocf_composite_volume_t cvolume, + ocf_composite_volume_member_visitor_t visitor, void *priv); + #endif /* __OCF_COMPOSITE_VOLUME_H__ */ diff --git a/src/ocf_composite_volume.c b/src/ocf_composite_volume.c index b20531f..9a607b3 100644 --- a/src/ocf_composite_volume.c +++ b/src/ocf_composite_volume.c @@ -393,3 +393,19 @@ int ocf_composite_volume_add(ocf_composite_volume_t cvolume, return 0; } + +int ocf_composite_volume_member_visit(ocf_composite_volume_t cvolume, + ocf_composite_volume_member_visitor_t visitor, void *priv) +{ + struct ocf_composite_volume *composite = ocf_volume_get_priv(cvolume); + int i; + int res; + + for (i = 0 ; i < composite->members_cnt; i++) { + res = visitor(&composite->member[i].volume, priv); + if (res != 0) + return res; + } + + return 0; +} From c6d243662251abe50af749394a3e5241911da4e7 Mon Sep 17 00:00:00 2001 From: Michal Mielewczyk Date: Wed, 6 Sep 2023 15:46:28 +0200 Subject: [PATCH 2/2] volume: add description to 'uuid_copy' filed Signed-off-by: Michal Mielewczyk --- src/ocf_volume_priv.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ocf_volume_priv.h b/src/ocf_volume_priv.h index c327976..4440fa3 100644 --- a/src/ocf_volume_priv.h +++ b/src/ocf_volume_priv.h @@ -29,7 +29,10 @@ struct ocf_volume { /* true if reading discarded pages returns 0 */ } features; bool opened; + bool uuid_copy; + /* @brief True if OCF shall free UUID on volume deinit */ + void *priv; ocf_cache_t cache; struct list_head core_pool_item;