Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sbin/gpt
See question in gpt.c (and others).
On Nov 30, 2:59pm, "Christos Zoulas" wrote:
}
} This is a multi-part message in MIME format.
}
} --_----------=_1448913574208280
} Content-Disposition: inline
} Content-Transfer-Encoding: 8bit
} Content-Type: text/plain; charset="US-ASCII"
}
} Module Name: src
} Committed By: christos
} Date: Mon Nov 30 19:59:34 UTC 2015
}
} Modified Files:
} src/sbin/gpt: Makefile add.c gpt.8 gpt.c gpt.h resize.c
} Added Files:
} src/sbin/gpt: main.c
}
} Log Message:
} - automatically sync the wedge information unless -n is specified.
} - document the general options in the traditional way.
} - split the main program into a separate file.
}
}
} To generate a diff of this commit:
} cvs rdiff -u -r1.15 -r1.16 src/sbin/gpt/Makefile
} cvs rdiff -u -r1.28 -r1.29 src/sbin/gpt/add.c
} cvs rdiff -u -r1.37 -r1.38 src/sbin/gpt/gpt.8
} cvs rdiff -u -r1.45 -r1.46 src/sbin/gpt/gpt.c
} cvs rdiff -u -r1.21 -r1.22 src/sbin/gpt/gpt.h
} cvs rdiff -u -r0 -r1.1 src/sbin/gpt/main.c
} cvs rdiff -u -r1.12 -r1.13 src/sbin/gpt/resize.c
}
} Please note that diffs are not public domain; they are subject to the
} copyright notices on the relevant files.
}
}
} --_----------=_1448913574208280
} Content-Disposition: inline
} Content-Length: 17047
} Content-Transfer-Encoding: binary
} Content-Type: text/x-diff; charset=us-ascii
}
} Modified files:
}
} Index: src/sbin/gpt/add.c
} diff -u src/sbin/gpt/add.c:1.28 src/sbin/gpt/add.c:1.29
} --- src/sbin/gpt/add.c:1.28 Sat Nov 28 19:14:46 2015
} +++ src/sbin/gpt/add.c Mon Nov 30 14:59:34 2015
} @@ -33,7 +33,7 @@
} __FBSDID("$FreeBSD: src/sbin/gpt/add.c,v 1.14 2006/06/22 22:05:28 marcel Exp $");
} #endif
} #ifdef __RCSID
} -__RCSID("$NetBSD: add.c,v 1.28 2015/11/29 00:14:46 christos Exp $");
} +__RCSID("$NetBSD: add.c,v 1.29 2015/11/30 19:59:34 christos Exp $");
} #endif
}
} #include <sys/types.h>
} @@ -180,10 +180,9 @@ add(int fd)
} gpt_write(fd, lbt);
} gpt_write(fd, tpg);
}
} - printf("Partition %d added, use:\n", i + 1);
} - printf("\tdkctl %s addwedge <wedgename> %" PRIu64 " %" PRIu64
} - " <type>\n", device_arg, map->map_start, map->map_size);
} - printf("to create a wedge for it\n");
} + printf("Partition %d added on %s: ", i + 1, device_arg);
} + printf("%s %" PRIu64 " %" PRIu64 "\n", type, map->map_start,
} + map->map_size);
This message needs to depend on the new -n flag, otherwise it
may give incorrect information.
} }
}
} int
}
} Index: src/sbin/gpt/gpt.c
} diff -u src/sbin/gpt/gpt.c:1.45 src/sbin/gpt/gpt.c:1.46
} --- src/sbin/gpt/gpt.c:1.45 Sun Nov 29 09:03:35 2015
} +++ src/sbin/gpt/gpt.c Mon Nov 30 14:59:34 2015
} @@ -35,7 +35,7 @@
} __FBSDID("$FreeBSD: src/sbin/gpt/gpt.c,v 1.16 2006/07/07 02:44:23 marcel Exp $");
} #endif
} #ifdef __RCSID
} -__RCSID("$NetBSD: gpt.c,v 1.45 2015/11/29 14:03:35 christos Exp $");
} +__RCSID("$NetBSD: gpt.c,v 1.46 2015/11/30 19:59:34 christos Exp $");
} #endif
}
} #include <sys/param.h>
} @@ -68,7 +68,9 @@ off_t mediasz;
} u_int parts;
} u_int secsz;
}
} -int readonly, verbose, quiet;
} +int readonly, verbose, quiet, nosync;
} +
} +static int modified;
}
} static uint32_t crc32_tab[] = {
} 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
} @@ -269,10 +271,11 @@ gpt_write(int fd, map_t *map)
}
} count = map->map_size * secsz;
} ofs = map->map_start * secsz;
} - if (lseek(fd, ofs, SEEK_SET) == ofs &&
} - write(fd, map->map_data, count) == (ssize_t)count)
} - return (0);
} - return (-1);
} + if (lseek(fd, ofs, SEEK_SET) != ofs ||
Why did you change the "&&" to "||"? If the lseek() fails,
you will now be writing data to the wrong place on the disk.
} + write(fd, map->map_data, count) != (ssize_t)count)
} + return -1;
} + modified = 1;
} + return 0;
} }
}
} static int
} @@ -569,6 +572,12 @@ gpt_open(const char *dev, int flags)
} void
} gpt_close(int fd)
} {
} + int bits;
} +
} + if (modified && !nosync)
} + if (ioctl(fd, DIOCMWEDGES, &bits) == -1)
} + warn("Can't update wedge information");
} +
} /* XXX post processing? */
} close(fd);
} }
} @@ -583,172 +592,3 @@ gpt_msg(const char *fmt, ...)
} va_end(ap);
} printf("\n");
} }
} -
} -static struct {
} - int (*fptr)(int, char *[]);
} - const char *name;
} -} cmdsw[] = {
} - { cmd_add, "add" },
} -#ifndef HAVE_NBTOOL_CONFIG_H
} - { cmd_backup, "backup" },
} -#endif
} - { cmd_biosboot, "biosboot" },
} - { cmd_create, "create" },
} - { cmd_destroy, "destroy" },
} - { cmd_header, "header" },
} - { NULL, "help" },
} - { cmd_label, "label" },
} - { cmd_migrate, "migrate" },
} - { cmd_recover, "recover" },
} - { cmd_remove, "remove" },
} - { NULL, "rename" },
} - { cmd_resize, "resize" },
} - { cmd_resizedisk, "resizedisk" },
} -#ifndef HAVE_NBTOOL_CONFIG_H
} - { cmd_restore, "restore" },
} -#endif
} - { cmd_set, "set" },
} - { cmd_show, "show" },
} - { cmd_type, "type" },
} - { cmd_unset, "unset" },
} - { NULL, "verify" },
} - { NULL, NULL }
} -};
} -
} -__dead static void
} -usage(void)
} -{
} - extern const char addmsg1[], addmsg2[], biosbootmsg[];
} - extern const char createmsg[], destroymsg[], headermsg[], labelmsg1[];
} - extern const char labelmsg2[], labelmsg3[], migratemsg[], recovermsg[];
} - extern const char removemsg1[], removemsg2[], resizemsg[];
} - extern const char resizediskmsg[], setmsg[], showmsg[], typemsg1[];
} - extern const char typemsg2[], typemsg3[], unsetmsg[];
} -#ifndef HAVE_NBTOOL_CONFIG_H
} - extern const char backupmsg[], restoremsg[];
} -#endif
} - const char *p = getprogname();
} - const char *f =
} - "[-rv] [-m <mediasize>] [-p <partitionnum>] [-s <sectorsize>]";
} -
} - fprintf(stderr,
} - "Usage: %s %s <command> [<args>]\n", p, f);
} - fprintf(stderr,
} - "Commands:\n"
} -#ifndef HAVE_NBTOOL_CONFIG_H
} - " %s\n"
} - " %s\n"
} -#endif
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n"
} - " %s\n",
} - addmsg1, addmsg2,
} -#ifndef HAVE_NBTOOL_CONFIG_H
} - backupmsg,
} -#endif
} - biosbootmsg, createmsg, destroymsg,
} - headermsg, labelmsg1, labelmsg2, labelmsg3,
} - migratemsg, recovermsg,
} - removemsg1, removemsg2,
} - resizemsg, resizediskmsg,
} -#ifndef HAVE_NBTOOL_CONFIG_H
} - restoremsg,
} -#endif
} - setmsg, showmsg,
} - typemsg1, typemsg2, typemsg3,
} - unsetmsg);
} - exit(1);
} -}
} -
} -static void
} -prefix(const char *cmd)
} -{
} - char *pfx;
} - const char *prg;
} -
} - prg = getprogname();
} - pfx = malloc(strlen(prg) + strlen(cmd) + 2);
} - /* Don't bother failing. It's not important */
} - if (pfx == NULL)
} - return;
} -
} - sprintf(pfx, "%s %s", prg, cmd);
} - setprogname(pfx);
} -}
} -
} -int
} -main(int argc, char *argv[])
} -{
} - char *cmd, *p;
} - int ch, i;
} -
} - /* Get the generic options */
} - while ((ch = getopt(argc, argv, "m:p:qrs:v")) != -1) {
} - switch(ch) {
} - case 'm':
} - if (mediasz > 0)
} - usage();
} - mediasz = strtoul(optarg, &p, 10);
} - if (*p != 0 || mediasz < 1)
} - usage();
} - break;
} - case 'p':
} - if (parts > 0)
} - usage();
} - parts = strtoul(optarg, &p, 10);
} - if (*p != 0 || parts < 1)
} - usage();
} - break;
} - case 'r':
} - readonly = 1;
} - break;
} - case 'q':
} - quiet = 1;
} - break;
} - case 's':
} - if (secsz > 0)
} - usage();
} - secsz = strtoul(optarg, &p, 10);
} - if (*p != 0 || secsz < 1)
} - usage();
} - break;
} - case 'v':
} - verbose++;
} - break;
} - default:
} - usage();
} - }
} - }
} - if (!parts)
} - parts = 128;
} -
} - if (argc == optind)
} - usage();
} -
} - cmd = argv[optind++];
} - for (i = 0; cmdsw[i].name != NULL && strcmp(cmd, cmdsw[i].name); i++);
} -
} - if (cmdsw[i].fptr == NULL)
} - errx(1, "unknown command: %s", cmd);
} -
} - prefix(cmd);
} - return ((*cmdsw[i].fptr)(argc, argv));
} -}
}
} Index: src/sbin/gpt/resize.c
} diff -u src/sbin/gpt/resize.c:1.12 src/sbin/gpt/resize.c:1.13
} --- src/sbin/gpt/resize.c:1.12 Sat Nov 28 19:14:46 2015
} +++ src/sbin/gpt/resize.c Mon Nov 30 14:59:34 2015
} @@ -33,7 +33,7 @@
} __FBSDID("$FreeBSD: src/sbin/gpt/add.c,v 1.14 2006/06/22 22:05:28 marcel Exp $");
} #endif
} #ifdef __RCSID
} -__RCSID("$NetBSD: resize.c,v 1.12 2015/11/29 00:14:46 christos Exp $");
} +__RCSID("$NetBSD: resize.c,v 1.13 2015/11/30 19:59:34 christos Exp $");
} #endif
}
} #include <sys/types.h>
} @@ -166,10 +166,8 @@ resize(int fd)
} gpt_write(fd, lbt);
} gpt_write(fd, tpg);
}
} - printf("Partition %d resized, use:\n", entry);
} - printf("\tdkctl %s addwedge <wedgename> %" PRIu64 " %" PRIu64
} - " <type>\n", device_arg, map->map_start, newsize);
} - printf("to create a wedge for it\n");
} + printf("Partition %d resized on %s: ", entry, device_arg);
} + printf("%" PRIu64 " %" PRIu64 "\n", map->map_start, newsize);
This message needs to depend on the new -n flag, otherwise it
may give incorrect information.
} }
}
} int
}
} --_----------=_1448913574208280--
}
}-- End of excerpt from "Christos Zoulas"
Home |
Main Index |
Thread Index |
Old Index