summaryrefslogtreecommitdiff
path: root/libparted/arch
diff options
context:
space:
mode:
authorPhillip Susi <psusi@cfl.rr.com>2011-12-16 22:40:04 -0500
committerJim Meyering <meyering@redhat.com>2012-01-05 18:30:26 +0100
commit11316315f99e61e875eef2964ae3b227a6088db1 (patch)
treed62433762dd5143a1dfcb9210617b8304d9327ae /libparted/arch
parente54f1da5bd2c379d8d2e4e7d5bb086b4947d4591 (diff)
downloadparted-11316315f99e61e875eef2964ae3b227a6088db1.tar.gz
libparted: remove _loop_get_partition_range
Commit 1eb0cc30 added support for loop devices to be partitioned, but it only enabled that support if the kernel parameter max_part was non zero. This parameter just reserves minor numbers for partitions in the traditional sequence that hard disks used. When it is zero, it is still possible to add partitions, they just will get minor numbers from another pool. Removing this check allows partitions to be used on loop devices even when the loop module was not loaded with the max_part argument. * libparted/arch/linux.c (_loop_get_partition_range): Remove function and all uses.
Diffstat (limited to 'libparted/arch')
-rw-r--r--libparted/arch/linux.c41
1 files changed, 4 insertions, 37 deletions
diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
index 07fc97c..5c22276 100644
--- a/libparted/arch/linux.c
+++ b/libparted/arch/linux.c
@@ -2450,38 +2450,6 @@ _sysfs_int_entry_from_dev(PedDevice const* dev, const char *entry, int *val)
return ok;
}
-/* Return the maximum number of partitions that the loopback device can hold.
- First, check the loop-module-exported max_part parameter (since linux-3.0).
- If that is not available, fall back to checking ext_range, which seems to
- have (for some reason) different semantics compared to other devices;
- specifically, ext_range <= 1 means that the loopback device does
- not support partitions. */
-static unsigned int
-_loop_get_partition_range(PedDevice const* dev)
-{
- int max_part;
- bool ok = false;
-
- /* max_part module param is exported since kernel 3.0 */
- FILE *fp = fopen("/sys/module/loop/parameters/max_part", "r");
- if (fp) {
- ok = fscanf(fp, "%d", &max_part) == 1;
- fclose(fp);
- }
-
- if (ok)
- return max_part > 0 ? max_part : 0;
-
- /*
- * max_part is not exported - check ext_range;
- * device supports partitions if ext_range > 1
- */
- int range;
- ok = _sysfs_int_entry_from_dev(dev, "range", &range);
-
- return ok && range > 1 ? range : 0;
-}
-
/*
* The number of partitions that a device can have depends on the kernel.
* If we don't find this value in /sys/block/DEV/ext_range, we will use our own
@@ -2490,14 +2458,13 @@ _loop_get_partition_range(PedDevice const* dev)
static unsigned int
_device_get_partition_range(PedDevice const* dev)
{
- /* loop handling is special */
- if (dev->type == PED_DEVICE_LOOP)
- return _loop_get_partition_range(dev);
-
int range;
bool ok = _sysfs_int_entry_from_dev(dev, "ext_range", &range);
- return ok && range > 0 ? range : MAX_NUM_PARTS;
+ if (!ok)
+ return MAX_NUM_PARTS;
+ /* both 0 and 1 mean no partitions */
+ return range > 1 ? range : 0;
}
/*