delete snapshot_store_ref if the snapshot is in error state
CLOUDSTACK-2729: another try to solve libvirt storage pool missing issue: if the storage pool is missing, then recreate it
add test

Conflicts:

	engine/storage/integration-test/test/org/apache/cloudstack/storage/test/FakeDriverTestConfiguration.java
CLOUDSTACK-4456:
CLOUDSTACK-4457:
CLOUDSTACK-4459:
harden kvm getvolume. It's possible that one volume created on other kvm host, won't show up on another host, try more times to refresh storage pool if volume won't shown up

Conflicts:

	engine/storage/integration-test/test/org/apache/cloudstack/storage/test/FakeDriverTestConfiguration.java
	plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
add table lock on snapshot, during taking snapshot

Conflicts:

	engine/storage/src/org/apache/cloudstack/storage/image/db/SnapshotDataStoreDaoImpl.java
CLOUDSTACK-4477: in order to select hypervisor host which can access storage pool, need to check storage_pool_host_ref

Conflicts:

	engine/storage/integration-test/test/org/apache/cloudstack/storage/test/DirectAgentManagerSimpleImpl.java
	engine/storage/integration-test/test/org/apache/cloudstack/storage/test/EndpointSelectorTest.java
	engine/storage/integration-test/test/org/apache/cloudstack/storage/test/FakeDriverTestConfiguration.java
CLOUDSTACK-4507: fix NPE when taking snapshot
CLOUDSTACK-4459: need to sychronize create storage pool, otherwise, we can create the same pool with the same uuid in parallel
CLOUDSTACK-4436: in case of older kvm host, we'd better try serveral times to make sure we passed cmdline parameters to system vms

Conflicts:

	core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
CLOUDSTACK-4459:
Libvirt reports:
org.libvirt.LibvirtException: Storage volume not found: no storage vol
with matching name
in some cases, if the volume is created on one kvm host, while accessed
from other host.
It's possible due to concurrent access(read/write) storage.
The current fix is to try serveral times, and wait for 30 seconds for
each retry.
If the issue still there, then need to sync the storage pool access
CLOUDSTACK-4459: one more try, bypass libvirt to find volume if libvirt call failed

Conflicts:

	server/src/com/cloud/template/TemplateManagerImpl.java
turn off nfs cache
CLOUDSTACK-3535: fix regression introduced in 5d9fa5d42e13a8c8ee10df14c466f66de678e954
CLOUDSTACK-4559: fix devcloud
CLOUDSTACK-4459: fix silly bug, one more time
CLOUDSTACK-4405: fix vm migration during the upgrade to 4.2

Conflicts:

	plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java
kvm upgrade issue from 2.2.14: 1. the uuid passed by mgt server is malformat, libvirt can't start vm. 2. the template path on primary storage is incorrect, which contains absolute path
  disk resize NPE, if the new disk offering doesn't have tags, then NPE
CLOUDSTACK-4618: fix CLVM
 CLOUDSTACK-4627: fix NPE in vm migration