]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: no need for nestedlock
authorSage Weil <sage@newdream.net>
Sun, 25 May 2008 20:23:33 +0000 (13:23 -0700)
committerSage Weil <sage@newdream.net>
Sun, 25 May 2008 20:23:33 +0000 (13:23 -0700)
src/mds/Locker.cc
src/mds/Server.cc
src/mds/journal.cc

index f2e0f9aae57b47325da468d2962ba9f73583383c..b7f7e1a4bfdef59bc6f816d02a4174c4848b714e 100644 (file)
@@ -1251,13 +1251,13 @@ void Locker::predirty_nested(Mutation *mut, EMetaBlob *blob,
 
     if (do_parent) {
       assert(mut->wrlocks.count(&pin->dirlock));
-      assert(mut->wrlocks.count(&pin->nestedlock));
+      //assert(mut->wrlocks.count(&pin->nestedlock));
     }
 
     if (do_nested &&
-       mut->wrlocks.count(&pin->nestedlock) == 0 &&
-       !scatter_wrlock_try(&pin->nestedlock, mut)) {
-      dout(10) << "predirty_nested can't wrlock " << pin->nestedlock << " on " << *pin << dendl;
+       mut->wrlocks.count(&pin->dirlock) == 0 &&
+       !scatter_wrlock_try(&pin->dirlock, mut)) {
+      dout(10) << "predirty_nested can't wrlock " << pin->dirlock << " on " << *pin << dendl;
       do_nested = false;
       break;
     }
index d881822674585a3af62a338f999d9e74a83c1b21..9648bfe57b5b0acec9f7c8b0c11e8c2f93939bd6 100644 (file)
@@ -1420,7 +1420,7 @@ CDentry* Server::rdlock_path_xlock_dentry(MDRequest *mdr, bool okexist, bool mus
   else
     rdlocks.insert(&dn->lock);  // existing dn, rdlock
   wrlocks.insert(&dn->dir->inode->dirlock); // also, wrlock on dir mtime
-  wrlocks.insert(&dn->dir->inode->nestedlock); // also, wrlock on dir mtime
+  //wrlocks.insert(&dn->dir->inode->nestedlock); // also, wrlock on dir mtime
 
   if (!mds->locker->acquire_locks(mdr, rdlocks, wrlocks, xlocks))
     return 0;
@@ -2216,7 +2216,7 @@ void Server::handle_client_link(MDRequest *mdr)
     rdlocks.insert(&linktrace[i]->lock);
   xlocks.insert(&dn->lock);
   wrlocks.insert(&dn->dir->inode->dirlock);
-  wrlocks.insert(&dn->dir->inode->nestedlock);
+  //wrlocks.insert(&dn->dir->inode->nestedlock);
   for (int i=0; i<(int)targettrace.size(); i++)
     rdlocks.insert(&targettrace[i]->lock);
   xlocks.insert(&targeti->linklock);
@@ -2665,7 +2665,7 @@ void Server::handle_client_unlink(MDRequest *mdr)
     rdlocks.insert(&trace[i]->lock);
   xlocks.insert(&dn->lock);
   wrlocks.insert(&dn->dir->inode->dirlock);
-  wrlocks.insert(&dn->dir->inode->nestedlock);
+  //wrlocks.insert(&dn->dir->inode->nestedlock);
   xlocks.insert(&in->linklock);
   
   if (!mds->locker->acquire_locks(mdr, rdlocks, wrlocks, xlocks))
@@ -3109,9 +3109,9 @@ void Server::handle_client_rename(MDRequest *mdr)
     rdlocks.insert(&srctrace[i]->lock);
   xlocks.insert(&srcdn->lock);
   wrlocks.insert(&srcdn->dir->inode->dirlock);
-  wrlocks.insert(&srcdn->dir->inode->nestedlock);
+  //wrlocks.insert(&srcdn->dir->inode->nestedlock);
   if (srcdn->is_primary() && srcdn->inode->is_dir())
-    xlocks.insert(&srcdn->inode->nestedlock);
+    xlocks.insert(&srcdn->inode->dirlock);
 
   /*
    * no, this causes problems if the dftlock is scattered...
@@ -3124,9 +3124,9 @@ void Server::handle_client_rename(MDRequest *mdr)
     rdlocks.insert(&desttrace[i]->lock);
   xlocks.insert(&destdn->lock);
   wrlocks.insert(&destdn->dir->inode->dirlock);
-  wrlocks.insert(&destdn->dir->inode->nestedlock);
+  //wrlocks.insert(&destdn->dir->inode->nestedlock);
   if (destdn->is_primary() && destdn->inode->is_dir())
-    xlocks.insert(&destdn->inode->nestedlock);
+    xlocks.insert(&destdn->inode->dirlock);
 
   // xlock versionlock on srci if remote?
   //  this ensures it gets safely remotely auth_pinned, avoiding deadlock;
index 4bcfa32a2707af95f55881393ff60b2109537d59..0121cfabda1650c937ab3c66d27b69483525a0c9 100644 (file)
@@ -125,6 +125,7 @@ C_Gather *LogSegment::try_to_expire(MDS *mds)
     }
     //(*p)->dirlock.add_waiter(SimpleLock::WAIT_STABLE, gather->new_sub());
   }
+  /*
   for (xlist<CInode*>::iterator p = dirty_dirfrag_nested.begin(); !p.end(); ++p) {
     CInode *in = *p;
     dout(10) << "try_to_expire waiting for nestedlock flush on " << *in << dendl;
@@ -144,7 +145,8 @@ C_Gather *LogSegment::try_to_expire(MDS *mds)
     }
     //(*p)->nestedlock.add_waiter(SimpleLock::WAIT_STABLE, gather->new_sub());
   }
-  
+  */
+
   // open files
   if (!open_files.empty()) {
     assert(!mds->mdlog->is_capped()); // hmm FIXME
@@ -316,7 +318,7 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg)
     if (lump.is_dirty()) {
       dir->_mark_dirty(logseg);
       dir->get_inode()->dirlock.set_updated();
-      dir->get_inode()->nestedlock.set_updated();
+      //dir->get_inode()->nestedlock.set_updated();
     }
 
     if (lump.is_complete())