
On Wed, Mar 09, 2016 at 12:38:58PM -0500, Cole Robinson wrote:
file volume deletion, via virFileRemove, has some logic that depends on uid/gid owner of the path. This info is cached in the volume XML. We need to be sure we are using up to date uid/gid before attempting to delete the volume, otherwise we can hit a case like this:
- test.img created with uid=root - VM starts up using test.img, owner changed to uid=qemu - test.img pool is refreshed, uid=qemu is cached in the volume XML - VM shuts down, volume owner changed to gid=root - vol-delete test.img thinks uid=qemu, virFileRemove does setuid(qemu), fails to delete test.img since it is actually uid=root
https://bugzilla.redhat.com/show_bug.cgi?id=1289327 --- src/storage/storage_driver.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
The storage volume refresh is a little bit tricky. We call it for some APIs but not for all of them. The root cause of this bug is that the uid/gid stored internally in libvirt and what's actually set for that storage could be inconsistent. To fix this for all that reports we would need to update the internal uid/gid while security driver modifies those uid/gid. The refreshVol shouldn't be needed unless someone makes modification without libvirt and needs to update internal state. In general, if we change something, we should now about that. Pavel