.. just to avoid too generic names for public API.
Signed-off-by: Karel Zak <kzak@redhat.com>
dump_blkdev(cxt, name, offset, size, all);
}
-static sector_t get_dev_blocks(char *dev)
+static fdisk_sector_t get_dev_blocks(char *dev)
{
int fd, ret;
- sector_t size;
+ fdisk_sector_t size;
if ((fd = open(dev, O_RDONLY)) < 0)
err(EXIT_FAILURE, _("cannot open %s"), dev);
- ret = blkdev_get_sectors(fd, &size);
+ ret = blkdev_get_sectors(fd, (unsigned long long *) &size);
close(fd);
if (ret < 0)
err(EXIT_FAILURE, _("BLKGETSIZE ioctl failed on %s"), dev);
usage(stderr);
for (i = optind; i < argc; i++) {
+ uintmax_t blks = get_dev_blocks(argv[i]);
+
if (argc - optind == 1)
- printf("%llu\n", get_dev_blocks(argv[i]));
+ printf("%ju\n", blks);
else
- printf("%s: %llu\n", argv[i], get_dev_blocks(argv[i]));
+ printf("%s: %ju\n", argv[i], blks);
}
break;
/*
* Alignment according to logical granularity (usually 1MiB)
*/
-static int lba_is_aligned(struct fdisk_context *cxt, sector_t lba)
+static int lba_is_aligned(struct fdisk_context *cxt, fdisk_sector_t lba)
{
unsigned long granularity = max(cxt->phy_sector_size, cxt->min_io_size);
uintmax_t offset;
/*
* Alignment according to physical device topology (usually minimal i/o size)
*/
-static int lba_is_phy_aligned(struct fdisk_context *cxt, sector_t lba)
+static int lba_is_phy_aligned(struct fdisk_context *cxt, fdisk_sector_t lba)
{
unsigned long granularity = max(cxt->phy_sector_size, cxt->min_io_size);
uintmax_t offset = (lba * cxt->sector_size) & (granularity - 1);
*
* Returns: alignment LBA.
*/
-sector_t fdisk_align_lba(struct fdisk_context *cxt, sector_t lba, int direction)
+fdisk_sector_t fdisk_align_lba(struct fdisk_context *cxt, fdisk_sector_t lba, int direction)
{
- sector_t res;
+ fdisk_sector_t res;
if (lba_is_aligned(cxt, lba))
res = lba;
else {
- sector_t sects_in_phy = cxt->grain / cxt->sector_size;
+ fdisk_sector_t sects_in_phy = cxt->grain / cxt->sector_size;
if (lba < cxt->first_lba)
res = cxt->first_lba;
*
* Returns: aligned LBA
*/
-sector_t fdisk_align_lba_in_range(struct fdisk_context *cxt,
- sector_t lba, sector_t start, sector_t stop)
+fdisk_sector_t fdisk_align_lba_in_range(struct fdisk_context *cxt,
+ fdisk_sector_t lba, fdisk_sector_t start, fdisk_sector_t stop)
{
- sector_t res;
+ fdisk_sector_t res;
start = fdisk_align_lba(cxt, start, FDISK_ALIGN_UP);
stop = fdisk_align_lba(cxt, stop, FDISK_ALIGN_DOWN);
*
* Returns: 1 if aligned.
*/
-int fdisk_lba_is_phy_aligned(struct fdisk_context *cxt, sector_t lba)
+int fdisk_lba_is_phy_aligned(struct fdisk_context *cxt, fdisk_sector_t lba)
{
return lba_is_phy_aligned(cxt, lba);
}
*/
int fdisk_discover_geometry(struct fdisk_context *cxt)
{
- sector_t nsects;
+ fdisk_sector_t nsects;
assert(cxt);
assert(cxt->geom.heads == 0);
DBG(CXT, ul_debugobj(cxt, "%s: discovering geometry...", cxt->dev_path));
/* get number of 512-byte sectors, and convert it the real sectors */
- if (!blkdev_get_sectors(cxt->dev_fd, &nsects))
+ if (!blkdev_get_sectors(cxt->dev_fd, (unsigned long long *) &nsects))
cxt->total_sectors = (nsects / (cxt->sector_size >> 9));
DBG(CXT, ul_debugobj(cxt, "total sectors: %ju (ioctl=%ju)",
*
* Returns: 0 on error or number of logical sectors.
*/
-static sector_t topology_get_first_lba(struct fdisk_context *cxt)
+static fdisk_sector_t topology_get_first_lba(struct fdisk_context *cxt)
{
- sector_t x = 0, res;
+ fdisk_sector_t x = 0, res;
if (!cxt)
return 0;
}
-sector_t fdisk_scround(struct fdisk_context *cxt, sector_t num)
+fdisk_sector_t fdisk_scround(struct fdisk_context *cxt, fdisk_sector_t num)
{
- sector_t un = fdisk_get_units_per_sector(cxt);
+ fdisk_sector_t un = fdisk_get_units_per_sector(cxt);
return (num + un - 1) / un;
}
-sector_t fdisk_cround(struct fdisk_context *cxt, sector_t num)
+fdisk_sector_t fdisk_cround(struct fdisk_context *cxt, fdisk_sector_t num)
{
return fdisk_use_cylinders(cxt) ?
(num / fdisk_get_units_per_sector(cxt)) + 1 : num;
int fdisk_info_new_partition(
struct fdisk_context *cxt,
- int num, sector_t start, sector_t stop,
+ int num, fdisk_sector_t start, fdisk_sector_t stop,
struct fdisk_parttype *t)
{
int rc;
size_t i;
for (i = 0; i < 4; i++) {
- sector_t ss;
+ fdisk_sector_t ss;
l->dos_part = fdisk_dos_get_partition(cxt->parent, i);
if (l->dos_part && (fdisk_partition_has_start(pa) ||
fdisk_partition_has_size(pa))) {
- sector_t dosbegin = dos_partition_get_start(l->dos_part);
- sector_t dosend = dosbegin + dos_partition_get_size(l->dos_part) - 1;
- sector_t begin = fdisk_partition_has_start(pa) ? pa->start : p->p_offset;
- sector_t end = begin + (fdisk_partition_has_size(pa) ? pa->size : p->p_size) - 1;
+ fdisk_sector_t dosbegin = dos_partition_get_start(l->dos_part);
+ fdisk_sector_t dosend = dosbegin + dos_partition_get_size(l->dos_part) - 1;
+ fdisk_sector_t begin = fdisk_partition_has_start(pa) ? pa->start : p->p_offset;
+ fdisk_sector_t end = begin + (fdisk_partition_has_size(pa) ? pa->size : p->p_size) - 1;
if (begin < dosbegin || begin > dosend)
return -ERANGE;
char buf[BUFSIZ];
char *res, *dp, *p;
int rc;
- sector_t sector;
+ fdisk_sector_t sector;
snprintf(buf, sizeof(buf),
_("Bootstrap: %1$sboot -> boot%1$s (default %1$s)"),
*
* Returns: first possible LBA on disk for data partitions.
*/
-sector_t fdisk_get_first_lba(struct fdisk_context *cxt)
+fdisk_sector_t fdisk_get_first_lba(struct fdisk_context *cxt)
{
assert(cxt);
return cxt->first_lba;
*
* Returns: 0 on success, <0 on error.
*/
-sector_t fdisk_set_first_lba(struct fdisk_context *cxt, sector_t lba)
+fdisk_sector_t fdisk_set_first_lba(struct fdisk_context *cxt, fdisk_sector_t lba)
{
assert(cxt);
DBG(CXT, ul_debugobj(cxt, "setting first LBA from %ju to %ju",
*
* Returns: last possible LBA on device
*/
-sector_t fdisk_get_last_lba(struct fdisk_context *cxt)
+fdisk_sector_t fdisk_get_last_lba(struct fdisk_context *cxt)
{
return cxt->last_lba;
}
*
* Returns: 0 on success, <0 on error.
*/
-sector_t fdisk_set_last_lba(struct fdisk_context *cxt, sector_t lba)
+fdisk_sector_t fdisk_set_last_lba(struct fdisk_context *cxt, fdisk_sector_t lba)
{
assert(cxt);
*
* Returns: size of the device in logical sectors.
*/
-sector_t fdisk_get_nsectors(struct fdisk_context *cxt)
+fdisk_sector_t fdisk_get_nsectors(struct fdisk_context *cxt)
{
assert(cxt);
return cxt->total_sectors;
*
* Returns: number of geometry sectors.
*/
-sector_t fdisk_get_geom_sectors(struct fdisk_context *cxt)
+fdisk_sector_t fdisk_get_geom_sectors(struct fdisk_context *cxt)
{
assert(cxt);
return cxt->geom.sectors;
*
* Returns: number of geometry cylinders
*/
-sector_t fdisk_get_geom_cylinders(struct fdisk_context *cxt)
+fdisk_sector_t fdisk_get_geom_cylinders(struct fdisk_context *cxt)
{
assert(cxt);
return cxt->geom.cylinders;
struct pte {
struct dos_partition *pt_entry; /* on-disk MBR entry */
struct dos_partition *ex_entry; /* on-disk EBR entry */
- sector_t offset; /* disk sector number */
+ fdisk_sector_t offset; /* disk sector number */
unsigned char *sectorbuffer; /* disk sector contents */
unsigned int changed : 1,
struct fdisk_label head; /* generic part */
struct pte ptes[MAXIMUM_PARTS]; /* partition */
- sector_t ext_offset; /* start of the ext.partition */
+ fdisk_sector_t ext_offset; /* start of the ext.partition */
size_t ext_index; /* ext.partition index (if ext_offset is set) */
unsigned int compatible : 1, /* is DOS compatible? */
non_pt_changed : 1; /* MBR, but no PT changed */
fdisk_label_set_changed(cxt->label, 1);
}
-static sector_t get_abs_partition_start(struct pte *pe)
+static fdisk_sector_t get_abs_partition_start(struct pte *pe)
{
assert(pe);
assert(pe->pt_entry);
return pe->offset + dos_partition_get_start(pe->pt_entry);
}
-static sector_t get_abs_partition_end(struct pte *pe)
+static fdisk_sector_t get_abs_partition_end(struct pte *pe)
{
- sector_t size;
+ fdisk_sector_t size;
assert(pe);
assert(pe->pt_entry);
return rc;
}
-static int seek_sector(struct fdisk_context *cxt, sector_t secno)
+static int seek_sector(struct fdisk_context *cxt, fdisk_sector_t secno)
{
off_t offset = (off_t) secno * cxt->sector_size;
return lseek(cxt->dev_fd, offset, SEEK_SET) == (off_t) -1 ? -errno : 0;
}
-static int read_sector(struct fdisk_context *cxt, sector_t secno,
+static int read_sector(struct fdisk_context *cxt, fdisk_sector_t secno,
unsigned char *buf)
{
int rc = seek_sector(cxt, secno);
}
/* Allocate a buffer and read a partition table sector */
-static int read_pte(struct fdisk_context *cxt, size_t pno, sector_t offset)
+static int read_pte(struct fdisk_context *cxt, size_t pno, fdisk_sector_t offset)
{
int rc;
unsigned char *buf;
}
static void set_partition(struct fdisk_context *cxt,
- int i, int doext, sector_t start,
- sector_t stop, int sysid, int boot)
+ int i, int doext, fdisk_sector_t start,
+ fdisk_sector_t stop, int sysid, int boot)
{
struct pte *pe = self_pte(cxt, i);
struct dos_partition *p;
- sector_t offset;
+ fdisk_sector_t offset;
assert(!FDISK_IS_UNDEF(start));
assert(!FDISK_IS_UNDEF(stop));
partition_set_changed(cxt, i, 1);
}
-static sector_t get_unused_start(struct fdisk_context *cxt,
- int part_n, sector_t start,
- sector_t first[], sector_t last[])
+static fdisk_sector_t get_unused_start(struct fdisk_context *cxt,
+ int part_n, fdisk_sector_t start,
+ fdisk_sector_t first[], fdisk_sector_t last[])
{
size_t i;
for (i = 0; i < cxt->label->nparts_max; i++) {
- sector_t lastplusoff;
+ fdisk_sector_t lastplusoff;
struct pte *pe = self_pte(cxt, i);
if (start == pe->offset)
}
static void fill_bounds(struct fdisk_context *cxt,
- sector_t *first, sector_t *last)
+ fdisk_sector_t *first, fdisk_sector_t *last)
{
size_t i;
struct pte *pe = self_pte(cxt, 0);
}
static int get_start_from_user( struct fdisk_context *cxt,
- sector_t *start,
- sector_t low,
- sector_t dflt,
- sector_t limit,
+ fdisk_sector_t *start,
+ fdisk_sector_t low,
+ fdisk_sector_t dflt,
+ fdisk_sector_t limit,
struct fdisk_partition *pa)
{
assert(start);
return 0;
}
-static sector_t get_possible_last(struct fdisk_context *cxt, size_t n)
+static fdisk_sector_t get_possible_last(struct fdisk_context *cxt, size_t n)
{
- sector_t limit;
+ fdisk_sector_t limit;
if (n >= 4) {
/* logical partitions */
/* returns last free sector for area addressed by @start, the first[] and
* last[] are fill_bounds() results */
-static sector_t get_unused_last(struct fdisk_context *cxt, size_t n,
- sector_t start,
- sector_t first[], sector_t last[])
+static fdisk_sector_t get_unused_last(struct fdisk_context *cxt, size_t n,
+ fdisk_sector_t start,
+ fdisk_sector_t first[], fdisk_sector_t last[])
{
size_t i;
- sector_t limit = get_possible_last(cxt, n);
+ fdisk_sector_t limit = get_possible_last(cxt, n);
for (i = 0; i < cxt->label->nparts_max; i++) {
struct pte *pe = self_pte(cxt, i);
struct dos_partition *p = self_partition(cxt, n);
struct pte *ext_pe = l->ext_offset ? self_pte(cxt, l->ext_index) : NULL;
- sector_t start, stop = 0, limit, temp,
+ fdisk_sector_t start, stop = 0, limit, temp,
first[cxt->label->nparts_max],
last[cxt->label->nparts_max];
* Ask for first sector
*/
do {
- sector_t dflt, aligned;
+ fdisk_sector_t dflt, aligned;
temp = start;
dflt = start = get_unused_start(cxt, n, start, first, last);
static int dos_verify_disklabel(struct fdisk_context *cxt)
{
size_t i, j;
- sector_t total = 1, n_sectors = cxt->total_sectors;
- unsigned long long first[cxt->label->nparts_max],
- last[cxt->label->nparts_max];
+ fdisk_sector_t total = 1, n_sectors = cxt->total_sectors;
+ fdisk_sector_t first[cxt->label->nparts_max],
+ last[cxt->label->nparts_max];
struct dos_partition *p;
struct fdisk_dos_label *l = self_label(cxt);
}
if (l->ext_offset) {
- sector_t e_last;
+ fdisk_sector_t e_last;
struct pte *ext_pe = self_pte(cxt, l->ext_index);
e_last = get_abs_partition_end(ext_pe);
size_t *partno)
{
size_t i, free_primary = 0, free_sectors = 0;
- sector_t last = 0, grain;
+ fdisk_sector_t last = 0, grain;
int rc = 0;
struct fdisk_dos_label *l;
struct pte *ext_pe;
struct dos_partition *p = self_partition(cxt, i);
if (is_used_partition(p)) {
- sector_t start = dos_partition_get_start(p);
+ fdisk_sector_t start = dos_partition_get_start(p);
if (last + grain <= start)
free_sectors = 1;
last = start + dos_partition_get_size(p);
return rc;
}
-static int write_sector(struct fdisk_context *cxt, sector_t secno,
+static int write_sector(struct fdisk_context *cxt, fdisk_sector_t secno,
unsigned char *buf)
{
int rc;
* been modified and then cleanup possible remaining EBR */
struct pte *pe = self_pte(cxt, l->ext_index);
unsigned char empty[512] = { 0 };
- sector_t off = pe ? get_abs_partition_start(pe) : 0;
+ fdisk_sector_t off = pe ? get_abs_partition_start(pe) : 0;
if (off && pe->changed) {
mbr_set_magic(empty);
struct fdisk_dos_label *l;
struct dos_partition *p;
struct pte *pe;
- sector_t start, size;
+ fdisk_sector_t start, size;
assert(cxt);
assert(pa);
size = pa->size;
if (pa->end_follow_default) {
- sector_t first[cxt->label->nparts_max],
+ fdisk_sector_t first[cxt->label->nparts_max],
last[cxt->label->nparts_max],
xlast;
struct pte *ext = l->ext_offset ? self_pte(cxt, l->ext_index) : NULL;
get_abs_partition_start(nxt)) {
struct dos_partition tmp = *cur->pt_entry;
- sector_t cur_start = get_abs_partition_start(cur),
+ fdisk_sector_t cur_start = get_abs_partition_start(cur),
nxt_start = get_abs_partition_start(nxt);
/* swap data partitions */
struct pte *cur = self_pte(cxt, i),
*nxt = self_pte(cxt, i + 1);
- sector_t noff = nxt->offset - l->ext_offset,
+ fdisk_sector_t noff = nxt->offset - l->ext_offset,
ooff = dos_partition_get_start(cur->ex_entry);
if (noff == ooff)
size_t partno; /* partition number */
size_t parent_partno; /* for logical partitions */
- uint64_t start; /* first sectors */
- uint64_t end; /* last sector */
- uint64_t size; /* size in sectors */
+ fdisk_sector_t start; /* first sectors */
+ fdisk_sector_t end; /* last sector */
+ fdisk_sector_t size; /* size in sectors */
char *name; /* partition name */
char *uuid; /* partition UUID */
*/
struct fdisk_geometry {
unsigned int heads;
- sector_t sectors;
- sector_t cylinders;
+ fdisk_sector_t sectors;
+ fdisk_sector_t cylinders;
};
/*
/* alignment */
unsigned long grain; /* alignment unit */
- sector_t first_lba; /* recommended begin of the first partition */
- sector_t last_lba; /* recomennded end of last partition */
+ fdisk_sector_t first_lba; /* recommended begin of the first partition */
+ fdisk_sector_t last_lba; /* recomennded end of last partition */
/* geometry */
- sector_t total_sectors; /* in logical sectors */
+ fdisk_sector_t total_sectors; /* in logical sectors */
struct fdisk_geometry geom;
/* user setting to overwrite device default */
extern int fdisk_missing_geometry(struct fdisk_context *cxt);
/* alignment.c */
-sector_t fdisk_scround(struct fdisk_context *cxt, sector_t num);
-sector_t fdisk_cround(struct fdisk_context *cxt, sector_t num);
+fdisk_sector_t fdisk_scround(struct fdisk_context *cxt, fdisk_sector_t num);
+fdisk_sector_t fdisk_cround(struct fdisk_context *cxt, fdisk_sector_t num);
extern int fdisk_discover_geometry(struct fdisk_context *cxt);
extern int fdisk_discover_topology(struct fdisk_context *cxt);
int fdisk_ask_print_set_mesg(struct fdisk_ask *ask, const char *mesg);
int fdisk_info_new_partition(
struct fdisk_context *cxt,
- int num, sector_t start, sector_t stop,
+ int num, fdisk_sector_t start, fdisk_sector_t stop,
struct fdisk_parttype *t);
/* dos.c */
/**
* fdisk_script
*
- * libraru handler for sfdisk compatible scripts
+ * library handler for sfdisk compatible scripts
*/
struct fdisk_script;
-/* TODO: use uint64, the name is too generic */
-typedef unsigned long long sector_t;
+/**
+ * fdisk_sector_t
+ *
+ * LBA adresses type
+ */
+typedef uint64_t fdisk_sector_t;
/**
* fdisk_labeltype:
unsigned long fdisk_get_sector_size(struct fdisk_context *cxt);
unsigned long fdisk_get_alignment_offset(struct fdisk_context *cxt);
unsigned long fdisk_get_grain_size(struct fdisk_context *cxt);
-sector_t fdisk_get_first_lba(struct fdisk_context *cxt);
-sector_t fdisk_set_first_lba(struct fdisk_context *cxt, sector_t lba);
-sector_t fdisk_get_last_lba(struct fdisk_context *cxt);
-sector_t fdisk_set_last_lba(struct fdisk_context *cxt, sector_t lba);
-sector_t fdisk_get_nsectors(struct fdisk_context *cxt);
+fdisk_sector_t fdisk_get_first_lba(struct fdisk_context *cxt);
+fdisk_sector_t fdisk_set_first_lba(struct fdisk_context *cxt, fdisk_sector_t lba);
+fdisk_sector_t fdisk_get_last_lba(struct fdisk_context *cxt);
+fdisk_sector_t fdisk_set_last_lba(struct fdisk_context *cxt, fdisk_sector_t lba);
+fdisk_sector_t fdisk_get_nsectors(struct fdisk_context *cxt);
const char *fdisk_get_devname(struct fdisk_context *cxt);
int fdisk_get_devfd(struct fdisk_context *cxt);
unsigned int fdisk_get_geom_heads(struct fdisk_context *cxt);
-sector_t fdisk_get_geom_sectors(struct fdisk_context *cxt);
-sector_t fdisk_get_geom_cylinders(struct fdisk_context *cxt);
+fdisk_sector_t fdisk_get_geom_sectors(struct fdisk_context *cxt);
+fdisk_sector_t fdisk_get_geom_cylinders(struct fdisk_context *cxt);
#define FDISK_ALIGN_DOWN 2
#define FDISK_ALIGN_NEAREST 3
-sector_t fdisk_align_lba(struct fdisk_context *cxt, sector_t lba, int direction);
-sector_t fdisk_align_lba_in_range(struct fdisk_context *cxt,
- sector_t lba, sector_t start, sector_t stop);
-int fdisk_lba_is_phy_aligned(struct fdisk_context *cxt, sector_t lba);
+fdisk_sector_t fdisk_align_lba(struct fdisk_context *cxt, fdisk_sector_t lba, int direction);
+fdisk_sector_t fdisk_align_lba_in_range(struct fdisk_context *cxt,
+ fdisk_sector_t lba, fdisk_sector_t start, fdisk_sector_t stop);
+int fdisk_lba_is_phy_aligned(struct fdisk_context *cxt, fdisk_sector_t lba);
int fdisk_override_geometry(struct fdisk_context *cxt,
unsigned int cylinders,
*
* Returns: 0 on success, <0 on error.
*/
-int fdisk_partition_set_start(struct fdisk_partition *pa, uint64_t off)
+int fdisk_partition_set_start(struct fdisk_partition *pa, fdisk_sector_t off)
{
if (!pa)
return -EINVAL;
*
* Returns: start offset in sectors
*/
-uint64_t fdisk_partition_get_start(struct fdisk_partition *pa)
+fdisk_sector_t fdisk_partition_get_start(struct fdisk_partition *pa)
{
return pa->start;
}
*
* Returns: 0 on success, <0 on error.
*/
-int fdisk_partition_set_size(struct fdisk_partition *pa, uint64_t sz)
+int fdisk_partition_set_size(struct fdisk_partition *pa, fdisk_sector_t sz)
{
if (!pa)
return -EINVAL;
*
* Returns: size offset in sectors
*/
-uint64_t fdisk_partition_get_size(struct fdisk_partition *pa)
+fdisk_sector_t fdisk_partition_get_size(struct fdisk_partition *pa)
{
return pa->size;
}
fdisk_cround(cxt, fdisk_partition_has_size(pa) ? pa->size : 0));
break;
case FDISK_FIELD_SECTORS:
- rc = asprintf(&p, "%ju", fdisk_partition_has_size(pa) ? pa->size : 0);
+ rc = asprintf(&p, "%ju",
+ fdisk_partition_has_size(pa) ? (uintmax_t) pa->size : 0);
break;
case FDISK_FIELD_BSIZE:
rc = asprintf(&p, "%ju", pa->bsize);
/* fdisk_get_partition() backend */
static int sgi_get_partition(struct fdisk_context *cxt, size_t n, struct fdisk_partition *pa)
{
- uint64_t start, len;
+ fdisk_sector_t start, len;
pa->used = sgi_get_num_sectors(cxt, n) > 0;
if (!pa->used)
#ifdef HDIO_GETGEO
if (cxt->geom.heads && cxt->geom.sectors) {
- sector_t llsectors;
+ fdisk_sector_t llsectors;
- if (blkdev_get_sectors(cxt->dev_fd, &llsectors) == 0) {
+ if (blkdev_get_sectors(cxt->dev_fd, (unsigned long long *) &llsectors) == 0) {
/* the get device size ioctl was successful */
- sector_t llcyls;
+ fdisk_sector_t llcyls;
int sec_fac = cxt->sector_size / 512;
llcyls = llsectors / (cxt->geom.heads * cxt->geom.sectors * sec_fac);
#ifdef HDIO_GETGEO
if (cxt->geom.heads && cxt->geom.sectors) {
- sector_t llsectors;
+ fdisk_sector_t llsectors;
- if (blkdev_get_sectors(cxt->dev_fd, &llsectors) == 0) {
+ if (blkdev_get_sectors(cxt->dev_fd, (unsigned long long *) &llsectors) == 0) {
int sec_fac = cxt->sector_size / 512;
- sector_t llcyls;
+ fdisk_sector_t llcyls;
llcyls = llsectors / (cxt->geom.heads * cxt->geom.sectors * sec_fac);
cxt->geom.cylinders = llcyls;
sunlabel->ncyl = cpu_to_be16(cxt->geom.cylinders);
snprintf((char *) sunlabel->label_id, sizeof(sunlabel->label_id),
- "Linux cyl %llu alt %u hd %u sec %llu",
- cxt->geom.cylinders, be16_to_cpu(sunlabel->acyl),
- cxt->geom.heads, cxt->geom.sectors);
+ "Linux cyl %ju alt %u hd %u sec %ju",
+ (uintmax_t) cxt->geom.cylinders,
+ be16_to_cpu(sunlabel->acyl),
+ cxt->geom.heads,
+ (uintmax_t) cxt->geom.sectors);
if (cxt->geom.cylinders * cxt->geom.heads * cxt->geom.sectors >= 150 * 2048) {
ndiv = cxt->geom.cylinders - (50 * 2048 / (cxt->geom.heads * cxt->geom.sectors)); /* 50M swap */
static int is_free_sector(struct fdisk_context *cxt,
- sector_t s, uint32_t starts[], uint32_t lens[])
+ fdisk_sector_t s, uint32_t starts[], uint32_t lens[])
{
size_t i;
/* allocates a new freespace description */
static int new_freespace(struct fdisk_context *cxt,
- uint64_t start,
- uint64_t end,
+ fdisk_sector_t start,
+ fdisk_sector_t end,
struct fdisk_partition *parent,
struct fdisk_partition **pa)
{
static int table_add_freespace(
struct fdisk_context *cxt,
struct fdisk_table *tb,
- uint64_t start,
- uint64_t end,
+ fdisk_sector_t start,
+ fdisk_sector_t end,
struct fdisk_partition *parent)
{
struct fdisk_partition *pa, *x, *real_parent = NULL, *best = NULL;
{
struct fdisk_iter itr;
struct fdisk_partition *pa;
- uint64_t x, last, grain;
- uint64_t lastplusoff;
+ fdisk_sector_t x, last, grain, lastplusoff;
int rc = 0;
assert(cxt);
int fdisk_get_freespaces(struct fdisk_context *cxt, struct fdisk_table **tb)
{
int rc = 0;
- uint64_t last, grain;
+ fdisk_sector_t last, grain;
struct fdisk_table *parts = NULL;
struct fdisk_partition *pa;
struct fdisk_iter itr;
{
struct fdisk_partition *pa;
struct fdisk_iter itr;
- sector_t last = 0;
+ fdisk_sector_t last = 0;
DBG(TAB, ul_debugobj(tb, "wrong older check"));