[parted-devel] Possible Race Condition using test code, libparted, and Fedora 12
Curtis Gedak
gedakc at gmail.com
Wed Jan 20 16:56:29 UTC 2010
Petr Uzel wrote:
> I do my tests with parted-1.8.8 [*], which still uses BLKPG* ioctls to
> inform the kernel and thus the different codepath than your patch
> modifies.
>
> Anyway, I'm thinking about similar patch that would retry the
> BLKPG_DEL_PARTITION several times, eventually with a short
> sleep before the last try (fixing race condition with sleeping
> is not a most robust solution, but I can't think of anything better
> now).
>
> [*] I know this version is 'a bit' older, but it is my primary concern
> now (distribution stuff :/ )
>
> I think your solution should work in most cases, however, the proper
> fix would IMHO be to somehow gain exclusive access to the device to
> prevent anything else from opening it. I don't know if it's doable,
> though
Thank you Petr for the clarification that the kernel is responsible for
updating the /proc/partitions entries.
I agree that a inserting a sleep(1) into the code in the hopes that a
subsequent call to ioctl() will be successful is not a very robust
solution. Having said that, it does appear to be working in my test
case. My test has been running for over 4 days now and has completed
over 54,000 iterations.
I have also tested parted-2.1 which suffers from a similar problem.
Hence I have not found a solution to this problem in more recent
versions of the upstream code.
Perhaps there is someone else on this mailing list that could propose a
better approach to this problem?
Regards,
Curtis Gedak
More information about the parted-devel
mailing list