OSDN Git Service
Jim Meyering [Thu, 12 Jan 2012 16:45:57 +0000 (17:45 +0100)]
maint: remove useless BUILD_LINUX conditional
* configure.ac (BUILD_LINUX): Don't set it.
* libparted/Makefile.am (BUILD_LINUX): Remove useless use.
Jim Meyering [Thu, 12 Jan 2012 18:03:20 +0000 (19:03 +0100)]
maint: avoid long-standing warnings from make:
Makefile:1274: warning: overriding recipe for target `linux.lo'
Makefile:1267: warning: ignoring old recipe for target `linux.lo'
* libparted/Makefile.am (EXTRA_DIST): Rename from
EXTRA_libparted_la_SOURCES.
Jim Meyering [Wed, 21 Dec 2011 15:56:17 +0000 (16:56 +0100)]
libparted: provide a new convenience function: ptt_geom_clear_sectors
* libparted/labels/pt-tools.c (ptt_geom_clear_sectors): New function.
* libparted/labels/pt-tools.h: Declare it.
Jim Meyering [Wed, 11 Jan 2012 08:45:17 +0000 (09:45 +0100)]
maint: remove "MAINTAINERCLEANFILES = Makefile.in" from Makefile.am's
* debug/Makefile.am: As above.
* debug/test/Makefile.am: Likewise.
* doc/C/Makefile.am: Likewise.
* doc/pt_BR/Makefile.am: Likewise.
* include/Makefile.am: Likewise.
* include/parted/Makefile.am: Likewise.
* libparted/Makefile.am: Likewise.
* libparted/fs/Makefile.am: Likewise.
* libparted/tests/Makefile.am: Likewise.
* partprobe/Makefile.am: Likewise.
* doc/Makefile.am: Likewise, for mdate-sh and texinfo.tex.
Keshav P R [Tue, 10 Jan 2012 11:38:31 +0000 (12:38 +0100)]
build: insert -I$(top_builddir)/include before -I$(top_srcdir)/include
everywhere, for those who perform non-srcdir builds from a pristine
cloned directory. There is no problem when building from a tarball,
since that includes include/parted/*.h files under $(top_srcdir).
* libparted/Makefile.am: Insert it.
* libparted/fs/Makefile.am: Likewise.
* libparted/labels/Makefile.am: Likewise.
* libparted/tests/Makefile.am: Likewise.
* parted/Makefile.am: Likewise.
* partprobe/Makefile.am: Likewise.
* tests/Makefile.am: Likewise.
Jim Meyering [Tue, 10 Jan 2012 11:38:50 +0000 (12:38 +0100)]
build: .gitignore: ignore more
Jim Meyering [Tue, 10 Jan 2012 10:48:52 +0000 (11:48 +0100)]
maint: hoist libparted/fs/*/Makefile.am into parent Makefile.am
There was no need to have a separate Makefile.am for each file system
type, and a good reason *not* to do that (reduce duplication).
* configure.ac (AC_OUTPUT): Remove Makefiles.
* libparted/fs/Makefile.am (SUBDIRS): Remove.
(EXTRA_DIST): List the two non-src files: hfs/DOC hfs/HISTORY.
(libfs_la_SOURCES): Hoist file names to here from...
* libparted/fs/amiga/Makefile.am: ...here.
* libparted/fs/ext2/Makefile.am: Likewise.
* libparted/fs/fat/Makefile.am: Likewise.
* libparted/fs/hfs/Makefile.am: Likewise.
* libparted/fs/jfs/Makefile.am: Likewise.
* libparted/fs/linux_swap/Makefile.am: Likewise.
* libparted/fs/nilfs2/Makefile.am: Likewise.
* libparted/fs/ntfs/Makefile.am: Likewise.
* libparted/fs/reiserfs/Makefile.am: Likewise.
* libparted/fs/ufs/Makefile.am: Likewise.
* libparted/fs/xfs/Makefile.am: Likewise.
* libparted/fs/*/Makefile.am: Remove files.
* libparted/fs/amiga/a-interface.c: Now that the .o files are all
in the same place, rename from interface.c, to avoid collision with
name of .o file from ext2/interface.c.
Jim Meyering [Tue, 10 Jan 2012 10:21:52 +0000 (11:21 +0100)]
build: correct my typo in preceding commit
* configure.ac (AC_CONFIG_SRCDIR): Correct preceding commit.
Keshav's patch was correct, but when I attempted to do the same
thing manually I wrote .h.in rather than .in.h.
Keshav P R [Tue, 10 Jan 2012 10:10:59 +0000 (11:10 +0100)]
build: update AC_CONFIG_SRCDIR for non-srcdir-from-clone builds
* configure.ac (AC_CONFIG_SRCDIR): List parted.h.in, rather than
the now-generated parted.h, for those who run configure not from
a distribution tarball, but from a non-srcdir build using a pristine
clone.
Jim Meyering [Mon, 9 Jan 2012 18:42:49 +0000 (19:42 +0100)]
maint: rename public .h files to .in.h
Generate .h files from .in.h files, so that we can continue
to use _GL_ATTRIBUTE_PURE and _GL_ATTRIBUTE_CONST in the primary
sources, without including them in publicly-installed files.
Each generated (and later installed) header file gets expansions
of those macros.
* include/parted/Makefile.am: New rules.
* .gitignore: Ignore the generated files.
* Makefile.am (SUBDIRS): Reorder so we build in include/ before
libparted, i.e., so that we generate the .h files we'll need.
Jim Meyering [Mon, 9 Jan 2012 18:11:23 +0000 (19:11 +0100)]
parted.h: use _GL_ATTRIBUTE_CONST and _GL_ATTRIBUTE_PURE in VC'd files
However, we will replace those strings with their expansions when
installing them.
* include/parted/parted.h: Revert part of commit
v3.0-83-gd51bfc0.
Jim Meyering [Mon, 9 Jan 2012 14:29:45 +0000 (15:29 +0100)]
tests: root-only test would fail to remove its loop device
* tests/t8001-loop-blkpg.sh: Ironically, when skipping this test,
there was a race condition where in more than 7 out of 10 trials,
this test's "losetup -d $dev" command would fail with "device in use".
Hence, with enough testing, I would eventually use up all loop devices
and start getting new test failures due to losetup *creation* failure.
Jim Meyering [Mon, 9 Jan 2012 14:04:40 +0000 (15:04 +0100)]
build: fix "make distcheck" failure
Ever since "make distcheck" began using sudo (i.e., running "make check"
as root, and then running it as non-root), the build-after-root would
often fail due to some derived files being owned by root.
This change adds a "chown -R $USER ." to restore order.
* Makefile.am (root-check): Run "chown -R $USER ." after sudo run.
(root_check): Rename variable from root-check, to avoid a warning
from automake about non-POSIX variable.
Jim Meyering [Mon, 9 Jan 2012 13:45:34 +0000 (14:45 +0100)]
build: appease gcc's -Werror=suggest-attribute=pure
* parted/strlist.c (wchar_strcasecmp): Add pure attribute; make static.
(wchar_strncasecmp): Likewise.
(wchar_strdup): Likewise.
Jim Meyering [Mon, 9 Jan 2012 11:07:20 +0000 (12:07 +0100)]
build: update to latest from gnulib
* bootstrap: Update.
* tests/init.sh: Likewise.
* gnulib: Update submodule to latest.
maint: remove two generated files in doc/
* doc/fdl.texi: Remove file from version control. It is generated.
* doc/gendocs_template: Likewise.
* doc/parted.texi: Add @node ... before inclusion of fdl.texi,
since fdl.texi dropped that part.
* doc/parted-pt_BR.texi: Likewise.
* doc/.gitignore: Update.
build: accommodate newer bootstrap from gnulib
* bootstrap.conf (gnulib_tool_option_extras): Add both --symlink
and --makefile-name=gnulib.mk. Remove stray use of $bt.
* lib/Makefile.am: Initialize all of the following so that
generated code in gnulib.mk may use += to append to those variables:
AM_CFLAGS, AM_CPPFLAGS, BUILT_SOURCES, CLEANFILES, EXTRA_DIST,
MAINTAINERCLEANFILES, MOSTLYCLEANDIRS, MOSTLYCLEANFILES, SUFFIXES,
noinst_LTLIBRARIES.
Jim Meyering [Mon, 9 Jan 2012 08:21:09 +0000 (09:21 +0100)]
libparted: gpt: a smaller device need not render both headers invalid
Putting a valid GPT-labeled image on a smaller device, (i.e., one that
truncates the backup GPT header, but that does not impact the primary
one) should not render the primary header invalid.
* libparted/labels/gpt.c (_header_is_valid): Do *not* reject a header
when its last_usable value is larger than the device length.
This reverts part of commit
v3.0-10-g99f9c6a, "gpt: don't abort for a
truncated GPT-formatted device". With this change, running parted in
interactive mode with such an image/device combination will recognize
that only the backup header is corrupt, and will offer to correct it.
Before, it would report that both headers were corrupt.
* tests/t0203-gpt-shortened-device-primary-valid.sh: New file.
* tests/Makefile.am (TESTS): Add it.
Jim Meyering [Fri, 30 Dec 2011 20:03:06 +0000 (21:03 +0100)]
gpt: eliminate four PED_ASSERT uses
* libparted/labels/gpt.c (_parse_header): Convert a few PED_ASSERT
uses to friendlier 'test-and-return-0's. Reported by Graham Markall
in http://thread.gmane.org/gmane.comp.gnu.parted.bugs/10653
Jim Meyering [Sun, 8 Jan 2012 19:43:26 +0000 (20:43 +0100)]
libparted: don't use _GL_ATTRIBUTE_CONST in public parted.h, ...
Instead, use the bare __attribute__((__const__)).
* include/parted/parted.h (__attribute): Define.
(ped_get_version): Use open-coded __attribute.
Prompted by a report from Keshav P R.
Jim Meyering [Sun, 8 Jan 2012 17:03:34 +0000 (18:03 +0100)]
tests: fix misleading mkpart usage
Using "primary" is fine (and common) as a partition *type* for dos
partition tables, but with a partition table of type GPT, it is
downright misleading to specify the partition *name* as "primary".
* tests/t0220-gpt-msftres.sh: Use "p-name" as partition name,
rather than misleading "primary".
* tests/t7000-scripting.sh: Likewise.
Jim Meyering [Wed, 4 Jan 2012 13:26:20 +0000 (14:26 +0100)]
tests: skip loop-partitioning tests when ext_range is < 2
* tests/init.cfg (require_partitionable_loop_device_): New function.
* tests/t8001-loop-blkpg.sh: Use it.
* tests/t8000-loop.sh: Use it.
Jim Meyering [Thu, 5 Jan 2012 19:48:19 +0000 (20:48 +0100)]
libparted: remove _blkpg_get_partition
[I applied Phillip's initial patch, omitting both my adjustments
and his own v2 changes. This addresses both of those omissions. ]
* libparted/arch/linux.c (_blkpg_get_partition): Remove function
and sole use, per patch from Phillip Susi.
(_kernel_get_partition_start_and_length): Adjust formatting,
remove unnecessary test and correct a diagnostic.
Phillip Susi [Sat, 17 Dec 2011 04:05:40 +0000 (23:05 -0500)]
libparted: avoid the HDIO_GETGEO ioctl when possible
We were using the long depreciated HDIO_GETGEO ioctl on the
partition to get its start sector. Use the new BLKPG_GET_PARTITION
ioctl instead. This allows for disks > 2TB and partitioned loop
devices, which don't support HDIO_GETGEO. As a fallback when
BLKPG_GET_PARTITION fails or is not availible, try getting the
values from sysfs, and finally use BLKGETSIZE64 and HDIO_GETGEO
as a last resort.
Phillip Susi [Sat, 17 Dec 2011 04:05:39 +0000 (23:05 -0500)]
libparted: remove has_partitions check to allow loopback partitions
Commit
1b766b69 added the _has_partitions function to check if a device
was a loop device and if so, skip updating the kernel partition table
because loop devices did not support partitions. This function never
worked anyway, and loop devices now (since linux 3.2) support
partitions, so remove this crufty code.
* libparted/arch/linux.c (_has_partitions): Remove function and
all uses.
Phillip Susi [Sat, 17 Dec 2011 03:40:04 +0000 (22:40 -0500)]
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.
Jim Meyering [Thu, 5 Jan 2012 17:24:41 +0000 (18:24 +0100)]
tests: fix a bug in wait_for_dev_to_disappear_ helper function
* tests/t-lib-helpers.sh (wait_for_dev_to_disappear_): Correct
typo: missing expr in subshell.
Phillip Susi [Wed, 4 Jan 2012 19:40:13 +0000 (14:40 -0500)]
libparted: linux: exclude floppy from device scan
Floppies can't be partitioned anyhow, and some people have a
misconfigured BIOS that thinks there is a floppy when there
actually isn't, and trying to scan it causes hanging.
Phillip Susi [Tue, 3 Jan 2012 01:12:42 +0000 (20:12 -0500)]
tests: try harder to clean up scsi_debug
Tests were failing because the previous test gave up while trying to
unload the scsi_debug module. Try longer to remove it, and then throw
in a call to udevadm settle for good measure.
* tests/t-local.sh: Try harder to release resources here, rather than...
* tests/t9040-many-partitions.sh: ...in this one test.
* tests/t-local.sh (require_scsi_debug_module_): Now that
cleanup requires "udevadm settle", add that requirement here:
call require_udevadm_settle_.
Jim Meyering [Sun, 1 Jan 2012 09:17:25 +0000 (10:17 +0100)]
maint: update all copyright year number ranges
Run "make update-copyright".
Phillip Susi [Wed, 14 Dec 2011 20:32:36 +0000 (15:32 -0500)]
doc: add NEWS entry for "Add partition separator only when required"
Phillip Susi [Wed, 7 Dec 2011 04:20:50 +0000 (23:20 -0500)]
Add partition separator only when required
Device mapper type should not automatically
mean add 'p' before the partition number. Fall back to
adding it only if the previous character is a digit.
This complies with kpartx behavior and linux behavior
"since the dawn of time".
Jim Meyering [Sat, 3 Dec 2011 13:10:48 +0000 (14:10 +0100)]
build: update gnulib submodule to latest
Jim Meyering [Sat, 3 Dec 2011 14:24:35 +0000 (15:24 +0100)]
build: address a new "noreturn" suggestion
* parted/ui.h (help_msg): Declare as __noreturn__.
Jim Meyering [Sat, 3 Dec 2011 14:16:16 +0000 (15:16 +0100)]
build: configure.ac: use -Wno-format-nonliteral
Jim Meyering [Sat, 3 Dec 2011 13:57:26 +0000 (14:57 +0100)]
build: mark functions with "const" or "pure" attribute, per gcc warnings
Use _GL_ATTRIBUTE_PURE or _GL_ATTRIBUTE_CONST. Mark static functions at
point of definition; extern ones at point of declaration.
* include/parted/crc32.h:
* include/parted/device.h: Likewise.
* include/parted/disk.h: Likewise.
* include/parted/exception.h: Likewise.
* include/parted/filesys.h: Likewise.
* include/parted/geom.h: Likewise.
* include/parted/natmath.h: Likewise.
* include/parted/parted.h: Likewise.
* include/parted/unit.h: Likewise.
* libparted/arch/linux.c: Likewise.
* libparted/disk.c: Likewise.
* libparted/exception.c: Likewise.
* libparted/fs/amiga/amiga.h: Likewise.
* libparted/labels/aix.c: Likewise.
* libparted/labels/bsd.c: Likewise.
* libparted/labels/dos.c: Likewise.
* libparted/labels/dvh.c: Likewise.
* libparted/labels/efi_crc32.c: Likewise.
* libparted/labels/gpt.c: Likewise.
* libparted/labels/mac.c: Likewise.
* libparted/labels/pc98.c: Likewise.
* libparted/labels/rdb.c: Likewise.
* libparted/labels/sun.c: Likewise.
* libparted/unit.c: Likewise.
* parted/ui.c: Likewise.
* parted/strlist.c: Likewise.
* parted/strlist.h: Likewise.
* libparted/tests/common.h (_implemented_disk_label): Mark as pure.
* libparted/cs/natmath.c (extended_euclid): Mark as pure.
Jim Meyering [Sat, 3 Dec 2011 13:28:41 +0000 (14:28 +0100)]
build: avoid new float-to-double warnings
* libparted/timer.c (ped_timer_new_nested): Mark literal floating point
constants with "f" suffix, since they are compared against "float"s.
* parted/parted.c (_timer_handler): Likewise.
Jim Meyering [Sat, 3 Dec 2011 14:35:12 +0000 (15:35 +0100)]
build: tweak how bootstrap manages ChangeLog
* bootstrap.conf: Create ChangeLog only by touching it, so that
it doesn't ever remove my in-use symlink (w/vc-dwim).
Jim Meyering [Sat, 3 Dec 2011 14:36:36 +0000 (15:36 +0100)]
tests: two more of these: use "compare exp out", not "compare out exp"
* tests/t7000-scripting.sh: Reverse compare arguments.
* tests/t2310-dos-extended-2-sector-min-offset.sh: Likewise.
Jim Meyering [Tue, 29 Nov 2011 17:05:31 +0000 (18:05 +0100)]
tests: use "compare exp out", not "compare out exp"
Likewise, when an empty file is expected, use "compare /dev/null out",
not "compare out /dev/null". I.e., specify the expected/desired contents
via the first file name. Prompted by a suggestion from Bruno Haible
in http://thread.gmane.org/gmane.comp.gnu.grep.bugs/4020/focus=29154
Run these commands:
git grep -l -E 'compare [^ ]+ exp' \
|xargs perl -pi -e 's/\b(compare) (\S+) (exp\S*)/$1 $3 $2/'
git grep -l -E 'compare [^ ]+ /dev/null' \
|xargs perl -pi -e 's,\b(compare) (\S+) (/dev/null),$1 $3 $2,'
Petr Uzel [Sat, 26 Nov 2011 14:45:09 +0000 (15:45 +0100)]
tests: test for partitions on mdraid
* tests/t6100-mdraid-partitions.sh: New file.
* tests/Makefile.am: Run this test.
Petr Uzel [Sat, 26 Nov 2011 14:45:08 +0000 (15:45 +0100)]
libparted: use ext_range to find out largest possible partition
Parted uses /sys/block/DEV/range file to find out how many partitions
can the blockdevice hold and uses this number in its algorithm
for informing the kernel about modified partitions. This works
fine for most devices, however, it fails on partitionable MD arrays,
because these have 1 in range file. Using ext_range should be safer
and work for all devices.
* libparted/arch/linux.c (_device_get_partition_range): Use
/sys/block/DEV/ext_range instead of range sysfs file
* NEWS: Mention the change.
Addresses: http://bugzilla.novell.com/567652
Petr Uzel [Sat, 26 Nov 2011 14:47:28 +0000 (15:47 +0100)]
build: gitignore tests/duplicate
.gitignore: Add tests/duplicate.
Jim Meyering [Fri, 11 Nov 2011 08:50:51 +0000 (09:50 +0100)]
maint: a little defensive programming in a test script
* tests/gpt-header-munge: Use "local *F;" to limit scope of
file handles.
Jim Meyering [Thu, 10 Nov 2011 18:15:29 +0000 (19:15 +0100)]
tests: skip a test if Perl's Digest::CRC module is not installed
* tests/init.cfg (require_perl_digest_crc_): New function.
* tests/t0210-gpt-resized-partition-entry-array.sh: Use it.
Reported by Keshav P R in
http://thread.gmane.org/gmane.comp.gnu.parted.bugs/10530/focus=10589
Jim Meyering [Thu, 10 Nov 2011 11:14:08 +0000 (12:14 +0100)]
tests: fix test for udevadm
* tests/init.cfg (sector_size_): Fix syntax error in test invocation.
Jim Meyering [Thu, 10 Nov 2011 11:11:24 +0000 (12:11 +0100)]
maint: "make distcheck" now runs the root-only tests
* Makefile.am (root-check): New overridable variable and rule.
(distcheck-hook): Depend on it.
Jim Meyering [Thu, 10 Nov 2011 10:55:23 +0000 (11:55 +0100)]
build: update gnulib submodule to latest
Jim Meyering [Thu, 10 Nov 2011 10:54:50 +0000 (11:54 +0100)]
maint: adjust the URL that will appear in the generated announcement
* cfg.mk (url_dir_list): Use this http://ftp.gnu.org/gnu/$(PACKAGE)
for the first link listed in the generated announcement.
announce-gen now provides the faster mirror link automatically.
Remove now-unnecessary release-related URLs.
Jim Meyering [Sun, 6 Nov 2011 18:10:49 +0000 (19:10 +0100)]
build: update gnulib submodule to latest
Jim Meyering [Sun, 6 Nov 2011 18:09:56 +0000 (19:09 +0100)]
build: stop distributing gzip'd releases; xz is enough
* configure.ac (AM_INIT_AUTOMAKE): Add no-dist-gzip.
* NEWS (Build-related): Mention that we're dropping .tar.gz.
Jim Meyering [Sat, 5 Nov 2011 19:49:18 +0000 (20:49 +0100)]
tests: exercise and document the HFS-probe bug fix
Simply zeroing out the total_blocks and block_size members of the
on-disk _HfsMasterDirectoryBlock would provoke a failed assertion
any time parted tried to probe that partition.
* tests/t2500-probe-corrupt-hfs.sh: New script.
* tests/Makefile.am (TESTS): Add it.
* NEWS (Bug fixes): Mention this.
Brian C. Lane [Fri, 7 Oct 2011 23:53:48 +0000 (16:53 -0700)]
libparted: HFS/HFS+ probe: don't let a corrupt FS evoke failed assertion
* libparted/fs/hfs/probe.c (hfsplus_probe): Add a check on the
search value and reject it if it is negative.
(hfsx_probe): Likewise.
(hfs_and_wrapper_probe): Likewise.
Reported by Flos Lonicerae in http://bugzilla.redhat.com/714758
Brian C. Lane [Fri, 21 Oct 2011 20:46:53 +0000 (13:46 -0700)]
tests: t9030 wait for partition removal
The removal of the partition may take enough time that the next
mkpart will fail. Wait for it to be removed.
Remove scsi_debug size and set the end of the partition to 800s so that
it will fit inside the default scsi_debug size of 8M, even when sector
size is 4Kb. This prevents failures on machines with limited memory.
* tests/t9030-align-check.sh: Wait for partition removal and use
a smaller disk.
Jim Meyering [Fri, 4 Nov 2011 20:28:51 +0000 (21:28 +0100)]
tests: add a helper function
* tests/t-lib-helpers.sh (wait_for_dev_to_disappear_): New function.
Jim Meyering [Thu, 3 Nov 2011 10:09:47 +0000 (11:09 +0100)]
tests: exercise the "GPT vs other-sized partition entry arrays" fixes
* tests/t0210-gpt-resized-partition-entry-array.sh: New file.
* tests/Makefile.am (TESTS): Add it.
(EXTRA_DIST): Add gpt-header-munge.
Jim Meyering [Fri, 28 Oct 2011 18:05:15 +0000 (20:05 +0200)]
tests: rewrite/complete GPT-munging perl script
Rewrite and complete this script.
It was incomplete and buggy. Now it works.
* tests/gpt-header-munge: Rename from ...
* tests/perl-munge-9-PTE-table: ...this.
Jim Meyering [Thu, 3 Nov 2011 12:51:40 +0000 (13:51 +0100)]
gpt: don't misbehave with e.g., a 9-entry partition array
* libparted/labels/gpt.c (_generate_header): Correct size of
partition array entries to round up to nearest multiple of
sector size, so that we set gpt->PartitionEntryLBA correctly
also when the number of partition entries is not a multiple
of sector_size / 128. Problem diagnosed by Robert Herndon
in http://thread.gmane.org/gmane.comp.gnu.parted.bugs/10173.
Robert Herndon [Sat, 29 Oct 2011 21:03:49 +0000 (23:03 +0200)]
gpt: prepare for tables with n_partition_array_entries != 128
* libparted/labels/gpt.c (gpt_read_PE_array): When computing the size
of the partition array entry, use the value of "number of partition
array entries" read from a GPT header, not the default of 128 that we
use when creating new headers. Details here:
http://thread.gmane.org/gmane.comp.gnu.parted.bugs/10173
Jim Meyering [Thu, 3 Nov 2011 16:57:19 +0000 (17:57 +0100)]
parted: exit nonzero for certain failures already diagnosed as "Error"
* parted/parted.c (do_print): Do not exit successfully when issuing
an error about an "unrecognised disk label" or when both GPT primary
and backup tables are corrupted.
* tests/t0101-print-empty.sh: Adjust expected exit code to match
new behavior.
* NEWS (Bug fixes): Mention this.
Jim Meyering [Thu, 3 Nov 2011 15:59:07 +0000 (16:59 +0100)]
tests: adjust a test to make its failure easier to diagnose
* tests/t0203-gpt-tiny-device-abort.sh: When failing, also
emit parted's diagnostics.
Jim Meyering [Sat, 29 Oct 2011 20:34:14 +0000 (22:34 +0200)]
maint: correct two comments in gpt.c
* libparted/labels/gpt.c (gpt_read_headers): Correct the comment.
(_header_is_valid): Fix a harmless typo.
Brian C. Lane [Mon, 31 Oct 2011 23:35:17 +0000 (16:35 -0700)]
tests: add new test to check ped_disk_duplicate
* tests/duplicate.c: New test.
* tests/t0501-duplicate.sh: New test program.
* tests/Makefile.am (TEST): Add new test.
(check_PROGRAMS): Add new test program.
Brian C. Lane [Mon, 31 Oct 2011 23:35:16 +0000 (16:35 -0700)]
libparted: copy flags when duplicating GPT partitions
* libparted/labels/gpt.c (gpt_partition_duplicate): Copy flags to new
partition.
* NEWS: Mention this fix.
Reported by Chris Murphy in https://bugzilla.redhat.com/747497.
Petr Uzel [Sat, 22 Oct 2011 13:22:09 +0000 (15:22 +0200)]
tests: exercise the new feature
* tests/t0208-mkpart-end-in-IEC.sh: New file.
* tests/Makefile.am: Add it.
Petr Uzel [Sat, 22 Oct 2011 13:22:09 +0000 (15:22 +0200)]
parted: mkpart: DWIM for IEC ending sector numbers like 2MiB and 9GiB
Before, if the user specified start and end in mkpart command using
IEC units, parted created a partition that starts and ends exactly on
these positions. With such behavior, it is impossible to create
partitions as follows: 1MiB-2MiB, 2MiB-3MiB - parted would complain
that it cannot create the second partition, because the first one
occupied sectors 2048-4096 and the second one sectors 4096-3072,
so they would overlap at sector 4096.
With this patch, if the user uses IEC units to specify end of the
partition, parted creates the partition which ends one sector before
the specified position.
See also
https://lists.gnu.org/archive/html/bug-parted/2011-10/msg00009.html
* parted/ui.c (command_line_get_sector): Add parameter to retrieve
raw input from user.
* parted/ui.h (command_line_get_sector): Adjust prototype of function.
* parted/parted.c (_adjust_end_if_iec): New function.
(_strip_trailing_spaces): New function.
(_string_ends_with_iec_unit): New function.
(do_mkpart): Call _adjust_end_if_iec(). Use new parameter of
command_line_get_sector function.
(do_rescue): Adjust call to command_line_get_sector.
* bootstrap.conf (gnulib_modules): Add these: c-ctype, c-strcase.
* tests/t0207-IEC-binary-notation.sh: Adjust to new semantics.
* NEWS: Mention the changed behavior.
Notable adjustments:
- s/isspace/c_isblank/ so that parsing is locale-independent
- avoid an array-bounds error:
* parted/parted.c (_strip_trailing_spaces): Don't deref str[-1]
for an empty string.
Brian C. Lane [Fri, 7 Oct 2011 23:53:50 +0000 (16:53 -0700)]
tests: add tests for new pc98 signatures (#646053)
* tests/t2201-pc98-label-recog.sh: New file
* tests/Makefile.am: Add test
Brian C. Lane [Fri, 7 Oct 2011 23:53:49 +0000 (16:53 -0700)]
libparted: make pc98 detection depend on signatures
pc98 is not a common disk label. Change pc98_probe to only return true
if one of the recognized signatures is present.
Currently these include:
IPL1
Linux 98
GRUB/98
This prevents false-positive detection on msdos labeled disks.
* libparted/labels/pc98.c (pc98_probe): Change to require signature
(pc98_check_ipl_signature): Add more signatures
(check_partition_consistency): Remove unused function
Reported by Zach Carter in http://bugzilla.redhat.com/646053
Stefano Lattarini [Wed, 12 Oct 2011 09:18:47 +0000 (11:18 +0200)]
tests: use more portable fd redirection in TESTS_ENVIRONMENT
* tests/Makefile.am (TESTS_ENVIRONMENT): Redirection with `exec 9>&2'
is not portable to various Korn shells, and to (at least) HP-UX 11
/bin/sh. Use a more portable idiom.
See <http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/22488> for
lots of discussion.
Stefano Lattarini [Mon, 10 Oct 2011 23:11:08 +0000 (01:11 +0200)]
tests: TEST_ENVIRONMENT simplified and made more robust
The test scripts in tests/ are shell scripts, so the current
definition of TESTS_ENVIRONMENT, which adaptively run tests using
either perl or the shell depending on their kind, is overkill.
Moreover, this change is required in order for the testsuite to
continue to work with the new testsuite harness that is planned
to be introduced in Automake 1.12 (which, as of the writing date,
is still under development and in late alpha state).
See also related discussion on bug-coreutils:
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8887>
* tests/help-version: Moved ...
* tests/help-version.sh: ... to this.
* tests/Makefile.am (TESTS): Update.
(TESTS_ENVIRONMENT): Remove definition of the `shell_or_perl_' shell
function, which is not required anymore.
(SH_LOG_COMPILER): New, define to `$(SHELL)'.
Richard W.M. Jones [Wed, 12 Oct 2011 20:54:24 +0000 (21:54 +0100)]
tests: fix the tests for the case where stdout/stderr is different
tests/t0000-basic.sh:
- More than one bogus ^M[[:space:]]*^M had to be removed, hence
use s,,,g sed expression.
tests/t0203-gpt-tiny-device-abort.sh:
- Test was not expecting any output to stderr. No longer true.
tests/t1100-busy-label.sh:
- Another case of s,,,g as above.
tests/t7000-scripting.sh:
- Only testing output to stdout. Fold stdout & stderr together
and test both.
- Another case of s,,,g as above.
Some root tests still fail even with these fixes. The failures appear
to be unrelated to these changes.
Richard W.M. Jones [Wed, 12 Oct 2011 21:16:35 +0000 (22:16 +0100)]
parted: write a few errors and warnings to stderr instead of stdout
Richard W.M. Jones [Wed, 12 Oct 2011 21:16:34 +0000 (22:16 +0100)]
parted: strlist print functions can now send output to any FILE *
This changes the two strlist print functions so that instead of just
sending output to stdout, they can send it to any FILE *. Now the
caller can send errors to stderr instead of stdout.
Petr Uzel [Mon, 10 Oct 2011 13:53:09 +0000 (15:53 +0200)]
parted: make a warning message more informative
The following parted message is not very useful:
Error: You requested a partition from 2.00MiB to 3.00MiB.
The closest location we can manage is 2.00MiB to 3.00MiB.
Improve the message by including exact geometry (in sectors):
...requested a partition from 2.00MiB to 3.00MiB (sectors 2048..3072).
... location we can manage is 2.00MiB to 3.00MiB (sectors 2049..3072).
* parted/parted.c (do_mkpart): Include exact partition geometry in
the warning message.
* tests/t-lib-helpers.sh (normalize_part_diag_): Adapt to
handle the new form of the diagnostic.
* tests/t7000-scripting.sh: Adapt and change the name
of a temporary file.
Petr Uzel [Mon, 3 Oct 2011 15:15:32 +0000 (17:15 +0200)]
doc: update manpage
Remove documentation for removed commands, adjust general description to
match parted's capabilities, add documentation for 'toggle' and
'align-check' commands. Remove 'KNOWN ISSUES' section since it no longer
applies.
Petr Uzel [Mon, 3 Oct 2011 13:00:58 +0000 (15:00 +0200)]
tests: verify that 'udevadm settle' is available
* tests/init.cfg (require_udevadm_settle_): New function.
* tests/t8001-loop-blkpg.sh: Call it.
Petr Uzel [Wed, 28 Sep 2011 08:45:02 +0000 (10:45 +0200)]
libparted: do not omit last sector when creating full-dev geometry
Note that ped_constraint_solve_max() is currently not used anywhere.
* libparted/cs/constraint.c (ped_constraint_solve_max): full_dev now
really represents whole device.
Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
Petr Uzel [Wed, 28 Sep 2011 08:45:07 +0000 (10:45 +0200)]
maint: unmark PedDeviceType as deprecated
PedDeviceType was marked as deprecated before parted started using
git. Since it proved to be useful to differentiate between different
device types, and nobody seems interested in removing it from the API,
let's clear the deprecated flag.
Petr Uzel [Wed, 28 Sep 2011 08:45:08 +0000 (10:45 +0200)]
libparted: do not call _device_get_partition_range() twice
PED_MIN can evaluate its arguments twice.
* libparted/arch/linux.c (_disk_sync_part_table): Call
_device_get_partition_range() outside PED_MIN.
Petr Uzel [Wed, 28 Sep 2011 08:45:09 +0000 (10:45 +0200)]
libparted: optimize _disk_sync_part_table
In _disk_sync_part_table, if the largest partition number (lpn) is 0,
it does not make sense to go through the loops below. Return
immediately instead.
* libparted/arch/linux.c (_disk_sync_part_table): Return immediately
if lpn == 0.
Petr Uzel [Wed, 28 Sep 2011 08:45:03 +0000 (10:45 +0200)]
build: ignore more generated files
Petr Uzel [Wed, 28 Sep 2011 08:45:06 +0000 (10:45 +0200)]
parted: remove obsolete comments
is_start_exact and is_end_exact were removed from the source.
* parted/parted.c (constraint_from_start_end): Remove obsolete
documentation of the function.
Petr Uzel [Wed, 28 Sep 2011 08:45:05 +0000 (10:45 +0200)]
libparted: check return value from ped_geometry_init
If ped_geometry_init() failed in ped_disk_set_partition_geom(),
then new_geom remains uninitialized, but still later used, which
leads to unexpected results.
* libparted/disk.c (ped_disk_set_partition_geom): Check return
value from ped_geometry_init().
Petr Uzel [Thu, 29 Sep 2011 13:14:24 +0000 (15:14 +0200)]
tests: add test for partitionable loop devices
* tests/t8001-loop-blkpg.sh: New file.
* tests/Makefile.am: Add test.
Petr Uzel [Thu, 29 Sep 2011 13:14:23 +0000 (15:14 +0200)]
libparted: improve support for partitions on loopback devices
Since linux-2.6.26, the kernel allows partitions on loopback devices.
Implement support for this feature in parted.
* libparted/arch/linux.c (_sysfs_int_entry_from_dev): New function.
(_loop_get_partition_range): New function.
(_device_get_partition_range): Add special handling for loop devices.
* NEWS: Mention this change.
Petr Uzel [Thu, 29 Sep 2011 13:45:23 +0000 (15:45 +0200)]
libparted: differentiate between plain files and loop devices
Stop using PED_DEVICE_FILE for loopback devices;
loopback are significantly different from plain files.
* include/parted/device.h (PedDeviceType): Add PED_DEVICE_LOOP.
* libparted/arch/linux.c (_device_probe_type): Detect loopback device.
* parted/parted.c (do_print): Add "loopback" to list of transports.
Petr Uzel [Thu, 29 Sep 2011 09:38:30 +0000 (11:38 +0200)]
dvh: factor out read_sector and use ptt_read_sector
* libparted/labels/dvh.c (read_sector): Factor out this function.
(dvh_probe): Use ptt_read_sector instead of read_sector.
(dvh_read): Likewise.
Jim Meyering [Wed, 28 Sep 2011 13:19:52 +0000 (15:19 +0200)]
build: update gnulib to latest; adapt use of _GL_ATTRIBUTE_FORMAT
* libparted/arch/linux.c (_GL_ATTRIBUTE_FORMAT): Define here,
now that it's no longer defined by gnulib.
Jim Meyering [Wed, 28 Sep 2011 19:46:56 +0000 (21:46 +0200)]
build: avoid new syntax-check failure
* cfg.mk: Exempt libparted/arch/beos.c from the PATH_MAX check.
I suspect that this is ok, because parted compiles only on systems
that define PATH_MAX to something reasonable.
Jim Meyering [Sat, 25 Jun 2011 06:52:04 +0000 (08:52 +0200)]
doc: mention the origin of the other two bugs
* NEWS: Mention that the other two bugs were introduced long ago.
Jim Meyering [Wed, 28 Sep 2011 17:43:40 +0000 (19:43 +0200)]
tests: test for the nilfs2 bug
* tests/t4300-nilfs2-tiny.sh: New test.
* tests/Makefile.am (TESTS): Add it.
Jim Meyering [Sat, 25 Jun 2011 06:49:58 +0000 (08:49 +0200)]
libparted: fix a bug in the nilfs2 probe function
* libparted/fs/nilfs2/nilfs2.c (nilfs2_probe): Reject this partition
if we get a negative sb2 offset. Passing a negative offset to
ped_geometry_read_alloc would evoke a failed assertion.
Bug introduced by 2010-07-09 commit
d463e7de.
* NEWS: (Bug fixes): Mention it.
Reported by Daniel Fandrich in
http://thread.gmane.org/gmane.comp.gnu.parted.bugs/10466/focus=10472
Jim Meyering [Fri, 24 Jun 2011 11:32:33 +0000 (13:32 +0200)]
gpt: don't abort for a truncated GPT-formatted device
This fixes the problem two ways. The first fix (via gpt_alloc)
rejects any device that is too small, but it is insufficient.
Choose a slightly larger truncated device with an otherwise intact
primary GPT header and you can still trigger the failed assertion.
To fix it in general, we make _header_is_valid detect the problem.
* libparted/labels/gpt.c (gpt_alloc): Reject a device that is so
small that there is no room for a single partition.
(_header_is_valid): Validate LastUsableLBA here, as well, so that
we now reject as invalid any GPT header that specifies a
LastUsableLBA larger than the device size.
Leave the assertion in _parse_header.
* tests/t0203-gpt-tiny-device-abort.sh: Test for this.
* tests/Makefile.am (TESTS): Add it.
* NEWS: (Bug fixes): Mention it.
Reported by Daniel Fandrich in
http://thread.gmane.org/gmane.comp.gnu.parted.bugs/10466
Jim Meyering [Fri, 24 Jun 2011 13:51:57 +0000 (15:51 +0200)]
libparted: avoid invalid diagnostic in interactive mode
* libparted/arch/linux.c (linux_read): In interactive mode,
a truncated device with a preexisting GPT could evoke this:
Error: end of file while reading Success
it should have been like this:
Error: end of file while reading /full/name/of/device
Use %0.0s to discard the strerror argument.
Brian C. Lane [Tue, 21 Jun 2011 17:44:18 +0000 (10:44 -0700)]
tests: add test for value less than 1
* tests/t9023-value-lt-one.sh: New file.
* tests/Makefile.am (TESTS): Add it.
Brian C. Lane [Tue, 21 Jun 2011 17:44:17 +0000 (10:44 -0700)]
tests: add test for radius divide by 2 fix
* tests/t9022-one-unit-snap.sh: New file.
* tests/Makefile.am (TESTS): Add it.
Brian C. Lane [Tue, 21 Jun 2011 17:44:16 +0000 (10:44 -0700)]
libparted: don't allow values less than 1 (#665496)
When a value < 1 is used there is the possibility that the range can
overlap sector 0. The user should use smaller units instead. 0 is a
special case and is still allowed.
* libparted/unit.c (ped_unit_parse_custom): Throw error if a value
between 0 and 1 is used.
Brian C. Lane [Tue, 21 Jun 2011 17:44:15 +0000 (10:44 -0700)]
libparted: fix snap radius so that it is using half (#665496)
The snap radius didn't match the documentation, it has been using +/-
unit size instead +/- 0.5 * unit (eg. 500KB for a MB unit). This caused
problems when specifying 1MB, 1GB, etc. as a partition start or end
resulting in partitions being created that were nowhere near the
specified size.
* libparted/unit.c (ped_unit_parse_custom): divide radius by 2
This addresses http://bugzilla.redhat.com/665496
Jim Meyering [Fri, 10 Jun 2011 10:13:02 +0000 (12:13 +0200)]
maint: prefer AC_PROG_LIBTOOL over slightly deprecated AM_PROG_LIBTOOL
* configure.ac: Use AC_PROG_LIBTOOL rather than slightly deprecated
AM_PROG_LIBTOOL.
H. Peter Anvin [Tue, 7 Jun 2011 16:03:14 +0000 (18:03 +0200)]
libparted: simplify kernel version-parsing logic
* libparted/arch/linux.c: (_get_linux_version): Simplify and add
an assertion.
Jim Meyering [Sun, 5 Jun 2011 16:15:31 +0000 (18:15 +0200)]
libparted: accommodate two-component linux version number like 3.0
* libparted/arch/linux.c (_get_linux_version): Also accept 2-component
version numbers.
* NEWS: (Bug fixes): Mention it.
Reported by Richard W.M. Jones.
Jim Meyering [Mon, 30 May 2011 11:48:54 +0000 (13:48 +0200)]
post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.