Blame view
block/partitions/ultrix.c
1.18 KB
b24413180
|
1 |
// SPDX-License-Identifier: GPL-2.0 |
1da177e4c
|
2 3 4 5 6 7 8 9 10 |
/* * fs/partitions/ultrix.c * * Code extracted from drivers/block/genhd.c * * Re-organised Jul 1999 Russell King */ #include "check.h" |
1493bf217
|
11 |
int ultrix_partition(struct parsed_partitions *state) |
1da177e4c
|
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
{ int i; Sector sect; unsigned char *data; struct ultrix_disklabel { s32 pt_magic; /* magic no. indicating part. info exits */ s32 pt_valid; /* set by driver if pt is current */ struct pt_info { s32 pi_nblocks; /* no. of sectors */ u32 pi_blkoff; /* block offset for start */ } pt_part[8]; } *label; #define PT_MAGIC 0x032957 /* Partition magic number */ #define PT_VALID 1 /* Indicates if struct is valid */ |
1493bf217
|
27 |
data = read_part_sector(state, (16384 - sizeof(*label))/512, §); |
1da177e4c
|
28 29 30 31 32 33 34 35 36 37 38 39 |
if (!data) return -1; label = (struct ultrix_disklabel *)(data + 512 - sizeof(*label)); if (label->pt_magic == PT_MAGIC && label->pt_valid == PT_VALID) { for (i=0; i<8; i++) if (label->pt_part[i].pi_nblocks) put_partition(state, i+1, label->pt_part[i].pi_blkoff, label->pt_part[i].pi_nblocks); put_dev_sector(sect); |
9c867fbe0
|
40 41 |
strlcat(state->pp_buf, " ", PAGE_SIZE); |
1da177e4c
|
42 43 44 45 46 47 |
return 1; } else { put_dev_sector(sect); return 0; } } |