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