Re: [PATCH v2 01/17] mm: drop "wait" parameter from write_one_page

Matthew Wilcox <[email protected]>
Newsgroups gmane.comp.file-systems.jfs.general
Message-ID <[email protected]>
Sorry, meant to CC you and forgot.

----- Forwarded message from Matthew Wilcox <[email protected]> -----

Date: Wed, 12 Apr 2017 07:27:26 -0700
From: Matthew Wilcox <[email protected]>
To: Jeff Layton <[email protected]>
Cc: [email protected], [email protected],
	[email protected], [email protected], [email protected], [email protected],
	[email protected]
Subject: Re: [PATCH v2 01/17] mm: drop "wait" parameter from write_one_page
User-Agent: Mutt/1.7.1 (2016-10-04)

On Wed, Apr 12, 2017 at 08:05:58AM -0400, Jeff Layton wrote:
> The callers all set it to 1. Also, make it clear that this function will
> not set any sort of AS_* error, and that the caller must do so if
> necessary. No existing caller uses this on normal files, so none of them
> need it.

So ... anyone who doesn't check the error code loses an error indication.

> +++ b/fs/jfs/jfs_metapage.c
> @@ -711,7 +711,7 @@ void force_metapage(struct metapage *mp)
>  	get_page(page);
>  	lock_page(page);
>  	set_page_dirty(page);
> -	write_one_page(page, 1);
> +	write_one_page(page);
>  	clear_bit(META_forcewrite, &mp->flag);
>  	put_page(page);
>  }
> @@ -756,7 +756,7 @@ void release_metapage(struct metapage * mp)
>  		set_page_dirty(page);
>  		if (test_bit(META_sync, &mp->flag)) {
>  			clear_bit(META_sync, &mp->flag);
> -			write_one_page(page, 1);
> +			write_one_page(page);
>  			lock_page(page); /* write_one_page unlocks the page */
>  		}
>  	} else if (mp->lsn)	/* discard_metapage doesn't remove it */

This looks quite bad.  If my reading is right, these pages are part of
the journal.  I think somebody who knows JFS needs to figure out what
should happen here ...

> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 00a8fa7e366a..f25b76486645 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -2187,7 +2187,7 @@ extern void filemap_map_pages(struct vm_fault *vmf,
>  extern int filemap_page_mkwrite(struct vm_fault *vmf);
>  
>  /* mm/page-writeback.c */
> -int write_one_page(struct page *page, int wait);
> +int write_one_page(struct page *page);
>  void task_dirty_inc(struct task_struct *tsk);
>  
>  /* readahead.c */

Can we mark this as __must_check so JFS picks up a couple of warnings?

Reviewed-by: Matthew Wilcox <[email protected]>

----- End forwarded message -----

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.