check.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #include <linux/pagemap.h>
  3. #include <linux/blkdev.h>
  4. #include <linux/genhd.h>
  5. #include "../blk.h"
  6. /*
  7. * add_gd_partition adds a partitions details to the devices partition
  8. * description.
  9. */
  10. struct parsed_partitions {
  11. struct block_device *bdev;
  12. char name[BDEVNAME_SIZE];
  13. struct {
  14. sector_t from;
  15. sector_t size;
  16. int flags;
  17. bool has_info;
  18. struct partition_meta_info info;
  19. } *parts;
  20. int next;
  21. int limit;
  22. bool access_beyond_eod;
  23. char *pp_buf;
  24. };
  25. typedef struct {
  26. struct page *v;
  27. } Sector;
  28. void *read_part_sector(struct parsed_partitions *state, sector_t n, Sector *p);
  29. static inline void put_dev_sector(Sector p)
  30. {
  31. put_page(p.v);
  32. }
  33. static inline void
  34. put_partition(struct parsed_partitions *p, int n, sector_t from, sector_t size)
  35. {
  36. if (n < p->limit) {
  37. char tmp[1 + BDEVNAME_SIZE + 10 + 1];
  38. p->parts[n].from = from;
  39. p->parts[n].size = size;
  40. snprintf(tmp, sizeof(tmp), " %s%d", p->name, n);
  41. strlcat(p->pp_buf, tmp, PAGE_SIZE);
  42. }
  43. }
  44. /* detection routines go here in alphabetical order: */
  45. int adfspart_check_ADFS(struct parsed_partitions *state);
  46. int adfspart_check_CUMANA(struct parsed_partitions *state);
  47. int adfspart_check_EESOX(struct parsed_partitions *state);
  48. int adfspart_check_ICS(struct parsed_partitions *state);
  49. int adfspart_check_POWERTEC(struct parsed_partitions *state);
  50. int aix_partition(struct parsed_partitions *state);
  51. int amiga_partition(struct parsed_partitions *state);
  52. int atari_partition(struct parsed_partitions *state);
  53. int cmdline_partition(struct parsed_partitions *state);
  54. int efi_partition(struct parsed_partitions *state);
  55. int ibm_partition(struct parsed_partitions *);
  56. int karma_partition(struct parsed_partitions *state);
  57. int ldm_partition(struct parsed_partitions *state);
  58. int mac_partition(struct parsed_partitions *state);
  59. int msdos_partition(struct parsed_partitions *state);
  60. int osf_partition(struct parsed_partitions *state);
  61. int sgi_partition(struct parsed_partitions *state);
  62. int sun_partition(struct parsed_partitions *state);
  63. int sysv68_partition(struct parsed_partitions *state);
  64. int ultrix_partition(struct parsed_partitions *state);