Skip to content

Commit 5c8a10e

Browse files
committed
fix(esp_partition): fixes related to BDL update
1 parent b695279 commit 5c8a10e

File tree

10 files changed

+78
-89
lines changed

10 files changed

+78
-89
lines changed

components/esp_blockdev/include/esp_blockdev.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,8 @@ typedef struct esp_blockdev_t {
217217
/* Device context pointer */
218218
void* ctx;
219219

220-
const esp_blockdev_flags_t device_flags;
221-
const esp_blockdev_geometry_t geometry;
220+
esp_blockdev_flags_t device_flags;
221+
esp_blockdev_geometry_t geometry;
222222
const esp_blockdev_ops_t* ops;
223223

224224
} esp_blockdev_t;

components/esp_partition/host_test/.build-test-rules.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ components/esp_partition/host_test/partition_api_test:
55
- if: IDF_TARGET == "linux"
66
reason: only test on linux
77
depends_components:
8-
- spi_flash
98
- esp_partition
109

1110
components/esp_partition/host_test/partition_bdl_test:
1211
enable:
1312
- if: IDF_TARGET == "linux"
1413
reason: only test on linux
1514
depends_components:
16-
- spi_flash
15+
- esp_blockdev
1716
- esp_partition

components/esp_partition/host_test/partition_api_test/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
| Supported Targets | Linux |
22
| ----------------- | ----- |
33

4-
This is a test project for verification of esp_partition component APIs on Linux target (CONFIG_IDF_TARGET_LINUX).
4+
This is a test project for verification of 'esp_partition' component APIs on Linux target (CONFIG_IDF_TARGET_LINUX).
55
It verifies all important APIs and properties, and prints the results.
6-
The Block-Device Layer tests have names with a prefix 'test_parition_bdl', available in 'components/esp_partition/host_test/partition_bdl_test', and the tests check all the BDL operations and commands related to 'esp_partition' (on host side)
6+
The Block-Device Layer tests have names with a prefix 'test_partition_bdl', available in 'components/esp_partition/host_test/partition_bdl_test', and the tests check all the BDL operations and commands related to 'esp_partition' (on host side)
77

88
# Build
99
Source the IDF environment as usual.

components/esp_partition/host_test/partition_bdl_test/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
| Supported Targets | Linux |
22
| ----------------- | ----- |
33

4-
This is a test project for esp_partition Block Device Layer interface on Linux target (CONFIG_IDF_TARGET_LINUX).
4+
This is a test project for 'esp_partition' Block Device Layer interface on Linux target (CONFIG_IDF_TARGET_LINUX).
55

66
# Build
77
Source the IDF environment as usual.

components/esp_partition/host_test/partition_bdl_test/main/partition_bdl_test.c

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,22 @@ TEST(partition_bdl, test_partition_bdl_ops)
4141
memset((void*)data_buffer, 0, data_size);
4242

4343
//erase the first sector data from the blockdev and check it's really wiped
44-
TEST_ESP_OK(part_blockdev->erase(part_blockdev, target_addr, part_blockdev->geometry.erase_size));
44+
TEST_ESP_OK(part_blockdev->ops->erase(part_blockdev, target_addr, part_blockdev->geometry.erase_size));
4545
memset((void*)test_data, 0xFF, data_size); //erased NOR flash sector contains only 1s
4646

47-
TEST_ESP_OK(part_blockdev->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
47+
TEST_ESP_OK(part_blockdev->ops->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
4848
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer, data_size));
4949

5050
//write to the blockdev
5151
memset((void*)test_data, 'A', data_size);
52-
TEST_ESP_OK(part_blockdev->write(part_blockdev, test_data, target_addr, data_size));
52+
TEST_ESP_OK(part_blockdev->ops->write(part_blockdev, test_data, target_addr, data_size));
5353

5454
//read from the blockdev the data written before
55-
TEST_ESP_OK(part_blockdev->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
55+
TEST_ESP_OK(part_blockdev->ops->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
5656
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer, data_size));
5757

58-
//release the BDL object - nothing to check here, the BDL memory is just freed
59-
esp_partition_release_blockdev(part_blockdev);
58+
//release the BDL object
59+
TEST_ESP_OK(part_blockdev->ops->release(part_blockdev));
6060
}
6161

6262
/* Test parallel access to two independent partitions through BDL interface.
@@ -89,34 +89,34 @@ TEST(partition_bdl, test_two_partitions_bdl_ops)
8989
memset((void*)data_buffer_2, 0, data_size);
9090

9191
//erase the first sector data from the blockdev and check it's really wiped
92-
TEST_ESP_OK(part_blockdev_1->erase(part_blockdev_1, target_addr, part_blockdev_1->geometry.erase_size));
93-
TEST_ESP_OK(part_blockdev_2->erase(part_blockdev_2, target_addr, part_blockdev_2->geometry.erase_size));
92+
TEST_ESP_OK(part_blockdev_1->ops->erase(part_blockdev_1, target_addr, part_blockdev_1->geometry.erase_size));
93+
TEST_ESP_OK(part_blockdev_2->ops->erase(part_blockdev_2, target_addr, part_blockdev_2->geometry.erase_size));
9494
memset((void*)test_data, 0xFF, data_size); //erased NOR flash sector contains only 1s
9595

96-
TEST_ESP_OK(part_blockdev_1->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
97-
TEST_ESP_OK(part_blockdev_2->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
96+
TEST_ESP_OK(part_blockdev_1->ops->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
97+
TEST_ESP_OK(part_blockdev_2->ops->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
9898
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_1, data_size));
9999
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_2, data_size));
100100

101101
//write to the blockdev 1
102102
memset((void*)test_data, 'A', data_size);
103-
TEST_ESP_OK(part_blockdev_1->write(part_blockdev_1, test_data, target_addr, data_size));
103+
TEST_ESP_OK(part_blockdev_1->ops->write(part_blockdev_1, test_data, target_addr, data_size));
104104

105105
//read the data written before from the blockdev 1
106-
TEST_ESP_OK(part_blockdev_1->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
106+
TEST_ESP_OK(part_blockdev_1->ops->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
107107
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_1, data_size));
108108

109109
//write to the blockdev 2
110110
memset((void*)test_data, 'B', data_size);
111-
TEST_ESP_OK(part_blockdev_2->write(part_blockdev_2, test_data, target_addr, data_size));
111+
TEST_ESP_OK(part_blockdev_2->ops->write(part_blockdev_2, test_data, target_addr, data_size));
112112

113113
//read the data written before from the blockdev 2
114-
TEST_ESP_OK(part_blockdev_2->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
114+
TEST_ESP_OK(part_blockdev_2->ops->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
115115
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_2, data_size));
116116

117-
//release the BDL object - nothing to check here, the BDL memory is just freed
118-
esp_partition_release_blockdev(part_blockdev_1);
119-
esp_partition_release_blockdev(part_blockdev_2);
117+
//release the BDL objects
118+
TEST_ESP_OK(part_blockdev_1->ops->release(part_blockdev_1));
119+
TEST_ESP_OK(part_blockdev_2->ops->release(part_blockdev_2));
120120
}
121121

122122
TEST_GROUP_RUNNER(partition_bdl)

components/esp_partition/include/esp_partition.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -659,18 +659,6 @@ esp_err_t esp_partition_get_blockdev(const esp_partition_type_t type, const esp_
659659
*/
660660
esp_err_t esp_partition_ptr_get_blockdev(const esp_partition_t *partition, esp_blockdev_handle_t *out_bdl_handle);
661661

662-
/**
663-
* @brief Release BDL instance associated with specific partition
664-
*
665-
* Releases BDL structure instance and related internal data. It is strongly recommended to use this API for releasing the BDL handles
666-
* created through 'esp_partition_get_blockdev()' or 'esp_partition_ptr_get_blockdev()'calls, due to possible internal dependencies
667-
* and memory allocations not "visible" outside of the 'esp_partition' public BDL interface.
668-
*
669-
* @param[in] dev_handle Block device instance handle to close
670-
*
671-
*/
672-
void esp_partition_release_blockdev(esp_blockdev_handle_t dev_handle);
673-
674662
#ifdef __cplusplus
675663
}
676664
#endif

components/esp_partition/partition.c

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,6 @@ typedef struct esp_partition_iterator_opaque_ {
6767
esp_partition_t *info; // pointer to info (it is redundant, but makes code more readable)
6868
} esp_partition_iterator_opaque_t;
6969

70-
typedef struct {
71-
esp_blockdev_t blockdev;
72-
const esp_partition_t *partition;
73-
} esp_partition_bdl_t;
74-
75-
7670
static SLIST_HEAD(partition_list_head_, partition_list_item_) s_partition_list = SLIST_HEAD_INITIALIZER(s_partition_list);
7771
static _lock_t s_partition_list_lock;
7872

@@ -650,7 +644,7 @@ static esp_err_t esp_partition_blockdev_read(esp_blockdev_handle_t dev_handle, u
650644
return ESP_ERR_INVALID_ARG;
651645
}
652646

653-
const esp_partition_t* partition = ((esp_partition_bdl_t*)dev_handle)->partition;
647+
const esp_partition_t* partition = ((const esp_partition_t*)dev_handle->ctx);
654648
assert(partition != NULL);
655649

656650
esp_err_t res = esp_partition_read(partition, src_addr, dst_buf, data_read_len);
@@ -666,7 +660,7 @@ static esp_err_t esp_partition_blockdev_write(esp_blockdev_handle_t dev_handle,
666660
return ESP_ERR_INVALID_SIZE;
667661
}
668662

669-
const esp_partition_t* partition = ((esp_partition_bdl_t*)dev_handle)->partition;
663+
const esp_partition_t* partition = ((const esp_partition_t*)dev_handle->ctx);
670664
assert(partition != NULL);
671665

672666
esp_err_t res = esp_partition_write(partition, dst_addr, src_buf, data_write_len);
@@ -682,7 +676,7 @@ static esp_err_t esp_partition_blockdev_erase(esp_blockdev_handle_t dev_handle,
682676
return ESP_ERR_INVALID_SIZE;
683677
}
684678

685-
const esp_partition_t* partition = ((esp_partition_bdl_t*)dev_handle)->partition;
679+
const esp_partition_t* partition = ((const esp_partition_t*)dev_handle->ctx);
686680
assert(partition != NULL);
687681

688682
esp_err_t res = esp_partition_erase_range(partition, start_addr, erase_len);
@@ -691,29 +685,42 @@ static esp_err_t esp_partition_blockdev_erase(esp_blockdev_handle_t dev_handle,
691685
return res;
692686
}
693687

688+
static esp_err_t esp_partition_blockdev_release(esp_blockdev_handle_t dev_handle)
689+
{
690+
free(dev_handle);
691+
return ESP_OK;
692+
}
693+
694+
//BDL ops singleton
695+
static const esp_blockdev_ops_t s_bdl_ops = {
696+
.read = esp_partition_blockdev_read,
697+
.write = esp_partition_blockdev_write,
698+
.erase = esp_partition_blockdev_erase,
699+
.release = esp_partition_blockdev_release
700+
};
701+
694702
esp_err_t esp_partition_ptr_get_blockdev(const esp_partition_t* partition, esp_blockdev_handle_t *out_bdl_handle_ptr)
695703
{
696-
esp_partition_bdl_t *out = calloc(1, sizeof(esp_partition_bdl_t));
704+
esp_blockdev_t *out = calloc(1, sizeof(esp_blockdev_t));
697705
if (out == NULL) {
698706
return ESP_ERR_NO_MEM;
699707
}
700708

701-
//! the flags should be read from the bottom device - TBD (required for NAND flash etc)
702-
ESP_BLOCKDEV_FLAGS_INST_CONFIG_DEFAULT(out->blockdev.device_flags);
709+
out->ctx = (void*)partition;
710+
711+
ESP_BLOCKDEV_FLAGS_INST_CONFIG_DEFAULT(out->device_flags);
712+
713+
out->geometry.disk_size = partition->size;
714+
out->geometry.write_size = 1;
715+
out->geometry.read_size = 1;
716+
out->geometry.erase_size = partition->erase_size;
717+
out->geometry.recommended_write_size = 1;
718+
out->geometry.recommended_read_size = 1;
719+
out->geometry.recommended_erase_size = partition->erase_size;
703720

704-
out->blockdev.read = &esp_partition_blockdev_read;
705-
out->blockdev.write = &esp_partition_blockdev_write;
706-
out->blockdev.erase = &esp_partition_blockdev_erase;
707-
out->blockdev.geometry.disk_size = partition->size;
708-
out->blockdev.geometry.write_size = 1;
709-
out->blockdev.geometry.read_size = 1;
710-
out->blockdev.geometry.erase_size = partition->erase_size;
711-
out->blockdev.geometry.recommended_write_size = 1;
712-
out->blockdev.geometry.recommended_read_size = 1;
713-
out->blockdev.geometry.recommended_erase_size = partition->erase_size;
714-
out->partition = partition;
721+
out->ops = &s_bdl_ops;
715722

716-
*out_bdl_handle_ptr = (esp_blockdev_handle_t)out;
723+
*out_bdl_handle_ptr = out;
717724

718725
return ESP_OK;
719726
}
@@ -730,8 +737,3 @@ esp_err_t esp_partition_get_blockdev(const esp_partition_type_t type, const esp_
730737

731738
return res;
732739
}
733-
734-
void esp_partition_release_blockdev(esp_blockdev_handle_t dev_handle)
735-
{
736-
free((esp_partition_bdl_t*)dev_handle);
737-
}

components/esp_partition/test_apps/.build-test-rules.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
components/esp_partition/test_apps:
44
enable:
55
- if: IDF_TARGET in ["esp32", "esp32c3"]
6-
temporary: true
7-
reason: the other targets are not tested yet
6+
temporary: false
7+
reason: sufficient to test on one Xtensa and one RISC-V target

components/esp_partition/test_apps/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
| Supported Targets | ESP32 | ESP32-C3 |
22
| ----------------- | ----- | -------- |
33

4-
This is a test app for esp_partition component. It verifies all important APIs and properties, and prints the results.
4+
This is a test app for 'esp_partition' component. It verifies all the important APIs and properties and prints the results.
55
The Block Device Layer related tests have names with a prefix 'test_bdl', and they check all the BDL operations related to 'esp_partition' including parallel access to 2 partitions.
66

77
In CI, it is sufficient to run this test for one chip of each architecture.

components/esp_partition/test_apps/main/test_part_app.c

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,21 @@ TEST(esp_partition, test_bdl_interface)
3434
memset((void*)data_buffer, 0, data_size);
3535

3636
//erase the first sector data from the blockdev and check it's really wiped
37-
TEST_ESP_OK(part_blockdev->erase(part_blockdev, target_addr, part_blockdev->geometry.erase_size));
37+
TEST_ESP_OK(part_blockdev->ops->erase(part_blockdev, target_addr, part_blockdev->geometry.erase_size));
3838
memset((void*)test_data, 0xFF, data_size); //erased NOR flash sector contains only 1s
39-
TEST_ESP_OK(part_blockdev->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
39+
TEST_ESP_OK(part_blockdev->ops->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
4040
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer, data_size));
4141

4242
//write to the blockdev
4343
memset((void*)test_data, 'A', data_size);
44-
TEST_ESP_OK(part_blockdev->write(part_blockdev, test_data, target_addr, data_size));
44+
TEST_ESP_OK(part_blockdev->ops->write(part_blockdev, test_data, target_addr, data_size));
4545

4646
//read from the blockdev the data written before
47-
TEST_ESP_OK(part_blockdev->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
47+
TEST_ESP_OK(part_blockdev->ops->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
4848
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer, data_size));
4949

5050
//release the BDL object - nothing to check here, the BDL memory is just freed
51-
esp_partition_release_blockdev(part_blockdev);
51+
TEST_ESP_OK(part_blockdev->ops->release(part_blockdev));
5252
}
5353

5454
TEST(esp_partition, test_bdl_interface_external)
@@ -68,21 +68,21 @@ TEST(esp_partition, test_bdl_interface_external)
6868
memset((void*)data_buffer, 0, data_size);
6969

7070
//erase the first sector data from the blockdev and check it's really wiped
71-
TEST_ESP_OK(part_blockdev->erase(part_blockdev, target_addr, part_blockdev->geometry.erase_size));
71+
TEST_ESP_OK(part_blockdev->ops->erase(part_blockdev, target_addr, part_blockdev->geometry.erase_size));
7272
memset((void*)test_data, 0xFF, data_size); //erased NOR flash sector contains only 1s
73-
TEST_ESP_OK(part_blockdev->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
73+
TEST_ESP_OK(part_blockdev->ops->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
7474
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer, data_size));
7575

7676
//write to the blockdev
7777
memset((void*)test_data, 'A', data_size);
78-
TEST_ESP_OK(part_blockdev->write(part_blockdev, test_data, target_addr, data_size));
78+
TEST_ESP_OK(part_blockdev->ops->write(part_blockdev, test_data, target_addr, data_size));
7979

8080
//read from the blockdev the data written before
81-
TEST_ESP_OK(part_blockdev->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
81+
TEST_ESP_OK(part_blockdev->ops->read(part_blockdev, data_buffer, sizeof(data_buffer), target_addr, data_size));
8282
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer, data_size));
8383

8484
//release the BDL object - nothing to check here, the BDL memory is just freed
85-
esp_partition_release_blockdev(part_blockdev);
85+
TEST_ESP_OK(part_blockdev->ops->release(part_blockdev));
8686

8787
//deregister the external partition
8888
TEST_ESP_OK(esp_partition_deregister_external(ext_partition));
@@ -114,34 +114,34 @@ TEST(esp_partition, test_bdl_two_partitions)
114114
memset((void*)data_buffer_2, 0, data_size);
115115

116116
//erase the first sector data from the blockdev and check it's really wiped
117-
TEST_ESP_OK(part_blockdev_1->erase(part_blockdev_1, target_addr, part_blockdev_1->geometry.erase_size));
118-
TEST_ESP_OK(part_blockdev_2->erase(part_blockdev_2, target_addr, part_blockdev_2->geometry.erase_size));
117+
TEST_ESP_OK(part_blockdev_1->ops->erase(part_blockdev_1, target_addr, part_blockdev_1->geometry.erase_size));
118+
TEST_ESP_OK(part_blockdev_2->ops->erase(part_blockdev_2, target_addr, part_blockdev_2->geometry.erase_size));
119119
memset((void*)test_data, 0xFF, data_size); //erased NOR flash sector contains only 1s
120120

121-
TEST_ESP_OK(part_blockdev_1->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
122-
TEST_ESP_OK(part_blockdev_2->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
121+
TEST_ESP_OK(part_blockdev_1->ops->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
122+
TEST_ESP_OK(part_blockdev_2->ops->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
123123
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_1, data_size));
124124
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_2, data_size));
125125

126126
//write to the blockdev 1
127127
memset((void*)test_data, 'A', data_size);
128-
TEST_ESP_OK(part_blockdev_1->write(part_blockdev_1, test_data, target_addr, data_size));
128+
TEST_ESP_OK(part_blockdev_1->ops->write(part_blockdev_1, test_data, target_addr, data_size));
129129

130130
//read the data written before from the blockdev 1
131-
TEST_ESP_OK(part_blockdev_1->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
131+
TEST_ESP_OK(part_blockdev_1->ops->read(part_blockdev_1, data_buffer_1, sizeof(data_buffer_1), target_addr, data_size));
132132
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_1, data_size));
133133

134134
//write to the blockdev 2
135135
memset((void*)test_data, 'B', data_size);
136-
TEST_ESP_OK(part_blockdev_2->write(part_blockdev_2, test_data, target_addr, data_size));
136+
TEST_ESP_OK(part_blockdev_2->ops->write(part_blockdev_2, test_data, target_addr, data_size));
137137

138138
//read the data written before from the blockdev 2
139-
TEST_ESP_OK(part_blockdev_2->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
139+
TEST_ESP_OK(part_blockdev_2->ops->read(part_blockdev_2, data_buffer_2, sizeof(data_buffer_2), target_addr, data_size));
140140
TEST_ASSERT_EQUAL(0, memcmp(test_data, data_buffer_2, data_size));
141141

142-
//release the BDL object - nothing to check here, the BDL memory is just freed
143-
esp_partition_release_blockdev(part_blockdev_1);
144-
esp_partition_release_blockdev(part_blockdev_2);
142+
//release the BDL objects
143+
TEST_ESP_OK(part_blockdev_1->ops->release(part_blockdev_1));
144+
TEST_ESP_OK(part_blockdev_2->ops->release(part_blockdev_2));
145145
}
146146

147147
TEST_GROUP_RUNNER(esp_partition)

0 commit comments

Comments
 (0)