mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 00:04:15 +08:00
3f1b95ef81
There is no good reason to include one header per partition type in core.c. Instead move the prototypes for the detection routins to check.h, and remove all now empty headers in block/partitions/. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
49 lines
1.2 KiB
C
49 lines
1.2 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* fs/partitions/ultrix.c
|
|
*
|
|
* Code extracted from drivers/block/genhd.c
|
|
*
|
|
* Re-organised Jul 1999 Russell King
|
|
*/
|
|
|
|
#include "check.h"
|
|
|
|
int ultrix_partition(struct parsed_partitions *state)
|
|
{
|
|
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 */
|
|
|
|
data = read_part_sector(state, (16384 - sizeof(*label))/512, §);
|
|
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);
|
|
strlcat(state->pp_buf, "\n", PAGE_SIZE);
|
|
return 1;
|
|
} else {
|
|
put_dev_sector(sect);
|
|
return 0;
|
|
}
|
|
}
|