On Wed, Sep 10, 2014 at 03:26:07PM +0200, Michal Privoznik wrote:
To keep original seclabel for files libvirt is touching we need a
single point where the original seclabels can be stored. Instead
of inventing a new one we can misuse virtlockd which already has
nearly all the infrastructure we need. As nice feature, it keeps
its internal state between virtlockd restarts. Again, it's
something we are going to need, as we don't want to lose the
original labels on the lock daemon restart.
In this commit two functions are introduced:
virLockManagerRememberSeclabel that takes three arguments:
path, model and seclabel
where @path is unique identifier for the file we are about to
label, @model and @seclabel then represents original seclabel.
virLockManagerRecallSeclabel then takes:
path, model, *seclabel
and returns number of references held on @path. If the return
value is zero, *seclabel contains the original label stored by
first call of RememberSeclabel(). If a positive value is
returned, other domains are still using the @path and the
original label shall not be restored.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/libvirt_private.syms | 2 ++
src/locking/lock_driver.h | 41 +++++++++++++++++++++++++++++++++++++++++
src/locking/lock_manager.c | 26 ++++++++++++++++++++++++++
src/locking/lock_manager.h | 9 +++++++++
4 files changed, 78 insertions(+)
diff --git a/src/locking/lock_manager.h b/src/locking/lock_manager.h
index 4189759..3fd5b9a 100644
--- a/src/locking/lock_manager.h
+++ b/src/locking/lock_manager.h
@@ -67,4 +67,13 @@ int virLockManagerInquire(virLockManagerPtr manager,
int virLockManagerFree(virLockManagerPtr manager);
+int virLockManagerRememberSeclabel(virLockManagerPtr lock,
+ const char *path,
+ const char *model,
+ const char *seclabel);
+int virLockManagerRecallSeclabel(virLockManagerPtr lock,
+ const char *path,
+ const char *model,
+ char **seclabel);
Can add ATTRIBUTE_NONNULL for all of the args in these methods.
ACK if that's changed.
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|