1*b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 29be96f3fSAl Viro /* 39be96f3fSAl Viro * fs/partitions/ultrix.c 49be96f3fSAl Viro * 59be96f3fSAl Viro * Code extracted from drivers/block/genhd.c 69be96f3fSAl Viro * 79be96f3fSAl Viro * Re-organised Jul 1999 Russell King 89be96f3fSAl Viro */ 99be96f3fSAl Viro 109be96f3fSAl Viro #include "check.h" 119be96f3fSAl Viro ultrix_partition(struct parsed_partitions * state)129be96f3fSAl Viroint ultrix_partition(struct parsed_partitions *state) 139be96f3fSAl Viro { 149be96f3fSAl Viro int i; 159be96f3fSAl Viro Sector sect; 169be96f3fSAl Viro unsigned char *data; 179be96f3fSAl Viro struct ultrix_disklabel { 189be96f3fSAl Viro s32 pt_magic; /* magic no. indicating part. info exits */ 199be96f3fSAl Viro s32 pt_valid; /* set by driver if pt is current */ 209be96f3fSAl Viro struct pt_info { 219be96f3fSAl Viro s32 pi_nblocks; /* no. of sectors */ 229be96f3fSAl Viro u32 pi_blkoff; /* block offset for start */ 239be96f3fSAl Viro } pt_part[8]; 249be96f3fSAl Viro } *label; 259be96f3fSAl Viro 269be96f3fSAl Viro #define PT_MAGIC 0x032957 /* Partition magic number */ 279be96f3fSAl Viro #define PT_VALID 1 /* Indicates if struct is valid */ 289be96f3fSAl Viro 299be96f3fSAl Viro data = read_part_sector(state, (16384 - sizeof(*label))/512, §); 309be96f3fSAl Viro if (!data) 319be96f3fSAl Viro return -1; 329be96f3fSAl Viro 339be96f3fSAl Viro label = (struct ultrix_disklabel *)(data + 512 - sizeof(*label)); 349be96f3fSAl Viro 359be96f3fSAl Viro if (label->pt_magic == PT_MAGIC && label->pt_valid == PT_VALID) { 369be96f3fSAl Viro for (i=0; i<8; i++) 379be96f3fSAl Viro if (label->pt_part[i].pi_nblocks) 389be96f3fSAl Viro put_partition(state, i+1, 399be96f3fSAl Viro label->pt_part[i].pi_blkoff, 409be96f3fSAl Viro label->pt_part[i].pi_nblocks); 419be96f3fSAl Viro put_dev_sector(sect); 429be96f3fSAl Viro strlcat(state->pp_buf, "\n", PAGE_SIZE); 439be96f3fSAl Viro return 1; 449be96f3fSAl Viro } else { 459be96f3fSAl Viro put_dev_sector(sect); 469be96f3fSAl Viro return 0; 479be96f3fSAl Viro } 489be96f3fSAl Viro } 49