Index: trunk/Nebulous/lib/Nebulous/Server.pm
===================================================================
--- trunk/Nebulous/lib/Nebulous/Server.pm	(revision 13130)
+++ trunk/Nebulous/lib/Nebulous/Server.pm	(revision 13131)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: Server.pm,v 1.30 2007-05-02 20:14:45 jhoblitt Exp $
+# $Id: Server.pm,v 1.31 2007-05-02 20:53:42 jhoblitt Exp $
 
 package Nebulous::Server;
@@ -1022,5 +1022,4 @@
 }
 
-#  select *, total - used as free, (used / total) * 100 as perused from mount;
 
 sub _get_storage_volume
@@ -1051,5 +1050,6 @@
         if ( $name ) {
             $query = $db->prepare_cached( $sql->get_storage_volume_byname );
-            $rows = $query->execute(0.95, $name);
+            # %free, name, avaiable, allocate
+            $rows = $query->execute(0.95, $name, 1, 1);
             unless ($rows > 0) {
                 $query->finish;
@@ -1063,5 +1063,6 @@
         } else {
             $query = $db->prepare_cached( $sql->get_storage_volume );
-            $rows = $query->execute(0.95);
+            # %free, avaiable, allocate
+            $rows = $query->execute(0.95, 1, 1);
             # there has to be atleast one storage volume
             unless ($rows > 0) {
Index: trunk/Nebulous/lib/Nebulous/Server/SQL.pm
===================================================================
--- trunk/Nebulous/lib/Nebulous/Server/SQL.pm	(revision 13130)
+++ trunk/Nebulous/lib/Nebulous/Server/SQL.pm	(revision 13131)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: SQL.pm,v 1.32 2007-05-02 20:14:46 jhoblitt Exp $
+# $Id: SQL.pm,v 1.33 2007-05-02 20:53:42 jhoblitt Exp $
 
 package Nebulous::Server::SQL;
@@ -161,4 +161,6 @@
             used / total < ?
             AND name = ?
+            AND available = ?
+            AND allocate = ?
         ORDER BY free DESC
         LIMIT 1
@@ -172,4 +174,6 @@
         WHERE
             used / total < ?
+            AND available = ?
+            AND allocate = ?
         ORDER BY free DESC
         LIMIT 1
@@ -177,5 +181,5 @@
     new_volume          => qq{
         INSERT INTO volume (name, path, allocate)
-        VALUES (?, ?, TRUE)
+        VALUES (?, ?, TRUE, TRUE)
     },
     get_volume_by_name => qq{
@@ -304,7 +308,9 @@
     path VARCHAR(255) NOT NULL,
     allocate BOOLEAN DEFAULT FALSE,
+    available BOOLEAN DEFAULT FALSE,
     PRIMARY KEY(vol_id),
     KEY(name(16)),
-    KEY(allocate)
+    KEY(allocate),
+    KEY(available)
 ) ENGINE=innodb;
 
@@ -337,6 +343,7 @@
     DECLARE namevar VARCHAR(255);
     DECLARE pathvar VARCHAR(255);
-    DECLARE cur1 CURSOR FOR SELECT vol_id, name, path FROM volume
-        WHERE allocate = TRUE;
+    DECLARE allocatevar BOOLEAN;
+    DECLARE availablevar BOOLEAN;
+    DECLARE cur1 CURSOR FOR SELECT vol_id, name, path, allocate, available FROM volume;
     DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = TRUE;
 
@@ -353,5 +360,7 @@
         vol_id INT NOT NULL,
         name VARCHAR(255) NOT NULL,
-        path VARCHAR(255) NOT NULL
+        path VARCHAR(255) NOT NULL,
+        allocate BOOLEAN DEFAULT FALSE,
+        available BOOLEAN DEFAULT FALSE
     ) ENGINE=MEMORY;
 
@@ -363,8 +372,8 @@
 
     myloop: LOOP
-        FETCH cur1 INTO vol_idvar, namevar, pathvar;
+        FETCH cur1 INTO vol_idvar, namevar, pathvar, allocatevar, availablevar;
         IF `done` THEN LEAVE myloop; END IF;
         INSERT INTO mountedvol
-            SELECT mountpoint, total, used, vol_idvar, namevar, pathvar
+            SELECT mountpoint, total, used, vol_idvar, namevar, pathvar, allocatevar, availablevar
             FROM
                 (SELECT *, INSTR(pathvar, mountpoint) = 1 as substring
