mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
cmd: gpt: solve issue for swap and rename command
don't use prettyprint_part_size() in create_gpt_partitions_list() that avoid to align offset and size to 1 MiB and increase precision for start and size. This patch avoid the risk to change partition size and lost data during rename or swap. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Acked-by: Stephen Warren <swarren@nvidia.com> Tested-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
parent
0cf02ff612
commit
3a2605fa87
2 changed files with 12 additions and 16 deletions
12
cmd/gpt.c
12
cmd/gpt.c
|
@ -282,14 +282,14 @@ static int create_gpt_partitions_list(int numparts, const char *guid,
|
|||
strcat(partitions_list, "name=");
|
||||
strncat(partitions_list, (const char *)curr->gpt_part_info.name,
|
||||
PART_NAME_LEN + 1);
|
||||
strcat(partitions_list, ",start=");
|
||||
prettyprint_part_size(partstr, (unsigned long)curr->gpt_part_info.start,
|
||||
(unsigned long) curr->gpt_part_info.blksz);
|
||||
sprintf(partstr, ",start=0x%llx",
|
||||
(unsigned long long)curr->gpt_part_info.start *
|
||||
curr->gpt_part_info.blksz);
|
||||
/* one extra byte for NULL */
|
||||
strncat(partitions_list, partstr, PART_NAME_LEN + 1);
|
||||
strcat(partitions_list, ",size=");
|
||||
prettyprint_part_size(partstr, curr->gpt_part_info.size,
|
||||
curr->gpt_part_info.blksz);
|
||||
sprintf(partstr, ",size=0x%llx",
|
||||
(unsigned long long)curr->gpt_part_info.size *
|
||||
curr->gpt_part_info.blksz);
|
||||
strncat(partitions_list, partstr, PART_NAME_LEN + 1);
|
||||
|
||||
strcat(partitions_list, ",uuid=");
|
||||
|
|
|
@ -132,12 +132,8 @@ def test_gpt_rename_partition(state_disk_image, u_boot_console):
|
|||
output = u_boot_console.run_command('gpt read host 0')
|
||||
assert 'name second' in output
|
||||
output = u_boot_console.run_command('part list host 0')
|
||||
assert '0x00000800 0x000007ff "first"' in output
|
||||
assert '0x00001000 0x000017ff "second"' in output
|
||||
# command error here because 'end LBA' (column 2) change after rename
|
||||
# (previous value can be found in test_gpt_read)
|
||||
# "first" 0xa00 => 0x7ff : it is an invalid value < start LBA !
|
||||
# "seconf" 0x1200 => 0x17ff : size is increasing !
|
||||
assert '0x00000800 0x00000a00 "first"' in output
|
||||
assert '0x00001000 0x00001200 "second"' in output
|
||||
|
||||
@pytest.mark.boardspec('sandbox')
|
||||
@pytest.mark.buildconfigspec('cmd_gpt')
|
||||
|
@ -149,12 +145,12 @@ def test_gpt_swap_partitions(state_disk_image, u_boot_console):
|
|||
|
||||
u_boot_console.run_command('host bind 0 ' + state_disk_image.path)
|
||||
output = u_boot_console.run_command('part list host 0')
|
||||
assert '0x00000800 0x000007ff "first"' in output
|
||||
assert '0x00001000 0x000017ff "second"' in output
|
||||
assert '0x00000800 0x00000a00 "first"' in output
|
||||
assert '0x00001000 0x00001200 "second"' in output
|
||||
u_boot_console.run_command('gpt swap host 0 first second')
|
||||
output = u_boot_console.run_command('part list host 0')
|
||||
assert '0x00000800 0x000007ff "second"' in output
|
||||
assert '0x00001000 0x000017ff "first"' in output
|
||||
assert '0x00000800 0x00000a00 "second"' in output
|
||||
assert '0x00001000 0x00001200 "first"' in output
|
||||
|
||||
@pytest.mark.boardspec('sandbox')
|
||||
@pytest.mark.buildconfigspec('cmd_gpt')
|
||||
|
|
Loading…
Reference in a new issue