From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751115AbbJAXPr (ORCPT ); Thu, 1 Oct 2015 19:15:47 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:59281 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750788AbbJAXPq (ORCPT ); Thu, 1 Oct 2015 19:15:46 -0400 Date: Thu, 1 Oct 2015 16:15:45 -0700 From: Andrew Morton To: Sudip Mukherjee Cc: Joern Engel , Prasad Joshi , linux-kernel@vger.kernel.org, logfs@logfs.org Subject: Re: [PATCH] logfs: fix build warning Message-Id: <20151001161545.0c4d20f029af4985b47b86fe@linux-foundation.org> In-Reply-To: <1441879864-17487-1-git-send-email-sudipm.mukherjee@gmail.com> References: <1441879864-17487-1-git-send-email-sudipm.mukherjee@gmail.com> X-Mailer: Sylpheed 3.4.1 (GTK+ 2.24.23; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 10 Sep 2015 15:41:04 +0530 Sudip Mukherjee wrote: > While building we were getting build warning of: > > fs/logfs/dev_bdev.c: In function '__bdev_writeseg': > include/linux/kernel.h:601:17: warning: comparison of distinct pointer types lacks a cast [enabled by default] > (void) (&_min1 == &_min2); \ > fs/logfs/dev_bdev.c:84:14: note: in expansion of macro 'min' > max_pages = min(nr_pages, BIO_MAX_PAGES); > > fs/logfs/dev_bdev.c: In function 'do_erase': > include/linux/kernel.h:601:17: warning: comparison of distinct pointer types lacks a cast [enabled by default] > (void) (&_min1 == &_min2); \ > fs/logfs/dev_bdev.c:174:14: note: in expansion of macro 'min' > max_pages = min(nr_pages, BIO_MAX_PAGES); > > Lets use min_t and mention the type. > > ... > > --- a/fs/logfs/dev_bdev.c > +++ b/fs/logfs/dev_bdev.c > @@ -81,7 +81,7 @@ static int __bdev_writeseg(struct super_block *sb, u64 ofs, pgoff_t index, > unsigned int max_pages; > int i; > > - max_pages = min(nr_pages, BIO_MAX_PAGES); > + max_pages = min_t(size_t, nr_pages, BIO_MAX_PAGES); > > bio = bio_alloc(GFP_NOFS, max_pages); > BUG_ON(!bio); > @@ -171,7 +171,7 @@ static int do_erase(struct super_block *sb, u64 ofs, pgoff_t index, > unsigned int max_pages; > int i; > > - max_pages = min(nr_pages, BIO_MAX_PAGES); > + max_pages = min_t(size_t, nr_pages, BIO_MAX_PAGES); > > bio = bio_alloc(GFP_NOFS, max_pages); > BUG_ON(!bio); I don't think it's logical for either __bdev_writeseg() or do_erase() to use size_t for `nr_pages'. For "number of pagecache pages" we'd normally use pgoff_t or unsigned long. But they'd generate warnings as well, because BIO_MAX_PAGES is plain old `int'. Ho hum.