Lines Matching refs:bdev
67 struct efi_block_dev *bdev;
100 TAILQ_FOREACH(bdev, &efi_block_devs, entries) {
101 if (bdev->index == dev) {
102 TAILQ_FOREACH(bpart, &bdev->partitions, entries) {
125 efi_block_do_read_blockio(struct efi_block_dev *bdev, UINT64 off, void *buf,
134 lba_start = off / bdev->bio->Media->BlockSize;
135 lba_end = (off + bufsize - 1) / bdev->bio->Media->BlockSize;
136 blkbuf_offset = off % bdev->bio->Media->BlockSize;
137 blkbuf_size = (lba_end - lba_start + 1) * bdev->bio->Media->BlockSize;
140 if (bdev->bio->Media->IoAlign > 1) {
141 alloc_size = (blkbuf_size + bdev->bio->Media->IoAlign - 1) /
142 bdev->bio->Media->IoAlign *
143 bdev->bio->Media->IoAlign;
151 if (bdev->bio->Media->IoAlign > 1) {
153 bdev->bio->Media->IoAlign);
158 status = uefi_call_wrapper(bdev->bio->ReadBlocks, 5, bdev->bio,
159 bdev->media_id, lba_start, blkbuf_size, blkbuf_start);
172 efi_block_do_read_diskio(struct efi_block_dev *bdev, UINT64 off, void *buf,
175 return uefi_call_wrapper(bdev->dio->ReadDisk, 5, bdev->dio,
176 bdev->media_id, off, bufsize, buf);
180 efi_block_do_read(struct efi_block_dev *bdev, UINT64 off, void *buf,
187 if (bdev->dio != NULL) {
188 return efi_block_do_read_diskio(bdev, off, buf, bufsize);
190 return efi_block_do_read_blockio(bdev, off, buf, bufsize);
195 efi_block_readahead(struct efi_block_dev *bdev, UINT64 off, void *buf,
208 if (bdev->media_id != efi_ra_media_id ||
211 mediasize = bdev->bio->Media->BlockSize *
212 (bdev->bio->Media->LastBlock + 1);
217 status = efi_block_do_read(bdev, off, efi_ra_buffer, len);
224 efi_ra_media_id = bdev->media_id;
232 efi_block_read(struct efi_block_dev *bdev, UINT64 off, void *buf,
236 return efi_block_readahead(bdev, off, buf, bufsize);
239 return efi_block_do_read(bdev, off, buf, bufsize);
243 efi_block_find_partitions_cd9660(struct efi_block_dev *bdev)
251 status = efi_block_read(bdev,
274 bpart->bdev = bdev;
276 TAILQ_INSERT_TAIL(&bdev->partitions, bpart, entries);
285 efi_block_find_partitions_disklabel(struct efi_block_dev *bdev,
295 status = efi_block_read(bdev,
296 ((EFI_LBA)start + LABELSECTOR) * bdev->bio->Media->BlockSize, buf, sizeof(buf));
322 bpart->bdev = bdev;
327 TAILQ_INSERT_TAIL(&bdev->partitions, bpart, entries);
334 efi_block_find_partitions_mbr(struct efi_block_dev *bdev)
341 status = efi_block_read(bdev, 0, &mbr, sizeof(mbr));
353 efi_block_find_partitions_disklabel(bdev, &mbr,
377 efi_block_find_partitions_gpt_entry(struct efi_block_dev *bdev,
397 bpart->bdev = bdev;
406 TAILQ_INSERT_TAIL(&bdev->partitions, bpart, entries);
412 efi_block_find_partitions_gpt(struct efi_block_dev *bdev)
421 status = efi_block_read(bdev, (EFI_LBA)GPT_HDR_BLKNO * bdev->bio->Media->BlockSize, &hdr,
437 status = efi_block_read(bdev,
438 le64toh(hdr.hdr_lba_table) * bdev->bio->Media->BlockSize, buf, sz);
447 efi_block_find_partitions_gpt_entry(bdev, &hdr, &ent, entry);
456 efi_block_find_partitions(struct efi_block_dev *bdev)
460 error = efi_block_find_partitions_gpt(bdev);
462 error = efi_block_find_partitions_mbr(bdev);
464 error = efi_block_find_partitions_cd9660(bdev);
472 struct efi_block_dev *bdev;
511 bdev = alloc(sizeof(*bdev));
512 bdev->index = devindex++;
513 bdev->bio = bio;
514 bdev->dio = dio;
515 bdev->media_id = bio->Media->MediaId;
516 bdev->path = DevicePathFromHandle(efi_block[n]);
517 TAILQ_INIT(&bdev->partitions);
518 TAILQ_INSERT_TAIL(&efi_block_devs, bdev, entries);
520 efi_block_find_partitions(bdev);
523 TAILQ_FOREACH(bpart, &bdev->partitions, entries) {
538 snprintf(devname, sizeof(devname), "hd%u%c", bdev->index, bpart->index + 'a');
564 struct efi_block_dev *bdev;
569 TAILQ_FOREACH(bdev, &efi_block_devs, entries) {
570 printf("hd%u (", bdev->index);
573 size = ((bdev->bio->Media->LastBlock + 1) * bdev->bio->Media->BlockSize) / (1024 * 1024);
580 path = DevicePathToStr(bdev->path);
586 TAILQ_FOREACH(bpart, &bdev->partitions, entries) {
589 printf(" hd%u%c (", bdev->index, bpart->index + 'a');
602 printf(" hd%u%c ", bdev->index, bpart->index + 'a');
613 size = (le64toh(bpart->gpt.ent.ent_lba_end) - le64toh(bpart->gpt.ent.ent_lba_start)) * bdev->bio->Media->BlockSize;
623 printf(" hd%u%c %s\n", bdev->index, bpart->index + 'a', fstypenames[FS_ISO9660]);
684 struct efi_block_dev *bdev = bpart->bdev;
695 off = ((EFI_LBA)dblk + bpart->disklabel.part.p_offset) * bdev->bio->Media->BlockSize;
698 off = ((EFI_LBA)dblk + le64toh(bpart->gpt.ent.ent_lba_start)) * bdev->bio->Media->BlockSize;
707 status = efi_block_read(bpart->bdev, off, buf, size);
726 struct efi_block_dev *bdev = bpart->bdev;
731 *(u_int *)data = bdev->bio->Media->BlockSize;