OSDN Git Service

android-x86/external-parted.git
14 years agodasd: remove bogus part_info pointer from DasdPartitionData
Hans de Goede [Tue, 3 Nov 2009 12:08:57 +0000 (13:08 +0100)]
dasd: remove bogus part_info pointer from DasdPartitionData

The part_info pointer in DasdPartitionData was only used to
pass fdasd partition_info_t pointers from dasd_write to
the dasd_write dasd_update_type utility function. Since these
pointers are not valid outside the lifetime of dasd_write, they
should not be stored in the longer lived DasdPartitionData.

* libparted/labels/dasd.c(DasdPartitionData): Remove part_info member.
(dasd_read): Stop setting DasdPartitionData part_info.
(dasd_update_type): Add part_info argument to pass fdasd
partition_info_t pointers from dasd_write.
(dasd_write): Stop setting DasdPartitionData part_info, pass
partition_info_t pointers to dasd_update_type as a separate argument.

14 years agodasd: clean up anchor handling
Hans de Goede [Tue, 3 Nov 2009 12:08:56 +0000 (13:08 +0100)]
dasd: clean up anchor handling

The current dasd label code keeps an fdasd anchor struct in the
DasdDiskSpecific struct, and fills this during dasd_read. However this
anchor does not get updated with any future mods, until dasd_write,
at which points it gets completely re-initialized.

Since the contents of the anchor saved during read does not get used
anywhere else, this patch switches to using local anchor structs in
dasd_read and dasd_write. This will also allow writing a significantly
simpler duplicate implementation, then the one which is currently
added to the Fedora package with a patch from Joel Granados (The
current master dasd_duplicate implementation is not functional).

This patch also fixes several missing calls to fdasd_cleanup() fixing
several memory leaks.

* libparted/arch/linux.h (struct _LinuxSpecific): Drop anchor member.
* libparted/labels/dasd.c (DasdDiskSpecific): Drop anchor member.
(dasd_clobber): Add missing fdasd_cleanup().
(dasd_read, dasd_write): Use local anchor struct instead of a
dynamically allocated one in DasdDiskSpecific.
(dasd_read): Don't leak a PedConstraint in 2 error paths.
(dasd_update_type): Pass in the used anchor as argument.

14 years agotests: distribute new files, t-local.sh and t-lvm.sh
Jim Meyering [Tue, 3 Nov 2009 18:33:35 +0000 (19:33 +0100)]
tests: distribute new files, t-local.sh and t-lvm.sh

* tests/Makefile.am (EXTRA_DIST): Add t-local.sh and t-lvm.sh.

14 years agotests: appease "make syntax-check"
Jim Meyering [Tue, 3 Nov 2009 18:26:13 +0000 (19:26 +0100)]
tests: appease "make syntax-check"

* tests/print-align.c: Include "progname.h".  Call set_program_name.

14 years agotests: t6000-dm.sh: update and adapt to changed LVM2
Jim Meyering [Tue, 3 Nov 2009 17:25:33 +0000 (18:25 +0100)]
tests: t6000-dm.sh: update and adapt to changed LVM2

* tests/t6000-dm.sh: Rewrite to use new test framework and
to disable multipath testing, since LVM2 has changed in such
a way that it no longer works with loop devices.

14 years agotests: do not invoke scsi_debug_setup_ in a subshell
Jim Meyering [Tue, 3 Nov 2009 16:19:17 +0000 (17:19 +0100)]
tests: do not invoke scsi_debug_setup_ in a subshell

* tests/t9010-big-sector.sh: Do not invoke scsi_debug_setup_ in
a subshell, since it sets a variable that cleanup machinery expects
to see.
* tests/t9020-alignment.sh: Likewise.

14 years agotests: tweak temporary dirname prefix
Jim Meyering [Tue, 3 Nov 2009 15:42:01 +0000 (16:42 +0100)]
tests: tweak temporary dirname prefix

* tests/t-lib.sh (t_): Use "pe-" as prefix, not "gz-".

14 years agotests: update lvm-utils.sh from lvm2
Jim Meyering [Tue, 3 Nov 2009 15:40:39 +0000 (16:40 +0100)]
tests: update lvm-utils.sh from lvm2

* tests/lvm-utils.sh: Merge in changes from lvm2.

14 years agotests: adapt/update lvm-related infrasture, too
Jim Meyering [Tue, 3 Nov 2009 15:33:03 +0000 (16:33 +0100)]
tests: adapt/update lvm-related infrasture, too

* tests/t-local.sh: Source t-lvm.sh.
* tests/t-lvm.sh: Clone and update of lvm-utils.sh,
for when we retire that file in favor of this one.

14 years agotests: adapt t8000-loop.sh
Jim Meyering [Tue, 3 Nov 2009 15:31:11 +0000 (16:31 +0100)]
tests: adapt t8000-loop.sh

* tests/t8000-loop.sh: Rewrite in new style, and adjust to
expect new diagnostic.

14 years agotests: print and check partition alignment info, too
Jim Meyering [Tue, 3 Nov 2009 15:29:35 +0000 (16:29 +0100)]
tests: print and check partition alignment info, too

* tests/print-align.c: Print partition alignment info, too
* tests/t9020-alignment.sh: Check partition alignment too.

14 years agotests: serialize tests that use the scsi_debug module
Jim Meyering [Mon, 2 Nov 2009 18:44:40 +0000 (19:44 +0100)]
tests: serialize tests that use the scsi_debug module

* tests/t-local.sh (scsi_debug_lock_file_): New global.
(scsi_debug_acquire_lock_): New function.
(scsi_debug_setup_): Call it, to acquire the lock.
(scsi_debug_cleanup_): Release the lock.

14 years agotests: test the new alignment functions
Jim Meyering [Mon, 2 Nov 2009 14:34:34 +0000 (15:34 +0100)]
tests: test the new alignment functions

* tests/t9020-alignment.sh: New test.
* tests/Makefile.am (TESTS): Add it to the list.

14 years agotests: factor out some more
Jim Meyering [Mon, 2 Nov 2009 14:33:15 +0000 (15:33 +0100)]
tests: factor out some more

* tests/t-local.sh (require_scsi_debug_module_): New function.
* tests/t9010-big-sector.sh: Use it.

14 years agotests: perform scsi_debug cleanup automatically...
Jim Meyering [Mon, 2 Nov 2009 11:12:24 +0000 (12:12 +0100)]
tests: perform scsi_debug cleanup automatically...

...rather than requiring each test to do it.
* tests/t-lib.sh ($cleanup_eval): New variable.  Initialize.
(remove_tmp_): Use it.
* tests/t-local.sh: Record whether modprobe succeeded.
(cleanup_eval_): Append an invocation of scsi_debug_cleanup_
so that it is always run.
(scsi_debug_cleanup_): Run rmmod only if the modprobe succeeded.
* tests/t9010-big-sector.sh (cleanup_): Remove.

14 years agotests: move scsi_debug framework into shared script
Jim Meyering [Mon, 2 Nov 2009 10:35:02 +0000 (11:35 +0100)]
tests: move scsi_debug framework into shared script

* tests/t-local.sh (-scsi_debug_cleanup_, wait_for_dev_to_appear_):
(print_sd_names_, scsi_debug_setup_): New functions, factored out of ...
* tests/t9010-big-sector.sh: ...this file.

14 years agotests: document and begin to factor out scsi_debug framework
Jim Meyering [Mon, 2 Nov 2009 10:21:06 +0000 (11:21 +0100)]
tests: document and begin to factor out scsi_debug framework

* tests/t9010-big-sector.sh: Add comments, fix a bug in
"comm" usage, prepare to factor out scsi_debug framework.

14 years agotests: add a helper program to print alignment info for a device
Jim Meyering [Sat, 31 Oct 2009 23:56:30 +0000 (00:56 +0100)]
tests: add a helper program to print alignment info for a device

* tests/print-align.c: New file.
* tests/Makefile.am (check_PROGRAMS): Define.
(AM_CPPFLAGS, LDADD): Define.
(AM_CFLAGS): Enable warnings here, too, by adding
$(WARN_CFLAGS) and $(WERROR_CFLAGS).

14 years agoImplement get_partition_alignment DiskOp for all labels which need it
Hans de Goede [Fri, 30 Oct 2009 11:59:05 +0000 (12:59 +0100)]
Implement get_partition_alignment DiskOp for all labels which need it

Implement get_partition_alignment DiskOp for all labels which require
an alignment with a grain_size != 1.

14 years agolibparted: add ped_disk_get_partition_alignment() function
Hans de Goede [Fri, 30 Oct 2009 11:59:04 +0000 (12:59 +0100)]
libparted: add ped_disk_get_partition_alignment() function

This functions get the alignment needed for partition boundaries on this disk.
The returned alignment describes the alignment for the start sector of the
partition, for all disklabel types which require alignment, except Sun
disklabels, the end sector must be aligned too. To get the end sector
alignment decrease the PedAlignment offset by 1.

14 years agolibparted: add ped_device_get_xxx_aligned_constraint() functions
Hans de Goede [Fri, 30 Oct 2009 11:59:03 +0000 (12:59 +0100)]
libparted: add ped_device_get_xxx_aligned_constraint() functions

Add ped_device_get_minimal_aligned_constraint() and
ped_device_get_optimal_aligned_constraint() functions to libparted.

These functions can be used to get a device constraint taking alignment into
account.

14 years agoped_device_get_constraint: return constraint without alignment
Hans de Goede [Fri, 30 Oct 2009 11:59:02 +0000 (12:59 +0100)]
ped_device_get_constraint: return constraint without alignment

In libparted-1.9 ped_device_get_constraint() would always return a constraint
without any start / end aligning (grain_size == 1). Now that we are starting to
support disks with a physical sector size other then 512, the old
ped_device_get_constraint() code may actually start returning constrains
with alignment info with a grain_size != 1.

Since this is a behavior change and since the old code does not take a possible
alignment info into account, this patch removes the aligning code from
ped_device_get_constraint(), so that its behavior is unchanged.

This patch also updates the functions doxygen documentation to reflect what
it has actually done all these years.

14 years agolinux: add get_xxx_alignment() functions
Hans de Goede [Fri, 30 Oct 2009 11:59:01 +0000 (12:59 +0100)]
linux: add get_xxx_alignment() functions

* libparted/arch/linux.c (get_minimum_alignment): New function.
(get_optimum_alignment): New function.

14 years agolinux: save blkid topology in arch_specific data for later use
Hans de Goede [Fri, 30 Oct 2009 11:59:00 +0000 (12:59 +0100)]
linux: save blkid topology in arch_specific data for later use

This is a preparation patch for adding get_minimum_alignment
and get_optimum_alignment functions to linux's _PedDeviceArchOps.
* libparted/arch/linux.h (struct_LinuxSpecific) [probe, topology]:
Add members.
* libparted/arch/linux.c (linux_new): initialize
arch_specific->probe and arch_specific->topology to NULL,
(linux_destroy): Free arch_specific->probe.
(get_minimum_io_size): Remove function.
(get_blkid_topology): New function.
(_device_set_sector_size): Call get_blkid_topology() instead of
get_minimum_io_size() and retrieve minimum io size from the cached
topology.

14 years agolibparted: add ped_device_get_xxx_alignment() functions
Hans de Goede [Fri, 30 Oct 2009 11:58:59 +0000 (12:58 +0100)]
libparted: add ped_device_get_xxx_alignment() functions

Add ped_device_get_minimum_alignment() and ped_device_get_optimum_alignment()
functions to libparted.

Note this is a resent of my previous patchset with a number of typos corrected:
aligment -> alignment
minimal_alignment -> minimum_aligment
optimal_alignment -> optimum_aligment

Sorry for the noise.

14 years agotests: protect t7000 from the environment
Jim Meyering [Thu, 29 Oct 2009 12:29:26 +0000 (13:29 +0100)]
tests: protect t7000 from the environment

* tests/t7000-scripting.sh: Initialize fail=0, so that an
environment setting cannot perturb the test.

14 years agotests: convert to new testing framework
Jim Meyering [Thu, 29 Oct 2009 11:34:08 +0000 (12:34 +0100)]
tests: convert to new testing framework

* tests/t0200-gpt.sh: Convert to new testing framework.
* tests/t0201-gpt.sh: Likewise.
* tests/t0300-dos-on-gpt.sh: Likewise.
* tests/t0100-print.sh: Likewise.
* tests/t0250-gpt.sh: Likewise.

14 years agodvh: document an as-yet-unplugged (but not serious) leak
Jim Meyering [Thu, 29 Oct 2009 11:22:25 +0000 (12:22 +0100)]
dvh: document an as-yet-unplugged (but not serious) leak

* libparted/disk.c (ped_disk_add_partition): List some of the
things I've tried to plug a leak exposed by a root-only test
on dvh's partition-creation error path.  This leak is enough
of a corner case that I may even leave it for now, and add a
suppression for it, so that we're not distracted by it.

14 years agodvh: plug three constraint-sized leaks
Jim Meyering [Wed, 28 Oct 2009 16:25:46 +0000 (17:25 +0100)]
dvh: plug three constraint-sized leaks

* libparted/labels/dvh.c (dvh_read, dvh_alloc_metadata):
Free constraint upon failure, too.

14 years agoui: plug multiple command_line_get_word leaks
Jim Meyering [Wed, 28 Oct 2009 15:40:07 +0000 (16:40 +0100)]
ui: plug multiple command_line_get_word leaks

* parted/parted.c (do_mkpart, do_print):

14 years agocheck: plug an even smaller (formatted "unit") leak
Jim Meyering [Wed, 28 Oct 2009 15:37:07 +0000 (16:37 +0100)]
check: plug an even smaller (formatted "unit") leak

* libparted/disk.c (ped_disk_check): Free fs_size also upon success.

14 years agocheck: plug a geometry-sized leak
Jim Meyering [Wed, 28 Oct 2009 15:19:43 +0000 (16:19 +0100)]
check: plug a geometry-sized leak

* libparted/disk.c (ped_disk_check): Destroy "geom", when done with it.

14 years agoloop: don't leak a sector in loop_clobber
Jim Meyering [Wed, 28 Oct 2009 15:03:11 +0000 (16:03 +0100)]
loop: don't leak a sector in loop_clobber

* libparted/labels/loop.c (loop_clobber): Replace leaky open-coded
version with a use of Use ptt_clear_sectors.

14 years agotests: t7000: remove mkpartfs tests
Jim Meyering [Fri, 18 Sep 2009 06:40:54 +0000 (08:40 +0200)]
tests: t7000: remove mkpartfs tests

This test tested both mkpart and mkpartfs.
* tests/t7000-scripting.sh: Remove the mkpartfs tests.

14 years agotests: remove tests that are too FS-centric
Jim Meyering [Thu, 17 Sep 2009 18:12:50 +0000 (20:12 +0200)]
tests: remove tests that are too FS-centric

* tests/t1000-mkpartfs.sh: Remove file.
* tests/t1500-small-ext2.sh: Likewise.
* tests/t2000-mkfs.sh: Likewise.
* tests/t3100-resize-ext2-partion.sh: Likewise.
* tests/t3000-constraints.sh: Likewise.
* tests/Makefile.am (TESTS): Remove them here, too.

14 years agoui: plug a constraint leak in do_mkpart
Jim Meyering [Tue, 27 Oct 2009 22:10:35 +0000 (23:10 +0100)]
ui: plug a constraint leak in do_mkpart

* parted/parted.c (do_mkpart): Free constraint after using it to
add partition.

14 years agogpt: plug two gpt-header leaks in gpt_read_headers
Jim Meyering [Tue, 27 Oct 2009 21:44:04 +0000 (22:44 +0100)]
gpt: plug two gpt-header leaks in gpt_read_headers

* libparted/labels/gpt.c (gpt_read_headers): Free locals pri and/or
bak if they are not valid.

14 years agogpt: plug a 1-sector leak in gpt_read_headers
Jim Meyering [Tue, 27 Oct 2009 21:38:02 +0000 (22:38 +0100)]
gpt: plug a 1-sector leak in gpt_read_headers

* libparted/labels/gpt.c (gpt_read_headers): Free a sector.

14 years agoui: plug a leak (partition_print_flags)
Jim Meyering [Tue, 27 Oct 2009 20:42:25 +0000 (21:42 +0100)]
ui: plug a leak (partition_print_flags)

* parted/parted.c (do_print): Free flags, after printing.

14 years agolibparted: plug an FS-alias-related leak
Jim Meyering [Tue, 27 Oct 2009 20:36:30 +0000 (21:36 +0100)]
libparted: plug an FS-alias-related leak

* libparted/filesys.c (ped_file_system_alias_unregister):
Free the alias we've just unregistered.

14 years agodoc: update NEWS
Jim Meyering [Mon, 26 Oct 2009 14:34:55 +0000 (15:34 +0100)]
doc: update NEWS

* NEWS (Bug fixes): Describe two.

14 years agogpt: header validity: also consider whether a PE array crc matches
Jim Meyering [Fri, 23 Oct 2009 14:32:20 +0000 (16:32 +0200)]
gpt: header validity: also consider whether a PE array crc matches

* libparted/labels/gpt.c (check_PE_array_CRC): New function.
(_header_is_valid): Use it to verify that partition entry array
checksums match, too.
Karel Zak noticed that this check was not being performed.
* tests/t0280-gpt-corrupt.sh: Adapt to changed diagnostic.

14 years agogpt: tweak interfaces to pass disk, not disk->dev
Jim Meyering [Fri, 23 Oct 2009 14:15:19 +0000 (16:15 +0200)]
gpt: tweak interfaces to pass disk, not disk->dev

* libparted/labels/gpt.c: required for upcoming CRC-checking function.

14 years agogpt: don't ignore an improbable (1-in-2^32) failure
Jim Meyering [Fri, 23 Oct 2009 10:48:11 +0000 (12:48 +0200)]
gpt: don't ignore an improbable (1-in-2^32) failure

pth_crc32 mapped failure to a crc32 value of 0.  If that happened
to match the stored value, there would be no indication that there
had been a malloc failure.
* libparted/labels/gpt.c (pth_crc32): Change interface so we can
distinguish failure from a CRC value of 0.
Update all callers.
(_generate_header): Now that we recognize pth_crc32 can fail,
we must admit that its void-returning caller _generate_header
may fail, too.  Return "int" and adjust *its* callers.

14 years agogpt: factor out code that is about to be reused
Jim Meyering [Thu, 22 Oct 2009 20:14:03 +0000 (22:14 +0200)]
gpt: factor out code that is about to be reused

* libparted/labels/gpt.c: Include <errno.h>.
(gpt_read_PE_array): New function, ...
(gpt_read): ...factored out of this one.  Use it.

14 years agogpt: don't dereference NULL upon OOM (pth_get_raw callers)
Jim Meyering [Thu, 22 Oct 2009 19:46:00 +0000 (21:46 +0200)]
gpt: don't dereference NULL upon OOM (pth_get_raw callers)

Handle each case in which pth_get_raw may return NULL.
* libparted/labels/gpt.c (pth_get_raw): Upon OOM error, return 0
rather than dereferencing NULL.
(gpt_write): Don't dereference NULL upon OOM error.
(gpt_read): Yet another.

14 years agogpt: don't dereference NULL upon OOM (in pth_get_raw)
Jim Meyering [Thu, 22 Oct 2009 19:34:48 +0000 (21:34 +0200)]
gpt: don't dereference NULL upon OOM (in pth_get_raw)

* libparted/labels/gpt.c (pth_get_raw): Don't dereference NULL
on out of memory error.

14 years agogpt: remove dead store
Jim Meyering [Thu, 22 Oct 2009 19:26:26 +0000 (21:26 +0200)]
gpt: remove dead store

* libparted/labels/gpt.c (pth_crc32): Remove useless initialization.

14 years agogpt: make an internal function "const"-correct
Jim Meyering [Thu, 22 Oct 2009 18:55:39 +0000 (20:55 +0200)]
gpt: make an internal function "const"-correct

* libparted/labels/gpt.c (_parse_header): Make "gpt" const.

14 years agotests: convert t0280 to new test style.
Jim Meyering [Thu, 22 Oct 2009 18:18:48 +0000 (20:18 +0200)]
tests: convert t0280 to new test style.

* tests/t0280-gpt-corrupt.sh: Convert to new test style.
* tests/t-lib.sh: Source t-local.sh.
* tests/t-local.sh: New file.

14 years agogpt: clean up
Jim Meyering [Thu, 22 Oct 2009 16:08:57 +0000 (18:08 +0200)]
gpt: clean up

* libparted/labels/gpt.c (gpt_probe): Remove now-useless test before
pth_free.
(gpt_read): Use ptt_clear_sectors in place of open-coded equivalent.
* cfg.mk (useless_free_options): Add --name=pth_free.

14 years agogpt: make its header check a tiny bit more strict
Jim Meyering [Thu, 22 Oct 2009 09:35:44 +0000 (11:35 +0200)]
gpt: make its header check a tiny bit more strict

* libparted/labels/gpt.c (_header_is_valid): Declare a header
to be invalid if its AlternateLBA is the same as MyLBA.

2009-10-21  Jim Meyering  <meyering@redhat.com>

complete most of gpt-CRC-related rewrite
* libparted/labels/gpt.c (_read_header): Remove now-unused function.

14 years agot0280-gpt-corrupt.sh: adapt for new output, improve test
Jim Meyering [Wed, 21 Oct 2009 16:21:07 +0000 (18:21 +0200)]
t0280-gpt-corrupt.sh: adapt for new output, improve test

14 years agogpt: rewrite GPT header-reading code
Jim Meyering [Wed, 21 Oct 2009 11:33:20 +0000 (13:33 +0200)]
gpt: rewrite GPT header-reading code

* libparted/labels/gpt.c (read_header): Remove now-unused function.
(gpt_read_headers): New function.
(gpt_read): Rewrite to use gpt_read_headers.

14 years agogpt: require that the backup table's AlternateLBA is 1
Jim Meyering [Mon, 19 Oct 2009 18:14:44 +0000 (20:14 +0200)]
gpt: require that the backup table's AlternateLBA is 1

* libparted/labels/gpt.c (_header_is_valid): When checking
the backup header, ensure that its AlternateLBA is 1.

14 years agotests: gpt: test for detection of corrupt backup partition header
Jim Meyering [Mon, 19 Oct 2009 18:12:41 +0000 (20:12 +0200)]
tests: gpt: test for detection of corrupt backup partition header

* tests/t0280-gpt-corrupt.sh: Corrupt the backup partition header's
MyLBA, and require that an attempt to print the table fails.

14 years agotests: hook up new GPT-crc-corrupting script
Jim Meyering [Mon, 19 Oct 2009 16:55:06 +0000 (18:55 +0200)]
tests: hook up new GPT-crc-corrupting script

* tests/Makefile.am (TESTS): Add t0280-gpt-corrupt.sh.
* libparted/labels/gpt.c (gpt_read): Change diagnostic to say that
the PTE CRC mismatch is in the primary table.
* tests/t0280-gpt-corrupt.sh: Tweak diagnostic to match
what the code now prints.

14 years agogpt: also verify MyLBA when checking table validity
Jim Meyering [Mon, 19 Oct 2009 16:47:00 +0000 (18:47 +0200)]
gpt: also verify MyLBA when checking table validity

* libparted/labels/gpt.c (_header_is_valid): Add parameter, my_lba.
(_read_header): Update caller.
(_parse_header): Comment out this use of _header_is_valid
in an assertion.

14 years agogpt: clean up formatting of static initializers
Jim Meyering [Mon, 19 Oct 2009 16:03:46 +0000 (18:03 +0200)]
gpt: clean up formatting of static initializers

* libparted/labels/gpt.c (NULL_IF_DISCOVER_ONLY): Define.
(gpt_disk_ops): Use it to avoid in-decl #if directives.

14 years agogpt.c: filter through indent --no-tabs...
Jim Meyering [Mon, 19 Oct 2009 15:34:19 +0000 (17:34 +0200)]
gpt.c: filter through indent --no-tabs...

and manual fix-up to shorten long lines.
Also, manually format the static initializers in e.g., gpt_disk_ops,
since GNU indent botches that.

14 years agogpt: add a comment
Jim Meyering [Mon, 19 Oct 2009 14:56:21 +0000 (16:56 +0200)]
gpt: add a comment

* libparted/labels/gpt.c (_header_is_valid): Add a comment to explain
the new partition entry size limitation of UINT32_MAX/16.

14 years agobuild: update gnulib submodule to latest
Jim Meyering [Mon, 19 Oct 2009 12:41:00 +0000 (14:41 +0200)]
build: update gnulib submodule to latest

14 years agotests: use scsi_debug to test-for 4k-sector-specific bug
Jim Meyering [Fri, 16 Oct 2009 17:14:38 +0000 (19:14 +0200)]
tests: use scsi_debug to test-for 4k-sector-specific bug

* tests/t9010-big-sector.sh: New root-only test.
Requires 2.6.31, and the scsi_debug module, /sys/block/... support
and an upcoming version of libblkid.
* tests/Makefile.am (TESTS): Add t9010-big-sector.sh.
Thanks to Mike Snitzer for advice and for pointing me to similar
code he wrote to test LVM.

14 years agotests: begin the transition to coreutils' testing framework
Jim Meyering [Mon, 19 Oct 2009 10:03:20 +0000 (12:03 +0200)]
tests: begin the transition to coreutils' testing framework

The existing testing framework makes it hard to diagnose test failures,
so I'm switching to one that works better for me, from coreutils.
* tests/t-lib.sh: New file.  Mostly from coreutils/tests/test-lib.sh.
* tests/Makefile.am (TMPDIR): Update to pass more info to test scripts.
(EXTRA_DIST): Add t-lib.sh.

14 years agolinux: use libblkid to determine ->phys_sector_size
Jim Meyering [Thu, 15 Oct 2009 19:29:36 +0000 (21:29 +0200)]
linux: use libblkid to determine ->phys_sector_size

Before this change, creating a memory-mapped disk on a fedora-based
system running 2.6.31.1-56.fc12.x86_64 using this command:
modprobe scsi_debug dev_size_mb=1025 sector_size=4096
and then running "parted -s /dev/sdd mklabel gpt print"
would mistakenly print "Sector size (logical/physical): 4096B/512B"
The "512B" is what's wrong.  It should be "4096B".
* configure.ac: Test for a new-enough blkid library.
* libparted/Makefile.am (libparted_la_LIBADD): Add $(LIB_BLKID).
* libparted/arch/linux.c (get_minimum_io_size): New function.
(_device_set_sector_size): Use it.

14 years agolibparted: weaken a diagnostic
Jim Meyering [Wed, 14 Oct 2009 18:53:48 +0000 (20:53 +0200)]
libparted: weaken a diagnostic

* libparted/arch/linux.c (_kernel_reread_part_table): Give a more
accurate diagnostic.  Reported by Curtis Gedak.

14 years agogpt: verify CRC32 of partition table entry array, too
Jim Meyering [Wed, 14 Oct 2009 18:50:39 +0000 (20:50 +0200)]
gpt: verify CRC32 of partition table entry array, too

The partition table entry array's CRC was not being verified at all.
This adds an interim check.  The full-blown change required to make
this implementation conform to the EFI spec will be more invasive.
* libparted/labels/gpt.c (gpt_read): Check CRC of PTE array, too.
* tests/t0280-gpt-corrupt.sh: New test for this.
Reported by Karel Zak.

14 years agodoc: mention the "bios_grub" flag
Jim Meyering [Wed, 14 Oct 2009 10:34:56 +0000 (12:34 +0200)]
doc: mention the "bios_grub" flag

I don't like the idea of documenting this "flag setting" option,
but it's been in the code for long enough now, and in actual use,
that I feel obliged.  In the longer term, we'll probably deprecate
it and instead add an interface to set a partition's type independent
of mkpart's "type" argument.
* doc/parted.texi (set): Mention bios_grub.

14 years agotests: gpt: do not munge GPT data manually
Jim Meyering [Wed, 14 Oct 2009 09:36:47 +0000 (11:36 +0200)]
tests: gpt: do not munge GPT data manually

Otherwise, an upcoming change would cause this test to fail.
* tests/t5000-tags.sh: Do not munge GPT data manually, since that
does not update embedded CRCs, and thus renders it invalid.
Set the attribute via "set 1 bios_grub on" instead.
Also, use "name1" as the partition name, rather than the
misleading "primary".
Adjust diagnostics: the changes we make are no longer "manual."

14 years agolibparted: fix big-endian bug in gpt_get_max_supported_partition_count
Jim Meyering [Thu, 8 Oct 2009 20:03:37 +0000 (22:03 +0200)]
libparted: fix big-endian bug in gpt_get_max_supported_partition_count

* libparted/labels/gpt.c (gpt_get_max_supported_partition_count):
Convert ->SizeOfPartitionEntry from little-endian to CPU endianness
here, too.  This is along the same lines as commit d6e9b3bb, but
with the difference that this code is not reachable via the
command-line interface.

14 years agopost-release administrivia
Jim Meyering [Tue, 6 Oct 2009 18:38:19 +0000 (20:38 +0200)]
post-release administrivia

* NEWS: Add header line for next release.
* .prev-version: Record previous version.
* cfg.mk (old_NEWS_hash): Auto-update.

14 years agoversion 2.0
Jim Meyering [Tue, 6 Oct 2009 18:29:16 +0000 (20:29 +0200)]
version 2.0

* NEWS: Record release date.

14 years agogpt: don't malfunction on big-endian systems
Jim Meyering [Tue, 6 Oct 2009 18:10:00 +0000 (20:10 +0200)]
gpt: don't malfunction on big-endian systems

Numerous GPT tests would fail when run on e.g., big-endian PPC.
* libparted/labels/gpt.c (gpt_read): Now that we use the
SizeOfPartitionEntry member, be sure to convert from GPT's
little-endian on-disk format to to CPU endianness.
This bug was introduced via commit 14cce9b2, 2009-06-10, "gpt:
fix gpt_read to read all of the partition entries correctly".
* libparted/labels/gpt.c (_header_is_valid): Also convert it here.
Add a test to ensure that the partition entry size is no larger
than the slightly arbitrary UINT32_MAX/16.
* NEWS (Bug fixes): Mention it.

14 years agobuild: update gnulib submodule to latest
Jim Meyering [Tue, 6 Oct 2009 14:56:45 +0000 (16:56 +0200)]
build: update gnulib submodule to latest

14 years agomaint: add gnulib's gnu-web-doc-update module
Jim Meyering [Tue, 6 Oct 2009 14:39:13 +0000 (16:39 +0200)]
maint: add gnulib's gnu-web-doc-update module

* bootstrap.conf (gnulib_modules): Add gnu-web-doc-update

14 years agodoc: add pointer to NEWS in README
Jim Meyering [Tue, 6 Oct 2009 14:26:00 +0000 (16:26 +0200)]
doc: add pointer to NEWS in README

* README: Mention NEWS.

14 years agodoc: update README
Jim Meyering [Tue, 6 Oct 2009 14:23:19 +0000 (16:23 +0200)]
doc: update README

* README (WARNING): Mention upcoming removal of FS-manipulation
capabilities and that we'll retain FAT/HFS resize capabilities.
Remove an obsolete URL.  Do not encourage email to individuals.
Update info-viewing instructions, provide the on-line doc URL.

14 years agotests: resize FAT and HFS file systems
Jim Meyering [Sat, 19 Sep 2009 06:22:20 +0000 (08:22 +0200)]
tests: resize FAT and HFS file systems

Since it looks like we're stuck with keeping at least FAT and HFS
file-system resizing support in libparted, we have an obligation to
exercise at least some of that functionality.  For now, I've limited
this test to shrinking well-aligned partitions by a well-behaved
amount.  Curtis Gedak helped come up with a usable test.

* tests/t3000-resize-fs.sh: New file.
Use starting partition offset that is on a cylinder boundary,
and increase the partition size to be larger than 256 MiB.
When resizing, choose the new size to be exactly one cylinder
(8MiB) smaller than the original.

14 years agoped_partition_busy: do not call the libparted exception handler
Hans de Goede [Tue, 6 Oct 2009 09:31:14 +0000 (11:31 +0200)]
ped_partition_busy: do not call the libparted exception handler

Modify libparted/arch/linux.c _partition_get_part_dev() to not call
_device_stat() but instead use stat directly, as _device_stat() calls
the libparted exception handler, and we don't want this here, the only
caller of _partition_get_part_dev() is _partition_is_mounted(), which
in turn only gets called by linux_partition_is_busy(), and we don't
want to "throw" exceptions from ped_partition_busy().

This issue was noticed in combination with pyparted as used by
anaconda, see: http://bugzilla.redhat.com/527035#c10

14 years agodoc: mention the GPT/msftres bug fix
Jim Meyering [Thu, 1 Oct 2009 18:00:32 +0000 (20:00 +0200)]
doc: mention the GPT/msftres bug fix

* NEWS (Bug fixes): Mention it.

14 years agoparted: issue a warning upon any use of a file-system op
Jim Meyering [Thu, 1 Oct 2009 13:01:52 +0000 (15:01 +0200)]
parted: issue a warning upon any use of a file-system op

* parted/parted.c (issue_fs_op_warning): New function.
(do_cp, do_mkfs, do_mkpartfs, do_move, do_resize, do_check): Call it.
* tests/test-lib.sh: Export the envvar setting,
PARTED_SUPPRESS_FILE_SYSTEM_MANIPULATION_WARNING=1 to suppress
those warnings while running the few remaining FS-related tests.

14 years agomaint: avoid false-positive NULL-deref warning from clang
Jim Meyering [Wed, 30 Sep 2009 09:42:32 +0000 (11:42 +0200)]
maint: avoid false-positive NULL-deref warning from clang

* parted/ui.c: Include <assert.h>.
(command_line_get_disk): Add an assertion that command_line_get_device
currently guarantees will always be true.  This placates clang regarding
its sole NULL-deref warning.
(command_line_get_device): Move declarations "down" to first use.

14 years agobuild: use more gnulib modules for better POSIX compliance
Jim Meyering [Thu, 17 Sep 2009 12:15:01 +0000 (14:15 +0200)]
build: use more gnulib modules for better POSIX compliance

* bootstrap.conf (gnulib_modules): Add modules exposed via
make CFLAGS=-DGNULIB_POSIXCHECK 2>&1 \
|perl -lne '/.* use gnulib module (\S+).*/ and print $1' \
|sort |uniq -c|sort -nr
Add these: close fsync lseek mkstemp strdup unlink

14 years agomaint: function returning "int", did not return a value.
Jim Meyering [Tue, 29 Sep 2009 20:02:56 +0000 (22:02 +0200)]
maint: function returning "int", did not return a value.

* parted/ui.c (init_readline): Return a value (always 0 for now).
* parted/parted.c (_init): Handle init_readline's return value.

14 years agomaint: remove more dead stores and fix a bug in do_mkpartfs
Jim Meyering [Tue, 29 Sep 2009 19:49:55 +0000 (21:49 +0200)]
maint: remove more dead stores and fix a bug in do_mkpartfs

* libparted/fs/ext2/ext2_mkfs.c (ext2_mkfs_create_lost_and_found_inode):
Punt: suppress clang's (aka scan-build's) warning.
* parted/parted.c (snap_to_boundaries): Remove a dead store.
(do_mkpartfs): The apparent dead store to part_name exposed a real bug.
In fact, it highlighted that while do_mkpart uses its "part_name"
variable (and calls ped_partition_set_name), do_mkpartfs did not.
(snap_to_boundaries): Remove dead store.
* libparted/unit.c (parse_chs): Likewise, and a leak.
* libparted/fs/hfs/reloc_plus.c (hfsplus_cache_from_catalog): Likewise.
(hfsplus_cache_from_extent): Remove a dead store.
(hfsplus_cache_from_attributes): Likewise.
* libparted/fs/hfs/advfs_plus.c (hfsplus_btree_search): Likewise.
* libparted/fs/ext2/ext2_block_relocator.c (ext2_block_relocate_shrink):
Remove dead store and corresponding decl.
* parted/ui.h: Mark 2nd parameter as non-null.

14 years agomaint: remove dead store code and declarations
Jim Meyering [Tue, 29 Sep 2009 19:29:00 +0000 (21:29 +0200)]
maint: remove dead store code and declarations

* libparted/labels/bsd.c (bsd_partition_set_flag): Remove dead store
and corresponding decl.
* libparted/arch/linux.c (init_ide): Likewise.
(_dm_maptype): Likewise.
(_mount_table_search): Likewise.
* libparted/fs/amiga/asfs.c (_asfs_probe): Likewise.
* libparted/labels/mac.c (mac_alloc_metadata): Likewise.
* libparted/labels/rdb.c (amiga_write): Likewise.
(amiga_write): Again.
* libparted/fs/amiga/apfs.c (_generic_apfs_probe): Likewise.
* libparted/fs/hfs/reloc_plus.c (hfsplus_effect_move_extent): Likewise.
* libparted/fs/hfs/reloc.c (hfs_effect_move_extent): Likewise.
* libparted/labels/dos.c (probe_partition_for_geom): Remove dead
store in "can't happen" case.

14 years agomake PED_ASSERT handling sane: abort on false condition
Jim Meyering [Wed, 30 Sep 2009 09:10:15 +0000 (11:10 +0200)]
make PED_ASSERT handling sane: abort on false condition

Upon a failed PED_ASSERT, Do not ask the interactive user if they want
to continue.  This change will affect any code that expects to be able
to continue after a failed PED_ASSERT condition.  However, such code is
so fundamentally broken that this change is required.  If you require
to be able to continue after a false condition, then the code must
not use a macro named like PED_ASSERT.  This change was motivated by
my desire to use the clang static analysis tool.  Without this change,
there were over 300 mostly-false-positive reports.  With it, just 31,
almost all legitimate.
* libparted/debug.c (ped_assert): Remove first parameter.
It is now tested via the macro.
Now, this function always aborts, which helps clang understand.
Do not ask the interactive user if s/he wants to continue.
* include/parted/debug.h (PED_ASSERT): Test condition here,
not in ped_assert.
* libparted/disk.c (ped_disk_remove_partition): Remove the label
that was used only upon failing PED_ASSERT.  Now that PED_ASSERT
always aborts for a false condition, that would have been dead code.
(ped_disk_new_fresh): Likewise.

14 years agobuild: avoid a shadowing warning
Jim Meyering [Thu, 1 Oct 2009 10:03:07 +0000 (12:03 +0200)]
build: avoid a shadowing warning

* libparted/fs/hfs/advfs_plus.c (hfsplus_get_empty_end): Rename local,
"link" to avoid shadowing the syscall.
* libparted/fs/hfs/advfs.c (hfs_get_empty_end): Likewise.

14 years agofat-FS: do not modify fat file system support
Jim Meyering [Fri, 25 Sep 2009 06:53:30 +0000 (08:53 +0200)]
fat-FS: do not modify fat file system support

Revert "Add fat support for sector_size > 512."
This reverts commit 14395c356664a3b88f3929a6a3ad69bca374f70d.

14 years agoRevert "Fix compile failures."
Jim Meyering [Fri, 25 Sep 2009 06:53:18 +0000 (08:53 +0200)]
Revert "Fix compile failures."

This reverts commit 7603e404ee60f2f892be380a23c390f4638f451f.

14 years agodoc: update NEWS
Jim Meyering [Tue, 29 Sep 2009 15:16:59 +0000 (17:16 +0200)]
doc: update NEWS

* NEWS: Mention >512-byte sector support.

14 years agobuild: use newer bootstrap script
Jim Meyering [Tue, 29 Sep 2009 14:58:41 +0000 (16:58 +0200)]
build: use newer bootstrap script

* bootstrap: Update from coreutils.

14 years agobuild: update gnulib submodule to latest
Jim Meyering [Tue, 29 Sep 2009 14:57:08 +0000 (16:57 +0200)]
build: update gnulib submodule to latest

14 years agomaint: update most copyright year lists to include 2009
Jim Meyering [Tue, 29 Sep 2009 14:55:37 +0000 (16:55 +0200)]
maint: update most copyright year lists to include 2009

I used this command:
make update-copyright \
  UPDATE_COPYRIGHT_FORCE=1 UPDATE_COPYRIGHT_USE_INTERVALS=1

14 years agotests: enable more syntax-checks
Jim Meyering [Tue, 29 Sep 2009 14:52:18 +0000 (16:52 +0200)]
tests: enable more syntax-checks

* cfg.mk: Enable a few more tests.
* include/parted/debug.h: Remove useless parens to avoid
triggering failure of the sc_useless_cpp_parens syntax-check.
* libparted/arch/linux.h: Likewise.
* libparted/libparted.c: Likewise.

14 years agotests: enable a few syntax-checks
Jim Meyering [Tue, 29 Sep 2009 14:46:16 +0000 (16:46 +0200)]
tests: enable a few syntax-checks

* cfg.mk (local-checks-to-skip): Remove a few useless exclusions
and enable a few syntax checks.
* libparted/arch/linux.c (linux_destroy): Avoid triggering the
sc_cast_of_argument_to_free check.
* parted/strlist.c (str_list_destroy_node): Likewise.

14 years agotests: gpt: exercise creating all partition types; check for msftres bug
Jim Meyering [Thu, 24 Sep 2009 17:56:37 +0000 (19:56 +0200)]
tests: gpt: exercise creating all partition types; check for msftres bug

Ensure that a newly-created partition in a GPT partition table has no
'flag' set, by default.  This test also exercises setting the "name"
on a partition and creates one partition of each supported type.
* tests/t0220-gpt-msftres.sh: New file.
* tests/Makefile.am (TESTS): Add that new file.

14 years agogpt: don't use msftres flag for FAT/NTFS partitions
Keshav P R [Fri, 18 Sep 2009 11:07:51 +0000 (16:37 +0530)]
gpt: don't use msftres flag for FAT/NTFS partitions

This patch corrects the bug in parted due to which any FAT(12,16,32)
or NTFS partition(s) is, by default, incorrectly set as "Microsoft
Reserved Partition" type in GPT disks.  With this change, parted
defaults to setting the FAT/NTFS Partitions partition type to
Linux/Windows Basic Data Partition which will make them accessible
in Mac OS X and Windows.

Reported by hramrach@centrum.cz in <http://bugs.debian.org/441033>,
with suggested change by Osamu Aoki <osamu@debian.org>.
Keshav P R <skodabenz@rocketmail.com> wrote the above and prepared
this patch.

14 years agoui: do not initialize readline (which would output!) in --script mode
Jim Meyering [Thu, 24 Sep 2009 16:46:45 +0000 (18:46 +0200)]
ui: do not initialize readline (which would output!) in --script mode

Running parted with its --script (-s) option would, surprisingly,
print a few control characters if TERM were set appropriately,
and if readline and curses support were compiled in.
This fixes it not to do that.
* parted/parted.c (_init): Initialize readline support only after
parsing command line options, so we can skip it in --script mode.
* parted/ui.c (init_readline): New function.
Body extracted from ...
(init_ui): ...here.
* parted/ui.h (init_readline): Declare.
* tests/t0010-script-no-ctrl-chars.sh: New file.  Test for the above.
* tests/Makefile.am (TESTS): Add that new file.

14 years agoloop: don't infloop
Jim Meyering [Fri, 18 Sep 2009 13:30:07 +0000 (15:30 +0200)]
loop: don't infloop

Correct a bug introduced in commit 52815877, 2007-06-15,
"Make loop_probe and loop_clobber work with sector_size > 512, too."
* libparted/labels/loop.c (loop_clobber): Initialize "i" before
the loop, not inside it.
* tests/t0400-loop-clobber-infloop.sh: Test for this.
* tests/Makefile.am (TESTS): Add it.