Index: trunk/Nebulous/lib/Nebulous/Server/SQL.pm
===================================================================
--- trunk/Nebulous/lib/Nebulous/Server/SQL.pm	(revision 16261)
+++ trunk/Nebulous/lib/Nebulous/Server/SQL.pm	(revision 16264)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: SQL.pm,v 1.45 2008-01-28 19:48:08 jhoblitt Exp $
+# $Id: SQL.pm,v 1.46 2008-01-30 00:19:06 jhoblitt Exp $
 
 package Nebulous::Server::SQL;
@@ -172,5 +172,6 @@
             storage_object.so_id,
             uri,
-            assigned_vol_id
+            assigned_vol_id,
+            available
         FROM storage_object
         JOIN instance
@@ -242,4 +243,20 @@
         SET ext_id = ?
         WHERE ext_id = ?
+    },
+    find_objects_with_unavailable_instances => qq{
+        SELECT
+            so_id,
+            ext_id,
+            count(ins_id) as instances,
+            count(mountedvol.vol_id) as available_instances,
+            count(mountedvol.vol_id) < count(ins_id) as need_recovery,
+            count(mountedvol.vol_id) > 0 as recoverable
+        FROM storage_object
+        JOIN instance
+            USING(so_id)
+        LEFT JOIN mountedvol
+            USING(vol_id)
+        GROUP BY so_id
+        HAVING need_recovery = 1
     },
 );
