From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753396AbbAaJH5 (ORCPT ); Sat, 31 Jan 2015 04:07:57 -0500 Received: from mailout1.samsung.com ([203.254.224.24]:64562 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751783AbbAaJHx (ORCPT ); Sat, 31 Jan 2015 04:07:53 -0500 X-AuditID: cbfee61a-f79c06d000004e71-69-54cc9b684bc8 From: Chao Yu To: Jaegeuk Kim , Changman Lee Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] f2fs: don't discard next free dnode page for an umount checkpoint Date: Sat, 31 Jan 2015 17:06:59 +0800 Message-id: <008c01d03d35$62ceb7a0$286c26e0$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7bit X-Mailer: Microsoft Outlook 14.0 Thread-index: AdA9NTqpcXVNg+VvRdKm+iQJHz30MQ== Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrILMWRmVeSWpSXmKPExsVy+t9jQd2M2WdCDNZ+4La4tq+RyeLJ+lnM FpcWuVtc3jWHzYHFY9OqTjaP3Qs+M3n0bVnF6PF5k1wASxSXTUpqTmZZapG+XQJXxvb5d1gL ergqVn88wdzAOIOji5GTQ0LARGLzvCYWCFtM4sK99WxdjFwcQgLTGSXm3OoESwgJ/GCUuLpQ FMRmE1CRWN7xnwnEFhHwkpi0/wRYDbOAh0Rjx3fWLkYODmGBCIneLTIgYRYBVYkl/3eBlfMK WErcm97ECGELSvyYfA+qVUti/c7jTBC2vMTmNW+ZIe5RkNhx9jUjxCo9id13QW4DqRGX2Hjk FssERoFZSEbNQjJqFpJRs5C0LGBkWcUomlqQXFCclJ5rqFecmFtcmpeul5yfu4kRHNDPpHYw rmywOMQowMGoxMNbYXkmRIg1say4MvcQowQHs5IIb4sRUIg3JbGyKrUoP76oNCe1+BCjNAeL kjivkn1biJBAemJJanZqakFqEUyWiYNTqoFRczffnttuq3+tvPQrrj7ALU8py1uRa2b0+oyQ md8cVy3IfhYslJvOuy/l+3WObs/D3I5eWxa+TOtiOJjVZut77W9lyGTOgMXXP3DfTXSKP9Js F3bxaLGxmcaKLGn9/zJfWl68+cZ/bndf0e0dBTYn/vyQ+aL9QOXyrCbny6ujoif/Zq0+vl1L iaU4I9FQi7moOBEAZ8J0jWQCAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Previously, discard_next_dnode is added before a checkpoint to prevent that we may meet a garbage dnode page readed from next free blkaddr in recover flow. Since f2fs will skip recovery flow for a clean umount image, this condition will never happen. So it's safe for us to leave next free dnode as it is in an umount checkpoint. Signed-off-by: Chao Yu --- fs/f2fs/checkpoint.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c index f7cdcad..991fd0a 100644 --- a/fs/f2fs/checkpoint.c +++ b/fs/f2fs/checkpoint.c @@ -905,8 +905,12 @@ static void do_checkpoint(struct f2fs_sb_info *sbi, struct cp_control *cpc) /* * This avoids to conduct wrong roll-forward operations and uses * metapages, so should be called prior to sync_meta_pages below. + * But if we are in an umount checkpoint, we'd better skip this + * because we will not enter recovery flow to use the next free + * blkaddr when mounting it. */ - discard_next_dnode(sbi, NEXT_FREE_BLKADDR(sbi, curseg)); + if (cpc->reason != CP_UMOUNT) + discard_next_dnode(sbi, NEXT_FREE_BLKADDR(sbi, curseg)); /* Flush all the NAT/SIT pages */ while (get_pages(sbi, F2FS_DIRTY_META)) { -- 2.2.1