Messages in this thread | | | Date | Thu, 1 Oct 2015 16:15:45 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH] logfs: fix build warning |
| |
On Thu, 10 Sep 2015 15:41:04 +0530 Sudip Mukherjee <sudipm.mukherjee@gmail.com> 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.
| |