[parted-devel] Possible Race Condition using test code, libparted, and Fedora 12
Curtis Gedak
gedakc at gmail.com
Sun Jan 3 20:30:56 UTC 2010
Note: This is a repost of my email on Dec 21, 2009 which appears to
have been held up due to the size of attachments. As such I am
reposting with no attachments.
------------------------------
I am seeking help to resolve a intermittent problem when using the
libparted library.
PROBLEM
The problem is that on newer GNU/Linux distributions, the libparted
library occasionally reports the following error message:
The kernel was unable to re-read the partition table on /dev/sdb
(Device or resource busy). This means Linux won't know anything
about the modifications you made until you reboot. You should
reboot your computer before doing anything with /dev/sdb.
The occurrence of this error is intermittent.
I have produced a snippet of code and a script that will reproduce the
problem. This problem occurs on Fedora 12 with parted-1.9.0-17 and with
parted-2.1.
I am not sure if the root cause is a problem with my code, with the
parted library, or with some other component of a GNU/Linux distribution.
Due to the intermittent nature of the error I suspect some sort of race
condition, possibly related to the kernel and udev.
It should be noted that this problem also occurs with Debian Sid that we
use on the GParted Live CD. The problem does not appear to occur on
older distributions, such as Ubuntu 8.04.
Any help with this problem would be much appreciated.
Sincerely,
Curtis Gedak
Maintainer of GParted
STEPS TO REPRODUCE PROBLEM
1) Start with a fedora 12 image.
I built a virtual machine using the Fedora-12-i686-Live.iso image
file.
2) Download the source code and script.
resize-using-libparted.c:
https://bugzilla.gnome.org/show_bug.cgi?id=604298#c9
test-partition-resize.sh
https://bugzilla.gnome.org/show_bug.cgi?id=604298#c10
2) Install prerequisites to compile the code:
$ yum groupinstall "Development Tools"
$ yum install parted-devel
$ yum install e2fsprogs-devel
3) Compile the code
$ gcc -lparted -ldl -o resize-using-libparted \
resize-using-libparted.c
4) Test for the error using a hard disk device with no important data.
WARNING: The drive used for testing will be erased!!!
$ ./test-partition-resize.sh /dev/sdb 99999
SCREEN SHOT
A screen shot of the problem occurring on iteration 242 can be found at
the following link:
https://bugzilla.gnome.org/show_bug.cgi?id=604298#c11
This problem is random in nature and can occur at anytime.
RELEVANT GPARTED LINKS
WARNING! Problem Resizing File Systems with GParted
http://gparted-forum.surf4.info/viewtopic.php?id=13777
Bug 604298 - Problems resizing file systems with gparted-live-0.5.0-3
https://bugzilla.gnome.org/show_bug.cgi?id=604298
More information about the parted-devel
mailing list