Hi,

I've been chasing an intermittent problem with busybox's fdisk
implementation.  About one command in ten was failing on me when used
with slow external USB disks on a 320MHz ARM system.  The BLKRRPART
ioctl was returning device busy.

I traced it to a commented out sleep(2) in fdisk.c.  With the sleep
reinstated fdisk is reliable.

I know that linux sync() is documented as not returning until the buffers
have been flushed but I think something is delaying them, possibly in the
USB stack.


--- busybox-1.18.3/util-linux/fdisk.c-orig      2011-07-11 14:51:15.000000000 
+0100
+++ busybox-1.18.3/util-linux/fdisk.c   2011-07-11 14:51:52.000000000 +0100
@@ -2564,7 +2564,7 @@
 
        printf("Calling ioctl() to re-read partition table\n");
        sync();
-       /* sleep(2); Huh? */
+       sleep(2);
        i = ioctl_or_perror(dev_fd, BLKRRPART, NULL,
                        "WARNING: rereading partition table "
                        "failed, kernel still uses old table");

-- 
        Bob Dunlop
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to