Index: trunk/Nebulous-Server/scripts/dirize.pl
===================================================================
--- trunk/Nebulous-Server/scripts/dirize.pl	(revision 24387)
+++ trunk/Nebulous-Server/scripts/dirize.pl	(revision 24404)
@@ -1,3 +1,6 @@
 #!/usr/bin/env perl
+
+# query to check for duplicate directory entries
+# select count(*) from (select so.so_id, so.ext_id, so.dir_id from storage_object as so join (select dir_id, dirname, parent_id, count(*) from directory group by dirname, parent_id  having count(*) > 1) as foo on so.dir_id = foo.dir_id) as foo;
 
 use strict;
@@ -30,5 +33,13 @@
 #}
 
-my $query = $db->prepare_cached("SELECT so_id, ext_id, dir_id FROM storage_object AS so WHERE so.dir_id = 0 LIMIT 1000");
+# repair directory duplication
+#my $query = $db->prepare_cached("select so.so_id, so.ext_id, so.dir_id from storage_object as so join (select dir_id, dirname, parent_id, count(*) from directory group by dirname, parent_id  having count(*) > 1) as foo on so.dir_id = foo.dir_id limit 1000");
+
+# initial directory fill in
+my $query = $db->prepare_cached("SELECT so_id, ext_id, dir_id FROM storage_object AS so WHERE so.dir_id = 0 LIMIT 100000");
+
+$db->do("SET FOREIGN_KEY_CHECKS=0");
+#$db->do("UPDATE storage_object SET dir_id = 0");
+#$db->do("DELETE FROM directory");
 
 my $i = 0;
@@ -40,10 +51,18 @@
 
 #printf("dirizing %20s basename: %20s parent_id %10d\n", $key, basename($row->{'ext_id'}), $parent_id);
-        printf("$i/$n dirizing %s\n", $key->path);
+#        printf("$i dirizing %s\n", $key->path);
 
         my $q = $db->prepare_cached("UPDATE storage_object SET ext_id_basename = ?, dir_id = ? WHERE so_id = ?");
         $q->execute(basename($row->{'ext_id'}), $parent_id, $row->{'so_id'});
-        $db->commit;
     }
+    $db->commit;
+    printf("### COMMIT ###\n");
     $query->finish;
+    printf("dirized $i\n");
 }
+
+$db->do("SET FOREIGN_KEY_CHECKS=1");
+
+# remove unused dirs
+#$db-do("");
+#$db->commit;
