Lines Matching defs:state

229  * @state: disk parsed partitions
234 * Description: Reads @count bytes from @state->bdev into @buffer.
237 static size_t read_lba(struct parsed_partitions *state,
241 struct block_device *bdev = state->bdev;
250 unsigned char *data = read_part_sector(state, n++, &sect);
266 * @state: disk parsed partitions
273 static gpt_entry *alloc_read_gpt_entries(struct parsed_partitions *state,
290 if (read_lba(state, le64_to_cpu(gpt->partition_entry_lba),
301 * @state: disk parsed partitions
305 * and fills a GPT header starting at @ from @state->bdev.
308 static gpt_header *alloc_read_gpt_header(struct parsed_partitions *state,
312 unsigned ssz = bdev_logical_block_size(state->bdev);
318 if (read_lba(state, lba, (u8 *) gpt, ssz) < ssz) {
329 * @state: disk parsed partitions
337 static int is_gpt_valid(struct parsed_partitions *state, u64 lba,
345 if (!(*gpt = alloc_read_gpt_header(state, lba)))
359 bdev_logical_block_size(state->bdev)) {
362 bdev_logical_block_size(state->bdev));
398 lastlba = last_lba(state->bdev);
432 if (!(*ptes = alloc_read_gpt_entries(state, *gpt)))
569 * @state: disk parsed partitions
583 static int find_valid_gpt(struct parsed_partitions *state, gpt_header **gpt,
590 sector_t total_sectors = i_size_read(state->bdev->bd_inode) >> 9;
596 lastlba = last_lba(state->bdev);
603 read_lba(state, 0, (u8 *)legacymbr, sizeof(*legacymbr));
615 good_pgpt = is_gpt_valid(state, GPT_PRIMARY_PARTITION_TABLE_LBA,
618 good_agpt = is_gpt_valid(state,
622 good_agpt = is_gpt_valid(state, lastlba, &agpt, &aptes);
685 * efi_partition(struct parsed_partitions *state)
686 * @state: disk parsed partitions
703 int efi_partition(struct parsed_partitions *state)
708 unsigned ssz = bdev_logical_block_size(state->bdev) / 512;
710 if (!find_valid_gpt(state, &gpt, &ptes) || !gpt || !ptes) {
718 for (i = 0; i < le32_to_cpu(gpt->num_partition_entries) && i < state->limit-1; i++) {
725 if (!is_pte_valid(&ptes[i], last_lba(state->bdev)))
728 put_partition(state, i+1, start * ssz, size * ssz);
732 state->parts[i + 1].flags = ADDPART_FLAG_RAID;
734 info = &state->parts[i + 1].info;
741 state->parts[i + 1].has_info = true;
745 strlcat(state->pp_buf, "\n", PAGE_SIZE);