On 2012年12月13日 01:13, Daniel P. Berrange wrote:
On Tue, Dec 11, 2012 at 09:37:22PM +0800, Osier Yang wrote:
> Here lifecyle only means starting and shutdown.
>
> To record the original "unpriv_sgio" value for non-shared disk,
> this introduces "orig_cdbfilter" for disk def. On domain starting,
> the disk's "unpriv_sgio" is set with regards to the config in domain
> XML. And on domain shutdown, it's restored to the original value
> ("orig_cdbfilter"). Later patch will prevent restoring if other
> domain is still using the shared disk.
> ---
> src/conf/domain_conf.h | 1 +
> src/qemu/qemu_process.c | 34 +++++++++++++++++++++++++++++++++-
> 2 files changed, 34 insertions(+), 1 deletions(-)
>
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index 9586f75..256bea2 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -629,6 +629,7 @@ struct _virDomainDiskDef {
> bool rawio_specified;
> int rawio; /* no = 0, yes = 1 */
> int cdbfilter;
> + int orig_cdbfilter;
Huh, why did you go to the bother of saving the original value
in the hash table, if you're saving it here too. THis just seems
bogus to me, and won't survive a restart of libvirtd in any
case.
I should explain more in the commit message.
The orig_cdbfilter in qemu driver is for shared disks, and this is
for non-shared disks.
As the orig_cdbfilter can be changed when starting domains share
disks. E.g.
% virsh start one
% virsh start two
the orig_cdbfilter in domain two's disk def will be not the exact
original value.
Regards,
Osier