finally, I have found that it is ovs bug.
when reboot vm, libvirt will call ovs-vsctl del-port,
this cmd will cause other port's tc ingress rule automatically remove.
I have reported a bug for ovs, and they have admitted it.
anyway, thank you for your reply.
At 2015-08-03 15:34:11, "Michal Privoznik" <mprivozn@redhat.com> wrote:
>On 20.07.2015 10:43, ychen wrote:
>> hi:
>> when I use openstack devstack to test QOS, wired phenomenon appeared,
>> I set qos ingress rule in tapB, but when I reboot tapA, the ingress rule of tapB automatically removed, but the egress rule is still exist.
>> Test enviroment:
>> Linux: ubuntu 14.04.1 LTS
>> kernel: 3.13.0-32-generic
>> libvirt: 1.2.2
>> openstack: havana
>>
>>
>> 1. use nova to create vm A and vm B. for the configuration of the libvirt xml, see the last paragraph in the end.
>> 2. use tc cmd to create qos rule for vm A and vm B
>> tc qdisc add dev tap3d0d2c4a-0b ingress //vmA
>> tc qdisc add dev tap896d5066-69 ingress //vmB
>>
>>
>> 3. then use cmd
>> "sudo virsh destory 142a08db-6e25-4a03-be13-7073104b0745 " to first shutdown vm1
>> then I see ingress rule of vmB disappeared :(
>>
>
>Interesting. With the latest libvirt I am unable to reproduce - there's
>a check and QoS is cleared out only if set in domain XML. Since your
>domain XML lacks it, I guess it's either already fixed or not libvirt fault.
>
>Michal