static int sgi_set_partition(struct fdisk_context *cxt, size_t i, unsigned int start, unsigned int length, int sys) { struct sgi_disklabel *sgilabel; assert(cxt); assert(cxt->label); assert(fdisk_is_disklabel(cxt, SGI)); sgilabel = self_disklabel(cxt); sgilabel->partitions[i].type = cpu_to_be32(sys); sgilabel->partitions[i].num_blocks = cpu_to_be32(length); sgilabel->partitions[i].first_block = cpu_to_be32(start); fdisk_label_set_changed(cxt->label, 1); if (sgi_gaps(cxt) < 0) /* rebuild freelist */ fdisk_warnx(cxt, _("Partition overlap on the disk.")); if (length) { struct fdisk_parttype *t = fdisk_get_parttype_from_code(cxt, sys); fdisk_info_new_partition(cxt, i + 1, start, start + length, t); } return 0; }
static struct fdisk_parttype *bsd_partition_parttype( struct fdisk_context *cxt, struct bsd_partition *p) { struct fdisk_parttype *t = fdisk_get_parttype_from_code(cxt, p->p_fstype); return t ? : fdisk_new_unknown_parttype(p->p_fstype, NULL); }
static struct fdisk_parttype *sgi_get_parttype(struct fdisk_context *cxt, size_t n) { struct fdisk_parttype *t; if (n >= cxt->label->nparts_max) return NULL; t = fdisk_get_parttype_from_code(cxt, sgi_get_sysid(cxt, n)); return t ? : fdisk_new_unknown_parttype(sgi_get_sysid(cxt, n), NULL); }
static struct fdisk_parttype *sgi_get_parttype(struct fdisk_context *cxt, int n) { struct fdisk_parttype *t; if (n >= partitions) return NULL; t = fdisk_get_parttype_from_code(cxt, sgi_get_sysid(cxt, n)); if (!t) t = fdisk_new_unknown_parttype(sgi_get_sysid(cxt, n), NULL); return t; }
static void set_sun_partition(struct fdisk_context *cxt, size_t i, uint32_t start,uint32_t stop, uint16_t sysid) { struct sun_disklabel *sunlabel = self_disklabel(cxt); struct fdisk_parttype *t = fdisk_get_parttype_from_code(cxt, sysid); sunlabel->vtoc.infos[i].id = cpu_to_be16(sysid); sunlabel->vtoc.infos[i].flags = cpu_to_be16(0); sunlabel->partitions[i].start_cylinder = cpu_to_be32(start / (cxt->geom.heads * cxt->geom.sectors)); sunlabel->partitions[i].num_sectors = cpu_to_be32(stop - start); fdisk_label_set_changed(cxt->label, 1); fdisk_info_new_partition(cxt, i + 1, start, stop, t); }
static struct fdisk_parttype *sun_get_parttype( struct fdisk_context *cxt, size_t n) { struct sun_disklabel *sunlabel = self_disklabel(cxt); struct fdisk_parttype *t; assert(cxt); assert(cxt->label); assert(fdisk_is_disklabel(cxt, SUN)); if (n >= cxt->label->nparts_max) return NULL; t = fdisk_get_parttype_from_code(cxt, be16_to_cpu(sunlabel->vtoc.infos[n].id)); if (!t) t = fdisk_new_unknown_parttype(be16_to_cpu(sunlabel->vtoc.infos[n].id), NULL); return t; }