check.h 2.1 KB

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