Index: trunk/Nebulous-Server/lib/Nebulous/Server/SQL.pm
===================================================================
--- trunk/Nebulous-Server/lib/Nebulous/Server/SQL.pm	(revision 18388)
+++ trunk/Nebulous-Server/lib/Nebulous/Server/SQL.pm	(revision 18400)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: SQL.pm,v 1.59 2008-06-30 23:26:16 jhoblitt Exp $
+# $Id: SQL.pm,v 1.60 2008-07-02 03:40:10 jhoblitt Exp $
 
 package Nebulous::Server::SQL;
@@ -211,4 +211,44 @@
             AND available = ?
             AND allocate = ?
+        ORDER BY free DESC
+        LIMIT 1
+    },
+    get_replication_volume_for_ext_id   => qq{
+        SELECT
+            vol_id,
+            host,
+            path,
+            xattr,
+            total - used as free
+        FROM (
+-- This query works but is slow...
+--             SELECT
+--                  mountedvol.*
+--             FROM mountedvol
+--             WHERE
+--                 vol_id NOT IN(
+--                     SELECT vol_id
+--                     FROM storage_object
+--                     JOIN instance
+--                         USING(so_id)
+--                     WHERE ext_id = --
+--                  )
+                SELECT
+                    m.*
+                FROM mountedvol AS m
+                LEFT JOIN instance AS i
+                    ON m.vol_id = i.vol_id
+                    AND i.so_id = (
+                        SELECT so_id
+                        FROM storage_object
+                        WHERE ext_id = ?
+                    )
+                WHERE
+                    i.vol_id IS NULL
+        ) as Foo 
+        WHERE
+            used / total < ? 
+            AND available = ? 
+            AND allocate = ? 
         ORDER BY free DESC
         LIMIT 1
