From cfcfc66d5486c2061316ebcdf32ef2f1ecbda433 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Fri, 22 Jun 2012 14:33:46 +0200 Subject: partitions: Make 64bit capable Signed-off-by: Sascha Hauer --- common/partitions.c | 29 ----------------------------- fs/devfs-core.c | 2 +- include/driver.h | 2 +- include/partition.h | 2 +- 4 files changed, 3 insertions(+), 32 deletions(-) diff --git a/common/partitions.c b/common/partitions.c index 74b4f1201a..a8c9625db7 100644 --- a/common/partitions.c +++ b/common/partitions.c @@ -42,23 +42,6 @@ struct partition_desc { struct partition parts[8]; }; -/** - * Reject values which cannot be used in Barebox - * @param val Value to be check - * @return 0 if value can be used in Barebox, -EINVAL if not - * - * @note this routine can be removed when Barebox uses file offsets larger - * than 32 bit - */ -static int check_offset_value(uint64_t val) -{ -#if 1 /* until Barebox can handle 64 bit offsets */ - if (val > (__INT_MAX__ / SECTOR_SIZE)) - return -EINVAL; -#endif - return 0; -} - /** * Guess the size of the disk, based on the partition table entries * @param dev device to create partitions for @@ -76,12 +59,6 @@ static int disk_guess_size(struct device_d *dev, struct partition_entry *table) size += get_unaligned(&table[i].partition_size); } } - /* limit disk sector counts we can't handle due to 32 bit limits */ - if (check_offset_value(size) != 0) { - dev_warn(dev, "Warning: Sector count limited due to 31 bit" - "contraints\n"); - size = __INT_MAX__ / SECTOR_SIZE; - } return (int)size; } @@ -126,12 +103,6 @@ static void __maybe_unused try_dos_partition(struct block_device *blk, pentry.first_sec = get_unaligned(&table[i].partition_start); pentry.size = get_unaligned(&table[i].partition_size); - /* do we have to ignore this partition due to limitations? */ - if (check_offset_value(pentry.first_sec) != 0) - continue; - if (check_offset_value(pentry.size) != 0) - continue; - if (pentry.first_sec != 0) { pd->parts[pd->used_entries].first_sec = pentry.first_sec; pd->parts[pd->used_entries].size = pentry.size; diff --git a/fs/devfs-core.c b/fs/devfs-core.c index b66965e390..cdb8f79336 100644 --- a/fs/devfs-core.c +++ b/fs/devfs-core.c @@ -227,7 +227,7 @@ int devfs_remove(struct cdev *cdev) return 0; } -int devfs_add_partition(const char *devname, unsigned long offset, size_t size, +int devfs_add_partition(const char *devname, loff_t offset, loff_t size, int flags, const char *name) { struct cdev *cdev, *new; diff --git a/include/driver.h b/include/driver.h index 0b6d1b30c5..eacd8e6813 100644 --- a/include/driver.h +++ b/include/driver.h @@ -418,7 +418,7 @@ int cdev_erase(struct cdev *cdev, size_t count, loff_t offset); #define DEVFS_PARTITION_READONLY (1 << 1) #define DEVFS_IS_PARTITION (1 << 2) -int devfs_add_partition(const char *devname, unsigned long offset, size_t size, +int devfs_add_partition(const char *devname, loff_t offset, loff_t size, int flags, const char *name); int devfs_del_partition(const char *name); diff --git a/include/partition.h b/include/partition.h index 0827bb40c6..8ad7490d85 100644 --- a/include/partition.h +++ b/include/partition.h @@ -8,7 +8,7 @@ struct partition { int flags; - unsigned long offset; + loff_t offset; struct device_d *physdev; struct device_d device; -- cgit v1.2.3