[Ovirt-devel] [PATCH server] Use fixed mount points and add timeouts to various calls.

Ian Main imain at redhat.com
Thu May 28 15:19:07 UTC 2009


This patch uses fixed mount points necessary for migration to work
properly.  Mount points are unique for each storage type.

This also uses the new :timeout keyword argument for various operations
that could take a while.  This should fix the 'seq' timeout problem
we've been seeing.  This requires the latest ruby-qpid which is now
in the ovirt repo.

Signed-off-by: Ian Main <imain at redhat.com>
---
 src/task-omatic/task_storage.rb |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/task-omatic/task_storage.rb b/src/task-omatic/task_storage.rb
index a2188d7..4961b83 100644
--- a/src/task-omatic/task_storage.rb
+++ b/src/task-omatic/task_storage.rb
@@ -129,7 +129,7 @@ class LibvirtPool
     end
 
     if @remote_pool == nil
-      result = node.storagePoolDefineXML(@xml.to_s)
+      result = node.storagePoolDefineXML(@xml.to_s, :timeout => 60 * 2)
       raise "Error creating pool: #{result.text}" unless result.status == 0
       @remote_pool = session.object(:object_id => result.pool)
       raise "Error finding newly created remote pool." unless @remote_pool
@@ -137,7 +137,7 @@ class LibvirtPool
       # we need this because we don't want to "build" LVM pools, which would
       # destroy existing data
       if @build_on_start
-        result = @remote_pool.build
+        result = @remote_pool.build(:timeout => 60 * 2)
         raise "Error building pool: #{result.text}" unless result.status == 0
       end
       @remote_pool_defined = true
@@ -151,7 +151,7 @@ class LibvirtPool
     if @remote_pool.state == "inactive"
       # only try to start the pool if it is currently inactive; in all other
       # states, assume it is already running
-      result = @remote_pool.create
+      result = @remote_pool.create(:timeout => 60 * 2)
       raise "Error defining pool: #{result.text}" unless result.status == 0
 
       # Refresh qpid object with new properties.
@@ -195,7 +195,7 @@ class LibvirtPool
 
   def self.factory(pool)
     if pool[:type] == "IscsiStoragePool"
-      return IscsiLibvirtPool.new(pool.ip_addr, pool[:target])
+      return IscsiLibvirtPool.new(pool.ip_addr, pool[:target], pool[:port]")
     elsif pool[:type] == "NfsStoragePool"
       return NFSLibvirtPool.new(pool.ip_addr, pool.export_path)
     elsif pool[:type] == "LvmStoragePool"
@@ -220,8 +220,9 @@ class LibvirtPool
 end
 
 class IscsiLibvirtPool < LibvirtPool
-  def initialize(ip_addr, target)
-    super('iscsi')
+  def initialize(ip_addr, target, port)
+    mount = "#{ip_addr}-#{target}-#{port}"
+    super('iscsi', mount)
 
     @type = 'iscsi'
     @ipaddr = ip_addr
@@ -242,7 +243,8 @@ end
 
 class NFSLibvirtPool < LibvirtPool
   def initialize(ip_addr, export_path)
-    super('netfs')
+    target = "#{ip_addr}-#{export_path.tr('/', '_')}"
+    super('netfs', target)
 
     @type = 'netfs'
     @host = ip_addr
-- 
1.6.0.6




More information about the ovirt-devel mailing list