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

root/fs/partitions/karma.c

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

DEFINITIONS

This source file includes following definitions.
  1. karma_partition

/*
 *  fs/partitions/karma.c
 *  Rio Karma partition info.
 *
 *  Copyright (C) 2006 Bob Copeland (me@bobcopeland.com)
 *  based on osf.c
 */

#include "check.h"
#include "karma.h"

int karma_partition(struct parsed_partitions *state, struct block_device *bdev)
{
        int i;
        int slot = 1;
        Sector sect;
        unsigned char *data;
        struct disklabel {
                u8 d_reserved[270];
                struct d_partition {
                        __le32 p_res;
                        u8 p_fstype;
                        u8 p_res2[3];
                        __le32 p_offset;
                        __le32 p_size;
                } d_partitions[2];
                u8 d_blank[208];
                __le16 d_magic;
        } __attribute__((packed)) *label;
        struct d_partition *p;

        data = read_dev_sector(bdev, 0, &sect);
        if (!data)
                return -1;

        label = (struct disklabel *)data;
        if (le16_to_cpu(label->d_magic) != KARMA_LABEL_MAGIC) {
                put_dev_sector(sect);
                return 0;
        }

        p = label->d_partitions;
        for (i = 0 ; i < 2; i++, p++) {
                if (slot == state->limit)
                        break;

                if (p->p_fstype == 0x4d && le32_to_cpu(p->p_size)) {
                        put_partition(state, slot, le32_to_cpu(p->p_offset),
                                le32_to_cpu(p->p_size));
                }
                slot++;
        }
        printk("\n");
        put_dev_sector(sect);
        return 1;
}


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

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