Richard W.M. Jones wrote: > If you take a virtual disk and truncate it, then likely some > partitions in the partition table will be off the end of the disk. > > However parted refuses to start up in this case. It says: > > Error: Can't have a partition outside the disk! > > even if you are trying to do something sensible such as deleting a > partition which is outside the disk. > > I can't really see a "good" way to solve this, since it happens in the > depths of the constraints/geometry code. The attached patch just > deletes the error check, on the basis that parted should confine > itself to partition tables and not worry about the size of the disk. > Discuss ...
Rich, I tried your patch (but retained the warning), running it against a sample "device" I shrank by one byte... created like this: $ dev=dev-file $ dd if=/dev/null of=$dev bs=1 seek=2GB 0+0 records in 0+0 records out 0 bytes (0 B) copied, 0.000256681 s, 0.0 kB/s $ [Exit 1] $ parted -s -- $dev mklabel msdos mkpart primary fat32 64s -1s u s p Warning: The resulting partition is not properly aligned for best performance. Model: (file) Disk /c/parted/parted/dev-file: 3906250s Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 64s 3906249s 3906186s primary lba $ truncate -s -1 $dev $ ./parted -s $dev u s p Warning: Can't have a partition outside the disk! Warning: Can't have a partition outside the disk! Warning: Can't have a partition outside the disk! ... Assertion (part->geom.end < disk->dev->length) at disk.c:1856 in function _partition_check_basic_sanity() failed. As you can see, this assumption that partitions fit within the bounds of the device is at least one assertion deeper... Commenting out that assertion, we get a little further: $ ./parted -s dev-file u s p Warning: Can't have a partition outside the disk! Warning: Can't have a partition outside the disk! Warning: Can't have a partition outside the disk! Error: Can't have overlapping partitions. [Exit 1] The bottom line is that the partition-reading and -validation code is too tightly coupled. I'd rather be able to read in the entire partition table description, and then sanitize it in a separate, optional phase. But no rewrite today... I barely have time to tend to the occasional Parted bug report. _______________________________________________ parted-devel mailing list [email protected] http://lists.alioth.debian.org/mailman/listinfo/parted-devel

