Le lundi 03 septembre 2007 à 12:05 +0200, Karel Zak a écrit : > Hi Pascal, > > On Mon, Sep 03, 2007 at 12:06:51AM +0200, Pascal Terjan wrote: > > 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. > > Please, add "Signed-off-by:" to your patch. > > > + fstat(fd, &statbuf); > > rc = fstat(fd, &statbuf); > if (rc == -1) { > fprintf(stderr, _("re-read partition table: could not stat: %s\n", > strerror(errno)); > } else if S_ISBLK(statbuf.st_mode)) { > .... > > Be pedantic :-) I fail to imagine how a stat on that fd could fail but OK, I'll send an updated patch > > > > - if (i) { > > - printf(_("\nWARNING: Re-reading the partition table " > > - "failed with error %d: %s.\n" > > - "The kernel still uses the old table.\n" > > - "The new table will be used " > > - "at the next reboot.\n"), > > - error, strerror(error)); > > - } > > + if(S_ISBLK(statbuf.st_mode)) { /* block device */ > > + 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@xxxxxxxxxxxxx */ > > + sync(); > > + sleep(2); > > + if ((i = ioctl(fd, BLKRRPART)) != 0) > > + error = errno; > > + } > > I think we needn't this stupid code for 1.2.x kernels. I won't argue on this one :) - To unsubscribe from this list: send the line "unsubscribe util-linux-ng" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html