summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2010-10-06 09:08:39 +0100
committerRichard W.M. Jones <rjones@redhat.com>2010-10-06 09:08:39 +0100
commit4f6bd18d2e2a9c1d317a07b59072579d8fff42ac (patch)
tree678701b5c3fca043a255ab087d99e2883430ae39
parentccc5425105dce58859c0793c83dd4d17a139d9ed (diff)
downloadlibguestfs-4f6bd18d2e2a9c1d317a07b59072579d8fff42ac.tar.gz
libguestfs-4f6bd18d2e2a9c1d317a07b59072579d8fff42ac.tar.xz
libguestfs-4f6bd18d2e2a9c1d317a07b59072579d8fff42ac.zip
part-disk: Align whole disk partition to 64 sectors.
Change the part-disk command so it aligns the partition to 64 sectors (instead of 1 or 34 sectors as now). This should ensure that the filesystem contained within is aligned.
-rw-r--r--daemon/parted.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/daemon/parted.c b/daemon/parted.c
index 2f928b05..89cc0d69 100644
--- a/daemon/parted.c
+++ b/daemon/parted.c
@@ -178,27 +178,21 @@ do_part_del (const char *device, int partnum)
int
do_part_disk (const char *device, const char *parttype)
{
- const char *startstr;
- const char *endstr;
-
parttype = check_parttype (parttype);
if (!parttype) {
reply_with_error ("unknown partition type: common choices are \"gpt\" and \"msdos\"");
return -1;
}
- /* Voooooodooooooooo (thanks Jim Meyering for working this out). */
- if (STREQ (parttype, "msdos")) {
- startstr = "1s";
- endstr = "-1s";
- } else if (STREQ (parttype, "gpt")) {
- startstr = "34s";
- endstr = "-34s";
- } else {
- /* untested */
- startstr = "1s";
- endstr = "-1s";
- }
+ /* Align all partitions created this way to 64 sectors, and leave
+ * the last 64 sectors at the end of the disk free. This wastes
+ * 32K+32K = 64K on 512-byte sector disks. The rationale is:
+ *
+ * - aligned operations are faster
+ * - GPT requires at least 34 sectors at the end of the disk.
+ */
+ const char *startstr = "64s";
+ const char *endstr = "-64s";
RUN_PARTED (return -1,
device,