Index: trunk/Nebulous-Server/lib/Nebulous/Server.pm
===================================================================
--- trunk/Nebulous-Server/lib/Nebulous/Server.pm	(revision 24355)
+++ trunk/Nebulous-Server/lib/Nebulous/Server.pm	(revision 24362)
@@ -229,5 +229,5 @@
     if (defined $vol_name
         and not $self->_is_valid_volume_name($key, $key->volume)) {
-        if ($key->soft_volume) {
+        unless ($key->hard_volume) {
             $log->warn( "$vol_name is not a known volume name" );
             $vol_name = undef;
@@ -238,5 +238,5 @@
         
     my ($vol_id, $vol_host, $vol_path, $vol_xattr)
-        = $self->_get_storage_volume($key, $vol_name, $key->soft_volume);
+        = $self->_get_storage_volume($key, $vol_name, $key->hard_volume);
 
     my $parent_id = $self->_resolve_dir_parent_id(key => $key, create => 1);
@@ -705,5 +705,5 @@
     if (defined $vol_name
         and not $self->_is_valid_volume_name($key, $key->volume)) {
-        if ($key->soft_volume) {
+        unless ($key->hard_volume) {
             $log->warn( "$vol_name is not a known volume name" );
             $vol_name = undef;
@@ -777,5 +777,5 @@
             $db->rollback;
             # handle soft volumes
-            if (defined $vol_name and defined $key->soft_volume) {
+            if (defined $vol_name and not defined $key->hard_volume) {
                 $log->debug("retrying with 'any' volume");
                 return $self->replicate_object($key->path, 'any');
@@ -1446,8 +1446,8 @@
     my $sql = $self->sql;
 
-    unless ($key) {
-        $log->warn("key was undefined after validate_pos(), trying again...");
-        return $self->find_instances(@_);
-    }
+#    unless ($key) {
+#        $log->warn("key was undefined after validate_pos(), trying again...");
+#        return $self->find_instances(@_);
+#    }
 
     # vol_name overrides the key implied volume
@@ -1464,9 +1464,9 @@
     if (defined $vol_name
         and not $self->_is_valid_volume_name($key, $key->volume)) {
-        if ($key->soft_volume) {
+        if ($key->hard_volume) {
+            $log->logdie("$vol_name is not a valid volume name");
+        } else {
             $log->warn( "$vol_name is not a known volume name" );
             $vol_name = undef;
-        } else {
-            $log->logdie("$vol_name is not a valid volume name");
         }
     }
@@ -1501,5 +1501,5 @@
         $db->rollback;
         # handle soft volumes
-        if (defined $vol_name and defined $key->soft_volume) {
+        if (defined $vol_name and not defined $key->hard_volume) {
             $log->debug("retrying with 'any' volume");
             return $self->find_instances($key->path, 'any');
@@ -1794,5 +1794,5 @@
     use warnings;
 
-    my ($key, $name, $soft_volume) = @_;
+    my ($key, $name, $hard_volume) = @_;
 
     my $sql = $self->sql;
@@ -1813,5 +1813,5 @@
                 # if a volume name was specified, and is soft, and we failed to
                 # find it, fall back to any volume
-                if ($soft_volume) {
+                unless ($hard_volume) {
                     ($vol_id, $vol_host, $vol_path, $xattr) = $self->_get_storage_volume($key);
                     return; # this just returns out of the eval not from the subroutine
@@ -1831,5 +1831,5 @@
             unless ($rows > 0) {
                 $query->finish;
-                $log->logdie("no storage volume is available for key: $key volume: $name soft: $soft_volume");
+                $log->logdie("no storage volume is available for key: $key volume: $name hard_volume: $hard_volume");
             }
         }
@@ -1962,4 +1962,6 @@
     my $sql = $self->sql;
 
+    # the volume name implied by the key is ignored.  $key is only needed to
+    # select a database connection
     eval {
         $key = parse_neb_key($key);
