[funini.com] -> [kei@sodan] -> Kernel Reading

root/fs/partitions/ultrix.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ultrix_partition

/*
 *  fs/partitions/ultrix.c
 *
 *  Code extracted from drivers/block/genhd.c
 *
 *  Re-organised Jul 1999 Russell King
 */

#include "check.h"
#include "ultrix.h"

int ultrix_partition(struct parsed_partitions *state, struct block_device *bdev)
{
        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_dev_sector(bdev, (16384 - sizeof(*label))/512, &sect);
        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);
                printk ("\n");
                return 1;
        } else {
                put_dev_sector(sect);
                return 0;
        }
}

/* [<][>][^][v][top][bottom][index][help] */

[funini.com] -> [kei@sodan] -> Kernel Reading