From f0deeb3b9f847ab60cd61ffca6216374f333cb0c Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sun, 25 May 2008 13:23:33 -0700 Subject: [PATCH] mds: no need for nestedlock --- src/mds/Locker.cc | 8 ++++---- src/mds/Server.cc | 14 +++++++------- src/mds/journal.cc | 6 ++++-- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index f2e0f9aae57b4..b7f7e1a4bfdef 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -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; } diff --git a/src/mds/Server.cc b/src/mds/Server.cc index d881822674585..9648bfe57b5b0 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -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; diff --git a/src/mds/journal.cc b/src/mds/journal.cc index 4bcfa32a2707a..0121cfabda165 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -125,6 +125,7 @@ C_Gather *LogSegment::try_to_expire(MDS *mds) } //(*p)->dirlock.add_waiter(SimpleLock::WAIT_STABLE, gather->new_sub()); } + /* for (xlist::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()) -- 2.39.5