fdisk: doing useless ioctl when editing an image

When editing a disk image, fdisk wants to ask the kernel to reread the
partition table which is useless and provokes an error, a wrong exit
code and some waiting. This annoys me as I can't check the return code
in my script and because I have to wait a few seconds each time.

This trivial patch makes it only do the ioctl on block devices.

It also simplifies code by dropping some workaround for kernel 1.2.x

Signed-off-by: Pascal Terjan <pterjan@linuxfr.org>
This commit is contained in:
Pascal Terjan 2007-09-04 00:10:16 +02:00 committed by Karel Zak
parent 2a45745f59
commit edd867fac2
1 changed files with 8 additions and 15 deletions

View File

@ -2248,22 +2248,15 @@ write_table(void) {
void
reread_partition_table(int leave) {
int error = 0;
int i;
struct stat statbuf;
printf(_("Calling ioctl() to re-read partition table.\n"));
sync();
sleep(2);
if ((i = ioctl(fd, BLKRRPART)) != 0) {
error = errno;
} else {
/* some kernel versions (1.2.x) seem to have trouble
rereading the partition table, but if asked to do it
twice, the second time works. - biro@yggdrasil.com */
sync();
sleep(2);
if ((i = ioctl(fd, BLKRRPART)) != 0)
error = errno;
i = fstat(fd, &statbuf);
if (i == 0 && S_ISBLK(statbuf.st_mode)) {
printf(_("Calling ioctl() to re-read partition table.\n"));
sync();
sleep(2);
i = ioctl(fd, BLKRRPART);
}
if (i) {
@ -2272,7 +2265,7 @@ reread_partition_table(int leave) {
"The kernel still uses the old table.\n"
"The new table will be used "
"at the next reboot.\n"),
error, strerror(error));
errno, strerror(errno));
}
if (dos_changed)