Index: trunk/Nebulous-Server/Build.PL
===================================================================
--- trunk/Nebulous-Server/Build.PL	(revision 23654)
+++ trunk/Nebulous-Server/Build.PL	(revision 23655)
@@ -15,17 +15,18 @@
         'DBI'                   => '1.53',
         'Digest::SHA1'          => 0,
+        'File::Basename'        => 0,
         'File::ExtAttr'         => '1.03',
         'File::Mountpoint'      => '0.01',
         'File::Path'            => '1.08',
         'File::Spec'            => 0,
-        'Filesys::Df'           => '0.92',
         'File::Spec::Functions' => 0,
         'File::Temp'            => 0,
+        'Filesys::Df'           => '0.92',
         'Log::Log4perl'         => '0.48',
         'Net::Server::Daemonize'=> '0.05',
         'Params::Validate'      => '0.73',
         'SOAP::Lite'            => '0.69',
+        'SQL::Interp'           => '1.06',
         'URI'                   => '1.30',
-        'SQL::Interp'           => '1.06',
     },
     build_requires      => {
Index: trunk/Nebulous-Server/Changes
===================================================================
--- trunk/Nebulous-Server/Changes	(revision 23654)
+++ trunk/Nebulous-Server/Changes	(revision 23655)
@@ -4,4 +4,6 @@
     - retry database transactions when a deadlock is detected
     - add log4perl logging to nebdiskd
+    - base the on disk directory hashing of files only on the dirname()
+      component of keys
 
 0.16
Index: trunk/Nebulous-Server/lib/Nebulous/Server.pm
===================================================================
--- trunk/Nebulous-Server/lib/Nebulous/Server.pm	(revision 23654)
+++ trunk/Nebulous-Server/lib/Nebulous/Server.pm	(revision 23655)
@@ -15,12 +15,13 @@
 use DBI;
 use Digest::SHA1 qw( sha1_hex );
+use File::Basename qw( dirname );
 use File::ExtAttr qw( setfattr );
 use File::Path;
 use File::Spec;
 use Log::Log4perl;
+use Nebulous::Keys qw( parse_neb_key parse_neb_volume );
 use Nebulous::Server::Config;
 use Nebulous::Server::Log;
 use Nebulous::Server::SQL;
-use Nebulous::Keys qw( parse_neb_key parse_neb_volume );
 use Params::Validate qw( validate_pos SCALAR SCALARREF UNDEF );
 use URI::file;
@@ -1579,4 +1580,9 @@
     my ($key, $vol_path) = @_;
 
+    # if the key has '/' in it, hash only the dirname() component
+    if ($key =~ m|/|) {
+        $key = dirname($key);
+    }
+
     # taken and modified from Cache::File::cache_file_path()
     # Copyright (C) 2003-2006 Chris Leishman.  All Rights Reserved.
