mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 03:00:34 +03:00
Merge branch 'fix/esp_partition_blockdev_sizes_v6.0' into 'release/v6.0'
fix(storage/partition): Update sizes in blockdev geometry in read-only mode for compatibility (v6.0) See merge request espressif/esp-idf!45695
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
@@ -163,15 +163,19 @@ TEST(partition_bdl, test_partition_bdl_limits)
|
||||
TEST(partition_bdl, test_bdl_partition_readonly)
|
||||
{
|
||||
//storage3 is readonly partition
|
||||
const esp_partition_t *partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, "storage3");
|
||||
TEST_ASSERT_NOT_NULL(partition);
|
||||
|
||||
esp_blockdev_handle_t part_blockdev = NULL;
|
||||
TEST_ESP_OK(esp_partition_get_blockdev(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, "storage3", &part_blockdev));
|
||||
|
||||
//test flags
|
||||
TEST_ASSERT_EQUAL(1, part_blockdev->device_flags.read_only);
|
||||
TEST_ASSERT_EQUAL(0, part_blockdev->geometry.write_size);
|
||||
TEST_ASSERT_EQUAL(0, part_blockdev->geometry.erase_size);
|
||||
TEST_ASSERT_EQUAL(0, part_blockdev->geometry.recommended_write_size);
|
||||
TEST_ASSERT_EQUAL(0, part_blockdev->geometry.recommended_erase_size);
|
||||
const size_t expected_write_size = partition->encrypted ? 16 : 1;
|
||||
TEST_ASSERT_EQUAL(expected_write_size, part_blockdev->geometry.write_size);
|
||||
TEST_ASSERT_EQUAL(partition->erase_size, part_blockdev->geometry.erase_size);
|
||||
TEST_ASSERT_EQUAL(expected_write_size, part_blockdev->geometry.recommended_write_size);
|
||||
TEST_ASSERT_EQUAL(partition->erase_size, part_blockdev->geometry.recommended_erase_size);
|
||||
|
||||
uint8_t dummy_test_buff[1024];
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -727,29 +727,26 @@ esp_err_t esp_partition_ptr_get_blockdev(const esp_partition_t* partition, esp_b
|
||||
|
||||
ESP_BLOCKDEV_FLAGS_INST_CONFIG_DEFAULT(out->device_flags);
|
||||
|
||||
if(partition->readonly) {
|
||||
out->device_flags.read_only = 1;
|
||||
out->geometry.write_size = 0;
|
||||
out->geometry.erase_size = 0;
|
||||
out->geometry.recommended_write_size = 0;
|
||||
out->geometry.recommended_erase_size = 0;
|
||||
}
|
||||
else {
|
||||
if (partition->encrypted) {
|
||||
out->geometry.write_size = 16;
|
||||
out->geometry.recommended_write_size = 16;
|
||||
} else {
|
||||
out->geometry.write_size = 1;
|
||||
out->geometry.recommended_write_size = 1;
|
||||
}
|
||||
out->geometry.erase_size = partition->erase_size;
|
||||
out->geometry.recommended_erase_size = partition->erase_size;
|
||||
out->device_flags.read_only = partition->readonly ? 1 : 0;
|
||||
|
||||
if (partition->encrypted) {
|
||||
out->geometry.write_size = 16;
|
||||
out->geometry.recommended_write_size = 16;
|
||||
} else {
|
||||
out->geometry.write_size = 1;
|
||||
out->geometry.recommended_write_size = 1;
|
||||
}
|
||||
|
||||
out->geometry.erase_size = partition->erase_size;
|
||||
out->geometry.recommended_erase_size = partition->erase_size;
|
||||
|
||||
out->geometry.read_size = 1;
|
||||
out->geometry.recommended_read_size = 1;
|
||||
|
||||
out->geometry.disk_size = partition->size;
|
||||
|
||||
out->ops = &s_bdl_ops;
|
||||
|
||||
*out_bdl_handle_ptr = out;
|
||||
|
||||
return ESP_OK;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2025-2026 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -188,15 +188,19 @@
|
||||
TEST(esp_partition, test_bdl_interface_readonly)
|
||||
{
|
||||
//storage3 is readonly partition
|
||||
esp_blockdev_handle_t part_blockdev = NULL;
|
||||
TEST_ESP_OK(esp_partition_get_blockdev(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, "storage3", &part_blockdev));
|
||||
const esp_partition_t *partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, "storage3");
|
||||
TEST_ASSERT_NOT_NULL(partition);
|
||||
|
||||
esp_blockdev_handle_t part_blockdev = NULL;
|
||||
TEST_ESP_OK(esp_partition_get_blockdev(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, "storage3", &part_blockdev));
|
||||
|
||||
//test flags
|
||||
TEST_ASSERT_EQUAL(1, part_blockdev->device_flags.read_only);
|
||||
TEST_ASSERT_EQUAL(0, part_blockdev->geometry.write_size);
|
||||
TEST_ASSERT_EQUAL(0, part_blockdev->geometry.erase_size);
|
||||
TEST_ASSERT_EQUAL(0, part_blockdev->geometry.recommended_write_size);
|
||||
TEST_ASSERT_EQUAL(0, part_blockdev->geometry.recommended_erase_size);
|
||||
const size_t expected_write_size = partition->encrypted ? 16 : 1;
|
||||
TEST_ASSERT_EQUAL(expected_write_size, part_blockdev->geometry.write_size);
|
||||
TEST_ASSERT_EQUAL(partition->erase_size, part_blockdev->geometry.erase_size);
|
||||
TEST_ASSERT_EQUAL(expected_write_size, part_blockdev->geometry.recommended_write_size);
|
||||
TEST_ASSERT_EQUAL(partition->erase_size, part_blockdev->geometry.recommended_erase_size);
|
||||
|
||||
uint8_t dummy_test_buff[1024];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user