]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
uclient: flush/release buffered data on umount
authorSage Weil <sage@newdream.net>
Wed, 21 Jan 2009 18:42:57 +0000 (10:42 -0800)
committerSage Weil <sage@newdream.net>
Wed, 21 Jan 2009 18:42:57 +0000 (10:42 -0800)
src/client/Client.cc

index c342e59e56aaff0ce7e004d0ab9bdeadec950f9b..d48638092bbaf972c6458cb5f3ab7b33118fec22 100644 (file)
@@ -2429,25 +2429,8 @@ int Client::unmount()
   lru.lru_set_max(0);
   trim_cache();
 
-  // flush delayed caps
-  xlist<Inode*>::iterator p = delayed_caps.begin();
-  while (!p.end()) {
-    Inode *in = *p;
-    ++p;
-    delayed_caps.pop_front();
-    check_caps(in, true);
-  }
-
-  // other caps, too
-  p = cap_list.begin();
-  while (!p.end()) {
-    Inode *in = *p;
-    ++p;
-    check_caps(in, true);
-  }
-
   if (g_conf.client_oc) {
-    // release any/all caps
+    // flush/release all buffered data
     hash_map<vinodeno_t, Inode*>::iterator next;
     for (hash_map<vinodeno_t, Inode*>::iterator p = inode_map.begin();
          p != inode_map.end(); 
@@ -2468,6 +2451,23 @@ int Client::unmount()
     }
   }
 
+  // flush delayed caps
+  xlist<Inode*>::iterator p = delayed_caps.begin();
+  while (!p.end()) {
+    Inode *in = *p;
+    ++p;
+    delayed_caps.pop_front();
+    check_caps(in, true);
+  }
+
+  // other caps, too
+  p = cap_list.begin();
+  while (!p.end()) {
+    Inode *in = *p;
+    ++p;
+    check_caps(in, true);
+  }
+
   //if (0) {// hack
   while (lru.lru_get_size() > 0 || 
          !inode_map.empty()) {