From patchwork Tue Oct 2 08:55:49 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yan, Zheng" X-Patchwork-Id: 1536471 Return-Path: X-Original-To: patchwork-ceph-devel@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id C4F36DF238 for ; Tue, 2 Oct 2012 08:56:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754858Ab2JBI4T (ORCPT ); Tue, 2 Oct 2012 04:56:19 -0400 Received: from mga03.intel.com ([143.182.124.21]:51424 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754782Ab2JBI4R (ORCPT ); Tue, 2 Oct 2012 04:56:17 -0400 Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga101.ch.intel.com with ESMTP; 02 Oct 2012 01:56:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.80,522,1344236400"; d="scan'208";a="199528034" Received: from unknown (HELO zyan5-mobl.ccr.corp.intel.com) ([10.255.21.40]) by azsmga001.ch.intel.com with ESMTP; 02 Oct 2012 01:56:16 -0700 From: "Yan, Zheng" To: sage@inktank.com, ceph-devel@vger.kernel.org Cc: "Yan, Zheng" Subject: [PATCH 09/12] mds: Properly update dirty dir fragstat during log replay Date: Tue, 2 Oct 2012 16:55:49 +0800 Message-Id: <1349168152-13281-9-git-send-email-zheng.z.yan@intel.com> X-Mailer: git-send-email 1.7.11.4 In-Reply-To: <1349168152-13281-1-git-send-email-zheng.z.yan@intel.com> References: <1349168152-13281-1-git-send-email-zheng.z.yan@intel.com> Sender: ceph-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org From: "Yan, Zheng" Dirty dir fragstat is managed by filelock instead of nestlock. Signed-off-by: Yan, Zheng --- src/mds/journal.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mds/journal.cc b/src/mds/journal.cc index 38f8c0e..0de3f39 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -488,14 +488,20 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg) dir->get_inode()->filelock.mark_dirty(); dir->get_inode()->nestlock.mark_dirty(); - if (!(dir->fnode.rstat == dir->fnode.accounted_rstat) || - !(dir->fnode.fragstat == dir->fnode.accounted_fragstat)) { + if (!(dir->fnode.rstat == dir->fnode.accounted_rstat)) { dout(10) << "EMetaBlob.replay dirty nestinfo on " << *dir << dendl; mds->locker->mark_updated_scatterlock(&dir->inode->nestlock); logseg->dirty_dirfrag_nest.push_back(&dir->inode->item_dirty_dirfrag_nest); } else { dout(10) << "EMetaBlob.replay clean nestinfo on " << *dir << dendl; } + if (!(dir->fnode.fragstat == dir->fnode.accounted_fragstat)) { + dout(10) << "EMetaBlob.replay dirty fragstat on " << *dir << dendl; + mds->locker->mark_updated_scatterlock(&dir->inode->filelock); + logseg->dirty_dirfrag_dir.push_back(&dir->inode->item_dirty_dirfrag_dir); + } else { + dout(10) << "EMetaBlob.replay clean fragstat on " << *dir << dendl; + } } if (lump.is_new()) dir->mark_new(logseg);