Lines Matching refs:state
235 static size_t read_lba(struct parsed_partitions *state, in read_lba() argument
240 (queue_logical_block_size(state->disk->queue) / 512); in read_lba()
242 if (!buffer || lba > last_lba(state->disk)) in read_lba()
248 unsigned char *data = read_part_sector(state, n++, §); in read_lba()
271 static gpt_entry *alloc_read_gpt_entries(struct parsed_partitions *state, in alloc_read_gpt_entries() argument
288 if (read_lba(state, le64_to_cpu(gpt->partition_entry_lba), in alloc_read_gpt_entries()
306 static gpt_header *alloc_read_gpt_header(struct parsed_partitions *state, in alloc_read_gpt_header() argument
310 unsigned ssz = queue_logical_block_size(state->disk->queue); in alloc_read_gpt_header()
316 if (read_lba(state, lba, (u8 *) gpt, ssz) < ssz) { in alloc_read_gpt_header()
335 static int is_gpt_valid(struct parsed_partitions *state, u64 lba, in is_gpt_valid() argument
343 if (!(*gpt = alloc_read_gpt_header(state, lba))) in is_gpt_valid()
357 queue_logical_block_size(state->disk->queue)) { in is_gpt_valid()
360 queue_logical_block_size(state->disk->queue)); in is_gpt_valid()
396 lastlba = last_lba(state->disk); in is_gpt_valid()
430 if (!(*ptes = alloc_read_gpt_entries(state, *gpt))) in is_gpt_valid()
581 static int find_valid_gpt(struct parsed_partitions *state, gpt_header **gpt, in find_valid_gpt() argument
588 struct gendisk *disk = state->disk; in find_valid_gpt()
590 sector_t total_sectors = get_capacity(state->disk); in find_valid_gpt()
596 lastlba = last_lba(state->disk); in find_valid_gpt()
603 read_lba(state, 0, (u8 *)legacymbr, sizeof(*legacymbr)); in find_valid_gpt()
615 good_pgpt = is_gpt_valid(state, GPT_PRIMARY_PARTITION_TABLE_LBA, in find_valid_gpt()
618 good_agpt = is_gpt_valid(state, in find_valid_gpt()
622 good_agpt = is_gpt_valid(state, lastlba, &agpt, &aptes); in find_valid_gpt()
630 good_agpt = is_gpt_valid(state, agpt_sector, in find_valid_gpt()
713 int efi_partition(struct parsed_partitions *state) in efi_partition() argument
718 unsigned ssz = queue_logical_block_size(state->disk->queue) / 512; in efi_partition()
720 if (!find_valid_gpt(state, &gpt, &ptes) || !gpt || !ptes) { in efi_partition()
728 for (i = 0; i < le32_to_cpu(gpt->num_partition_entries) && i < state->limit-1; i++) { in efi_partition()
735 if (!is_pte_valid(&ptes[i], last_lba(state->disk))) in efi_partition()
738 put_partition(state, i+1, start * ssz, size * ssz); in efi_partition()
742 state->parts[i + 1].flags = ADDPART_FLAG_RAID; in efi_partition()
744 info = &state->parts[i + 1].info; in efi_partition()
751 state->parts[i + 1].has_info = true; in efi_partition()
755 strlcat(state->pp_buf, "\n", PAGE_SIZE); in efi_partition()