From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759972AbbIWB0a (ORCPT ); Tue, 22 Sep 2015 21:26:30 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:56678 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752909AbbIWB01 (ORCPT ); Tue, 22 Sep 2015 21:26:27 -0400 X-AuditID: cbfee61a-f79a06d000005c6f-8a-5601ffc11bfd From: Chao Yu To: Jaegeuk Kim Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: [PATCH] f2fs: fix incorrect bimodal calculation Date: Wed, 23 Sep 2015 09:25:43 +0800 Message-id: <010701d0f59e$dcc573b0$96505b10$@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: AdD1nrF8FmqITq5FRaCUpDBDBAnvjw== Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrFLMWRmVeSWpSXmKPExsVy+t9jAd2D/xnDDP7sFbN4sn4Ws8WlRe4W l3fNYXNg9ti0qpPNY/eCz0wenzfJBTBHcdmkpOZklqUW6dslcGXMvSRWcJa9YvnhjAbG6Wxd jJwcEgImEiufP2aBsMUkLtxbDxTn4hASWMoosb99KTOE84pRouPwBXaQKjYBFYnlHf+ZQGwR IPvQostgcWYBD4nGju+sILawgIXE8s8nwOIsAqoSLw49ZAaxeQUsJXae7mWHsAUlfky+xwLR qyWxfudxJghbXmLzmrfMEBcpSOw4+5oRYpeexNOv06BqxCU2HrnFMoFRYBaSUbOQjJqFZNQs JC0LGFlWMUqkFiQXFCel5xrmpZbrFSfmFpfmpesl5+duYgSH8DOpHYwHd7kfYhTgYFTi4bX4 zhgmxJpYVlyZe4hRgoNZSYT3zh+gEG9KYmVValF+fFFpTmrxIUZpDhYlcd4bhxjChATSE0tS s1NTC1KLYLJMHJxSDYzLbcp++LgfSIg/0r6vzfNkcFLUsQ/L/sYyOG4PKf+RwOfI9ITPy+Pc J/sYhvjHhbnfum5e02VouPS2SmP3XknJDQuiC59ZX3kg7cnklrfqpki40oyHS8ImLehd/UrC YPqjqdXKfjFnLZ7xtc0uiBYruxnXI3T614QPs0yW3vD4teDFw9uTfz1RYinOSDTUYi4qTgQA 4r9HpF0CAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In update_sit_info, we use div_u64 to handle 'u64 divide u64' case, but div_u64 can only handle 32-bits divisor, so our divisor with u64 type passed to div_u64 will overflow, result in the wrong calculation when show debug info of f2fs as below: BDF: 464, avg. vblocks: 23509 (BDF should never exceed 100) So change to use div64_u64 to handle this case correctly. Signed-off-by: Chao Yu --- fs/f2fs/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c index ebfcc40..615a307 100644 --- a/fs/f2fs/debug.c +++ b/fs/f2fs/debug.c @@ -118,7 +118,7 @@ static void update_sit_info(struct f2fs_sb_info *sbi) } } dist = div_u64(MAIN_SECS(sbi) * hblks_per_sec * hblks_per_sec, 100); - si->bimodal = div_u64(bimodal, dist); + si->bimodal = div64_u64(bimodal, dist); if (si->dirty_count) si->avg_vblocks = div_u64(total_vblocks, ndirty); else -- 2.5.2