udev: guard REREADPT by exclusive lock instead of O_EXCL

Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
This commit is contained in:
Kay Sievers 2014-06-04 16:21:19 +02:00 committed by Anthony G. Basile
parent eb666fd898
commit 0c693f06e3

View File

@ -755,9 +755,12 @@ static int synthesize_change(struct udev_device *dev) {
* partition table is found, and we will not get an event for
* the disk.
*/
fd = open(udev_device_get_devnode(dev), O_RDONLY|O_EXCL|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
fd = open(udev_device_get_devnode(dev), O_RDONLY|O_CLOEXEC|O_NOFOLLOW|O_NONBLOCK);
if (fd >= 0) {
r = ioctl(fd, BLKRRPART, 0);
r = flock(fd, LOCK_EX|LOCK_NB);
if (r >= 0)
r = ioctl(fd, BLKRRPART, 0);
close(fd);
if (r >= 0)
part_table_read = true;