From patchwork Sun Jan 11 18:51:35 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Simon_Holm_Th=C3=B8gersen?= X-Patchwork-Id: 17839 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id B1962DDFAF for ; Mon, 12 Jan 2009 06:13:22 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754927AbZAKTMw (ORCPT ); Sun, 11 Jan 2009 14:12:52 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754929AbZAKTMw (ORCPT ); Sun, 11 Jan 2009 14:12:52 -0500 Received: from smtp.cs.aau.dk ([130.225.194.6]:54714 "EHLO smtp.cs.aau.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754892AbZAKTMu (ORCPT ); Sun, 11 Jan 2009 14:12:50 -0500 X-Greylist: delayed 1362 seconds by postgrey-1.27 at vger.kernel.org; Sun, 11 Jan 2009 14:12:50 EST Received: from [10.0.0.2] (port939.ds1-abc.adsl.cybercity.dk [212.242.156.194]) (authenticated bits=0) by smtp.cs.aau.dk (8.14.1/8.14.1) with ESMTP id n0BInZ8e015290 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 11 Jan 2009 19:49:38 +0100 Subject: [PATCH] jbd2: fix wrong use of do_div From: Simon Holm =?ISO-8859-1?Q?Th=F8gersen?= To: Theodore Tso Cc: linux-ext4 , linux-kernel@cs.aau.dk Date: Sun, 11 Jan 2009 19:51:35 +0100 Message-Id: <1231699895.17759.19.camel@odie.local> Mime-Version: 1.0 X-Mailer: Evolution 2.22.3.1 X-Spam-Level: () 0.22 X-Scanned-By: MIMEDefang 2.62 on 130.225.194.6 Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org the following warning: fs/jbd2/journal.c: In function ‘jbd2_seq_info_show’: fs/jbd2/journal.c:850: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 3 has type ‘uint32_t’ is caused by wrong usage of do_div that modifies the dividend in-place and returns the quotient. So not only would an incorrect value be displayed, but s->journal->j_average_commit_time would also be changed to a wrong value! This patch fixes it. Signed-off-by: Simon Holm Thøgersen --- fs/jbd2/journal.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c index 5667530..f9620e3 100644 --- a/fs/jbd2/journal.c +++ b/fs/jbd2/journal.c @@ -828,6 +828,7 @@ static void *jbd2_seq_info_next(struct seq_file *seq, void *v, loff_t *pos) static int jbd2_seq_info_show(struct seq_file *seq, void *v) { struct jbd2_stats_proc_session *s = seq->private; + u64 n; if (v != SEQ_START_TOKEN) return 0; @@ -846,8 +847,11 @@ static int jbd2_seq_info_show(struct seq_file *seq, void *v) jiffies_to_msecs(s->stats->u.run.rs_flushing / s->stats->ts_tid)); seq_printf(seq, " %ums logging transaction\n", jiffies_to_msecs(s->stats->u.run.rs_logging / s->stats->ts_tid)); - seq_printf(seq, " %luus average transaction commit time\n", - do_div(s->journal->j_average_commit_time, 1000)); + + n = s->journal->j_average_commit_time; + do_div(n, 1000); + seq_printf(seq, " %llus average transaction commit time\n", n); + seq_printf(seq, " %lu handles per transaction\n", s->stats->u.run.rs_handle_count / s->stats->ts_tid); seq_printf(seq, " %lu blocks per transaction\n",