mirror of
https://github.com/torvalds/linux.git
synced 2026-06-10 07:32:29 +02:00
fs: partitions: efi: Add force_gpt_sector parameter
force_gpt_sector=<sector> causes the GPT partition search to look at the specified sector for a valid GPT header if the GPT is not found at the beginning or the end of the block device. Change-Id: I9b5f85ce24719c0538d42ec5a94344c7f6556b2b Signed-off-by: Colin Cross <ccross@android.com>
This commit is contained in:
parent
e51ab3740d
commit
fd4194e5c3
|
|
@ -105,6 +105,7 @@
|
|||
* the partition tables happens after init too.
|
||||
*/
|
||||
static int force_gpt;
|
||||
static u64 force_gpt_sector;
|
||||
static int __init
|
||||
force_gpt_fn(char *str)
|
||||
{
|
||||
|
|
@ -113,6 +114,13 @@ force_gpt_fn(char *str)
|
|||
}
|
||||
__setup("gpt", force_gpt_fn);
|
||||
|
||||
static int __init force_gpt_sector_fn(char *str)
|
||||
{
|
||||
force_gpt_sector = simple_strtoull(str, NULL, 0);
|
||||
return 1;
|
||||
}
|
||||
__setup("gpt_sector=", force_gpt_sector_fn);
|
||||
|
||||
|
||||
/**
|
||||
* efi_crc32() - EFI version of crc32 function
|
||||
|
|
@ -541,6 +549,9 @@ static int find_valid_gpt(struct parsed_partitions *state, gpt_header **gpt,
|
|||
if (!good_agpt && force_gpt)
|
||||
good_agpt = is_gpt_valid(state, lastlba, &agpt, &aptes);
|
||||
|
||||
if (!good_agpt && force_gpt && force_gpt_sector)
|
||||
good_agpt = is_gpt_valid(state, force_gpt_sector, &agpt, &aptes);
|
||||
|
||||
/* The obviously unsuccessful case */
|
||||
if (!good_pgpt && !good_agpt)
|
||||
goto fail;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user