[Parted-commits] GNU Parted Official Repository: Changes to 'master'

Jim Meyering meyering at alioth.debian.org
Thu Sep 24 19:22:27 UTC 2009


 libparted/labels/gpt.c     |    2 -
 tests/Makefile.am          |    1 
 tests/t0220-gpt-msftres.sh |   85 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 87 insertions(+), 1 deletion(-)

New commits:
commit 42eed568a7704ffc3cd8f5c2417a283096f24a96
Author: Jim Meyering <meyering at redhat.com>
Date:   Thu Sep 24 19:56:37 2009 +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.

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 57c3e71..2eba452 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -5,6 +5,7 @@ TESTS = \
   t0200-gpt.sh \
   t0201-gpt.sh \
   t0202-gpt-pmbr.sh \
+  t0220-gpt-msftres.sh \
   t0250-gpt.sh \
   t0300-dos-on-gpt.sh \
   t0400-loop-clobber-infloop.sh \
diff --git a/tests/t0220-gpt-msftres.sh b/tests/t0220-gpt-msftres.sh
new file mode 100755
index 0000000..5053e0f
--- /dev/null
+++ b/tests/t0220-gpt-msftres.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+# Copyright (C) 2009 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+test_description='gpt default "flag" for a partition must not be msftres'
+
+: ${srcdir=.}
+. $srcdir/test-lib.sh
+
+ss=$sector_size_
+dev=loop-file
+
+# FIXME: should be able to use "ufs" here, too, but that doesn't work.
+fs_types='
+ext2
+fat16
+fat32
+hfs
+hfs+
+hfsx
+linux-swap
+NTFS
+reiserfs
+'
+
+start=200
+part_size=100
+n_types=$(echo "$fs_types"|wc -w)
+
+# Create a "disk" with enough room for one partition per FS type,
+# and the overhead required for a GPT partition table.
+# 32 is the number of 512-byte sectors required to accommodate the
+# minimum size of the secondary GPT header at the end of the disk.
+n_sectors=$(expr $start + $n_types \* $part_size + 1 + 32)
+
+test_expect_success \
+    'create a test file large enough for one partition per FS type' \
+    'dd if=/dev/null of=$dev bs=$ss seek=$n_sectors'
+
+test_expect_success \
+    'create a gpt partition table' \
+    'parted -s $dev mklabel gpt > out 2>&1'
+test_expect_success 'expect no output' 'compare out /dev/null'
+
+printf "BYT;\n$dev:${n_sectors}s:file:$ss:$ss:gpt:;\n" > exp
+i=1
+fail=0
+rm -f out
+for type in $fs_types; do
+  end=$(expr $start + $part_size - 1)
+  echo "$i:${start}s:${end}s:${part_size}s::$type:;" >> exp || fail=1
+  parted -s $dev mkpart primary $type ${start}s ${end}s >> out 2>&1 || fail=1
+  parted -s $dev name $i $type >> out 2>&1 || fail=1
+  start=$(expr $end + 1)
+  i=$(expr $i + 1)
+done
+
+test_expect_success \
+    "create $n_types partitions" \
+    'test $fail = 0'
+test_expect_success 'expect no output' 'compare out /dev/null'
+
+rm -f out
+test_expect_success \
+    'print partition table' \
+    'parted -m -s $dev u s p > out 2>&1'
+
+sed "s,.*/$dev:,$dev:," out > k && mv k out && ok=1 || ok=0
+test_expect_success \
+    'match against expected output' \
+    'test $ok = 1 && compare out exp'
+
+test_done

commit 64b7324f5cee9d450e081445ab9937ac8e0b6047
Author: Keshav P R <skodabenz at rocketmail.com>
Date:   Fri Sep 18 16:37:51 2009 +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 at centrum.cz in <http://bugs.debian.org/441033>,
    with suggested change by Osamu Aoki <osamu at debian.org>.
    Keshav P R <skodabenz at rocketmail.com> wrote the above and prepared
    this patch.

diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
index a4f0117..cc9bcdc 100644
--- a/libparted/labels/gpt.c
+++ b/libparted/labels/gpt.c
@@ -1286,7 +1286,7 @@ gpt_partition_set_system (PedPartition* part, const PedFileSystemType* fs_type)
 	if (fs_type) {
 		if (strncmp (fs_type->name, "fat", 3) == 0
 		    || strcmp (fs_type->name, "ntfs") == 0) {
-			gpt_part_data->type = PARTITION_MSFT_RESERVED_GUID;
+			gpt_part_data->type = PARTITION_BASIC_DATA_GUID;
 			return 1;
 		}
 		if (strncmp (fs_type->name, "hfs", 3) == 0) {



More information about the Parted-commits mailing list