Re: [PATCH] mm: add prototype for __add_to_page_cache_locked()

From: Andrew Morton
Date: Tue Dec 22 2020 - 18:54:27 EST


On Tue, 22 Dec 2020 20:40:00 +0000 Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:

> On Tue, Dec 22, 2020 at 07:49:52PM +0530, Souptick Joarder wrote:
> > Otherwise it cause gcc warning:
> > ^~~~~~~~~~~~~~~
>
> That line is just confusing.

I cleaned up the changelog. It is presently

: Subject: include/linux/mm.h: add prototype for __add_to_page_cache_locked()
:
: Otherwise it causes a gcc warning:
:
: ../mm/filemap.c:830:14: warning: no previous prototype for
: `__add_to_page_cache_locked' [-Wmissing-prototypes]
:
: A previous attempt to make this function static led to compilation
: errors for a few architectures, because __add_to_page_cache_locked() is
: referred to by BPF code.
:
: Adding a prototype will silence the warning.

> > --- a/include/linux/mm.h
> > +++ b/include/linux/mm.h
> > @@ -216,6 +216,12 @@ int overcommit_kbytes_handler(struct ctl_table *, int, void *, size_t *,
> > loff_t *);
> > int overcommit_policy_handler(struct ctl_table *, int, void *, size_t *,
> > loff_t *);
> > +/*
> > + * Any attempt to mark this function as static leads to build failure
> > + * for few architectures. Adding a prototype to silence gcc warning.
> > + */
>
> We don't need a comment here for this. The commit log is enough.

I think it's OK - people do send patches which remove a prototype and
also make the function static. A tree-wide grep would catch the bpf
reference but I suspect people tend to grep for "foo(" rather then
"foo".

> > +int __add_to_page_cache_locked(struct page *page, struct address_space *mapping,
> > + pgoff_t offset, gfp_t gfp, void **shadowp);
>
> Please name that 'index', not 'offset'.

I too prefer index over offset.

X1:/usr/src/linux-5.10> grep -r "pgoff_t offset" . | wc -l
52
X1:/usr/src/linux-5.10> grep -r "pgoff_t index" . | wc -l
250

But renaming this arg should be a separate patch.

And I don't think we should be preparing large "rename offset to index"
patches, please. The value/noise ratio is too low.