]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: clean up Inode::authority
authorGreg Farnum <gregf@hq.newdream.net>
Tue, 29 Jun 2010 17:32:18 +0000 (10:32 -0700)
committerGreg Farnum <gregf@hq.newdream.net>
Wed, 30 Jun 2010 23:06:52 +0000 (16:06 -0700)
src/client/Client.h

index 2959903ef98c201a09a8bd975090df7b61149e4d..26017791535b9f52751341af416518c5e8023f69 100644 (file)
@@ -617,15 +617,15 @@ class Inode {
  
   int authority(const string& dname) {
     if (!dirfragtree.empty()) {
-      __gnu_cxx::hash<string> H;
-      frag_t fg = dirfragtree[H(dname)];
+      __u32 H = ceph_str_hash_linux(dname.data(), dname.length());
+      frag_t fg = dirfragtree[H];
       while (fg != frag_t()) {
-       if (fragmap.count(fg) &&
-           fragmap[fg] >= 0) {
-         //cout << "picked frag ino " << inode.ino << " dname " << dname << " fg " << fg << " mds" << fragmap[fg] << std::endl;
-         return fragmap[fg];
-       }
-       fg = frag_t(fg.value(), fg.bits()-1); // try more general...
+        if (fragmap.count(fg) &&
+            fragmap[fg] >= 0) {
+          //cout << "picked frag ino " << ino << " dname " << dname << " fg " << fg << " mds" << fragmap[fg] << std::endl;
+          return fragmap[fg];
+        }
+        fg = frag_t(fg.value(), fg.bits()-1); // try more general...
       }
     }
     return authority();