From: Jan Kara <jack@suse.cz>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH v3] mm: add file_fdatawait_range and file_write_and_wait
Date: Tue, 1 Aug 2017 11:52:31 +0200 [thread overview]
Message-ID: <20170801095231.GE4215@quack2.suse.cz> (raw)
In-Reply-To: <20170731164925.2158-1-jlayton@kernel.org>
On Mon 31-07-17 12:49:25, Jeff Layton wrote:
> From: Jeff Layton <jlayton@redhat.com>
>
> Necessary now for gfs2_fsync and sync_file_range, but there will
> eventually be other callers.
>
> Signed-off-by: Jeff Layton <jlayton@redhat.com>
Looks good to me. You can add:
Reviewed-by: Jan Kara <jack@suse.cz>
Honza
> ---
> include/linux/fs.h | 11 ++++++++++-
> mm/filemap.c | 23 +++++++++++++++++++++++
> 2 files changed, 33 insertions(+), 1 deletion(-)
>
> v3: make file_write_and_wait a wrapper around file_write_and_wait_range
>
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index 526b6a9f30d4..909210bd6366 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2549,6 +2549,8 @@ static inline int filemap_fdatawait(struct address_space *mapping)
>
> extern bool filemap_range_has_page(struct address_space *, loff_t lstart,
> loff_t lend);
> +extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
> + loff_t lend);
> extern int filemap_write_and_wait(struct address_space *mapping);
> extern int filemap_write_and_wait_range(struct address_space *mapping,
> loff_t lstart, loff_t lend);
> @@ -2557,12 +2559,19 @@ extern int __filemap_fdatawrite_range(struct address_space *mapping,
> extern int filemap_fdatawrite_range(struct address_space *mapping,
> loff_t start, loff_t end);
> extern int filemap_check_errors(struct address_space *mapping);
> -
> extern void __filemap_set_wb_err(struct address_space *mapping, int err);
> +
> +extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
> + loff_t lend);
> extern int __must_check file_check_and_advance_wb_err(struct file *file);
> extern int __must_check file_write_and_wait_range(struct file *file,
> loff_t start, loff_t end);
>
> +static inline int file_write_and_wait(struct file *file)
> +{
> + return file_write_and_wait_range(file, 0, LLONG_MAX);
> +}
> +
> /**
> * filemap_set_wb_err - set a writeback error on an address_space
> * @mapping: mapping in which to set writeback error
> diff --git a/mm/filemap.c b/mm/filemap.c
> index 953804b29a75..85dfe3bee324 100644
> --- a/mm/filemap.c
> +++ b/mm/filemap.c
> @@ -476,6 +476,29 @@ int filemap_fdatawait_range(struct address_space *mapping, loff_t start_byte,
> EXPORT_SYMBOL(filemap_fdatawait_range);
>
> /**
> + * file_fdatawait_range - wait for writeback to complete
> + * @file: file pointing to address space structure to wait for
> + * @start_byte: offset in bytes where the range starts
> + * @end_byte: offset in bytes where the range ends (inclusive)
> + *
> + * Walk the list of under-writeback pages of the address space that file
> + * refers to, in the given range and wait for all of them. Check error
> + * status of the address space vs. the file->f_wb_err cursor and return it.
> + *
> + * Since the error status of the file is advanced by this function,
> + * callers are responsible for checking the return value and handling and/or
> + * reporting the error.
> + */
> +int file_fdatawait_range(struct file *file, loff_t start_byte, loff_t end_byte)
> +{
> + struct address_space *mapping = file->f_mapping;
> +
> + __filemap_fdatawait_range(mapping, start_byte, end_byte);
> + return file_check_and_advance_wb_err(file);
> +}
> +EXPORT_SYMBOL(file_fdatawait_range);
> +
> +/**
> * filemap_fdatawait_keep_errors - wait for writeback without clearing errors
> * @mapping: address space structure to wait for
> *
> --
> 2.13.3
>
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: Jeff Layton <jlayton@kernel.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>, Jan Kara <jack@suse.cz>,
"J . Bruce Fields" <bfields@fieldses.org>,
Andrew Morton <akpm@linux-foundation.org>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, Matthew Wilcox <willy@infradead.org>,
Bob Peterson <rpeterso@redhat.com>,
Steven Whitehouse <swhiteho@redhat.com>,
cluster-devel@redhat.com
Subject: Re: [PATCH v3] mm: add file_fdatawait_range and file_write_and_wait
Date: Tue, 1 Aug 2017 11:52:31 +0200 [thread overview]
Message-ID: <20170801095231.GE4215@quack2.suse.cz> (raw)
In-Reply-To: <20170731164925.2158-1-jlayton@kernel.org>
On Mon 31-07-17 12:49:25, Jeff Layton wrote:
> From: Jeff Layton <jlayton@redhat.com>
>
> Necessary now for gfs2_fsync and sync_file_range, but there will
> eventually be other callers.
>
> Signed-off-by: Jeff Layton <jlayton@redhat.com>
Looks good to me. You can add:
Reviewed-by: Jan Kara <jack@suse.cz>
Honza
> ---
> include/linux/fs.h | 11 ++++++++++-
> mm/filemap.c | 23 +++++++++++++++++++++++
> 2 files changed, 33 insertions(+), 1 deletion(-)
>
> v3: make file_write_and_wait a wrapper around file_write_and_wait_range
>
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index 526b6a9f30d4..909210bd6366 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2549,6 +2549,8 @@ static inline int filemap_fdatawait(struct address_space *mapping)
>
> extern bool filemap_range_has_page(struct address_space *, loff_t lstart,
> loff_t lend);
> +extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
> + loff_t lend);
> extern int filemap_write_and_wait(struct address_space *mapping);
> extern int filemap_write_and_wait_range(struct address_space *mapping,
> loff_t lstart, loff_t lend);
> @@ -2557,12 +2559,19 @@ extern int __filemap_fdatawrite_range(struct address_space *mapping,
> extern int filemap_fdatawrite_range(struct address_space *mapping,
> loff_t start, loff_t end);
> extern int filemap_check_errors(struct address_space *mapping);
> -
> extern void __filemap_set_wb_err(struct address_space *mapping, int err);
> +
> +extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
> + loff_t lend);
> extern int __must_check file_check_and_advance_wb_err(struct file *file);
> extern int __must_check file_write_and_wait_range(struct file *file,
> loff_t start, loff_t end);
>
> +static inline int file_write_and_wait(struct file *file)
> +{
> + return file_write_and_wait_range(file, 0, LLONG_MAX);
> +}
> +
> /**
> * filemap_set_wb_err - set a writeback error on an address_space
> * @mapping: mapping in which to set writeback error
> diff --git a/mm/filemap.c b/mm/filemap.c
> index 953804b29a75..85dfe3bee324 100644
> --- a/mm/filemap.c
> +++ b/mm/filemap.c
> @@ -476,6 +476,29 @@ int filemap_fdatawait_range(struct address_space *mapping, loff_t start_byte,
> EXPORT_SYMBOL(filemap_fdatawait_range);
>
> /**
> + * file_fdatawait_range - wait for writeback to complete
> + * @file: file pointing to address space structure to wait for
> + * @start_byte: offset in bytes where the range starts
> + * @end_byte: offset in bytes where the range ends (inclusive)
> + *
> + * Walk the list of under-writeback pages of the address space that file
> + * refers to, in the given range and wait for all of them. Check error
> + * status of the address space vs. the file->f_wb_err cursor and return it.
> + *
> + * Since the error status of the file is advanced by this function,
> + * callers are responsible for checking the return value and handling and/or
> + * reporting the error.
> + */
> +int file_fdatawait_range(struct file *file, loff_t start_byte, loff_t end_byte)
> +{
> + struct address_space *mapping = file->f_mapping;
> +
> + __filemap_fdatawait_range(mapping, start_byte, end_byte);
> + return file_check_and_advance_wb_err(file);
> +}
> +EXPORT_SYMBOL(file_fdatawait_range);
> +
> +/**
> * filemap_fdatawait_keep_errors - wait for writeback without clearing errors
> * @mapping: address space structure to wait for
> *
> --
> 2.13.3
>
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz>
To: Jeff Layton <jlayton@kernel.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>, Jan Kara <jack@suse.cz>,
"J . Bruce Fields" <bfields@fieldses.org>,
Andrew Morton <akpm@linux-foundation.org>,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-mm@kvack.org, Matthew Wilcox <willy@infradead.org>,
Bob Peterson <rpeterso@redhat.com>,
Steven Whitehouse <swhiteho@redhat.com>,
cluster-devel@redhat.com
Subject: Re: [PATCH v3] mm: add file_fdatawait_range and file_write_and_wait
Date: Tue, 1 Aug 2017 11:52:31 +0200 [thread overview]
Message-ID: <20170801095231.GE4215@quack2.suse.cz> (raw)
In-Reply-To: <20170731164925.2158-1-jlayton@kernel.org>
On Mon 31-07-17 12:49:25, Jeff Layton wrote:
> From: Jeff Layton <jlayton@redhat.com>
>
> Necessary now for gfs2_fsync and sync_file_range, but there will
> eventually be other callers.
>
> Signed-off-by: Jeff Layton <jlayton@redhat.com>
Looks good to me. You can add:
Reviewed-by: Jan Kara <jack@suse.cz>
Honza
> ---
> include/linux/fs.h | 11 ++++++++++-
> mm/filemap.c | 23 +++++++++++++++++++++++
> 2 files changed, 33 insertions(+), 1 deletion(-)
>
> v3: make file_write_and_wait a wrapper around file_write_and_wait_range
>
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index 526b6a9f30d4..909210bd6366 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2549,6 +2549,8 @@ static inline int filemap_fdatawait(struct address_space *mapping)
>
> extern bool filemap_range_has_page(struct address_space *, loff_t lstart,
> loff_t lend);
> +extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
> + loff_t lend);
> extern int filemap_write_and_wait(struct address_space *mapping);
> extern int filemap_write_and_wait_range(struct address_space *mapping,
> loff_t lstart, loff_t lend);
> @@ -2557,12 +2559,19 @@ extern int __filemap_fdatawrite_range(struct address_space *mapping,
> extern int filemap_fdatawrite_range(struct address_space *mapping,
> loff_t start, loff_t end);
> extern int filemap_check_errors(struct address_space *mapping);
> -
> extern void __filemap_set_wb_err(struct address_space *mapping, int err);
> +
> +extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
> + loff_t lend);
> extern int __must_check file_check_and_advance_wb_err(struct file *file);
> extern int __must_check file_write_and_wait_range(struct file *file,
> loff_t start, loff_t end);
>
> +static inline int file_write_and_wait(struct file *file)
> +{
> + return file_write_and_wait_range(file, 0, LLONG_MAX);
> +}
> +
> /**
> * filemap_set_wb_err - set a writeback error on an address_space
> * @mapping: mapping in which to set writeback error
> diff --git a/mm/filemap.c b/mm/filemap.c
> index 953804b29a75..85dfe3bee324 100644
> --- a/mm/filemap.c
> +++ b/mm/filemap.c
> @@ -476,6 +476,29 @@ int filemap_fdatawait_range(struct address_space *mapping, loff_t start_byte,
> EXPORT_SYMBOL(filemap_fdatawait_range);
>
> /**
> + * file_fdatawait_range - wait for writeback to complete
> + * @file: file pointing to address space structure to wait for
> + * @start_byte: offset in bytes where the range starts
> + * @end_byte: offset in bytes where the range ends (inclusive)
> + *
> + * Walk the list of under-writeback pages of the address space that file
> + * refers to, in the given range and wait for all of them. Check error
> + * status of the address space vs. the file->f_wb_err cursor and return it.
> + *
> + * Since the error status of the file is advanced by this function,
> + * callers are responsible for checking the return value and handling and/or
> + * reporting the error.
> + */
> +int file_fdatawait_range(struct file *file, loff_t start_byte, loff_t end_byte)
> +{
> + struct address_space *mapping = file->f_mapping;
> +
> + __filemap_fdatawait_range(mapping, start_byte, end_byte);
> + return file_check_and_advance_wb_err(file);
> +}
> +EXPORT_SYMBOL(file_fdatawait_range);
> +
> +/**
> * filemap_fdatawait_keep_errors - wait for writeback without clearing errors
> * @mapping: address space structure to wait for
> *
> --
> 2.13.3
>
--
Jan Kara <jack@suse.com>
SUSE Labs, CR
next prev parent reply other threads:[~2017-08-01 9:52 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-26 17:55 [Cluster-devel] [PATCH v2 0/4] mm/gfs2: extend file_* API, and convert gfs2 to errseq_t error reporting Jeff Layton
2017-07-26 17:55 ` Jeff Layton
2017-07-26 17:55 ` Jeff Layton
2017-07-26 17:55 ` [Cluster-devel] [PATCH v2 1/4] mm: consolidate dax / non-dax checks for writeback Jeff Layton
2017-07-26 17:55 ` Jeff Layton
2017-07-26 17:55 ` Jeff Layton
2017-07-27 8:43 ` [Cluster-devel] " Jan Kara
2017-07-27 8:43 ` Jan Kara
2017-07-27 8:43 ` Jan Kara
2017-07-26 17:55 ` [Cluster-devel] [PATCH v2 2/4] mm: add file_fdatawait_range and file_write_and_wait Jeff Layton
2017-07-26 17:55 ` Jeff Layton
2017-07-26 17:55 ` Jeff Layton
2017-07-26 19:13 ` [Cluster-devel] " Matthew Wilcox
2017-07-26 19:13 ` Matthew Wilcox
2017-07-26 19:13 ` Matthew Wilcox
2017-07-26 22:18 ` [Cluster-devel] " Jeff Layton
2017-07-26 22:18 ` Jeff Layton
2017-07-26 22:18 ` Jeff Layton
2017-07-26 19:50 ` [Cluster-devel] " Bob Peterson
2017-07-26 19:50 ` Bob Peterson
2017-07-26 19:50 ` Bob Peterson
2017-07-27 8:49 ` [Cluster-devel] " Jan Kara
2017-07-27 8:49 ` Jan Kara
2017-07-27 8:49 ` Jan Kara
2017-07-27 12:48 ` [Cluster-devel] " Jeff Layton
2017-07-27 12:48 ` Jeff Layton
2017-07-27 12:48 ` Jeff Layton
2017-07-31 11:27 ` [Cluster-devel] " Jeff Layton
2017-07-31 11:27 ` Jeff Layton
2017-07-31 11:27 ` Jeff Layton
2017-07-31 11:32 ` [Cluster-devel] " Steven Whitehouse
2017-07-31 11:32 ` Steven Whitehouse
2017-07-31 11:32 ` Steven Whitehouse
2017-07-31 11:44 ` [Cluster-devel] " Jeff Layton
2017-07-31 11:44 ` Jeff Layton
2017-07-31 11:44 ` Jeff Layton
2017-07-31 12:05 ` [Cluster-devel] " Steven Whitehouse
2017-07-31 12:05 ` Steven Whitehouse
2017-07-31 12:05 ` Steven Whitehouse
2017-07-31 12:22 ` [Cluster-devel] " Jeff Layton
2017-07-31 12:22 ` Jeff Layton
2017-07-31 12:22 ` Jeff Layton
2017-07-31 12:25 ` [Cluster-devel] " Steven Whitehouse
2017-07-31 12:25 ` Steven Whitehouse
2017-07-31 12:25 ` Steven Whitehouse
2017-07-31 12:38 ` [Cluster-devel] " Bob Peterson
2017-07-31 12:38 ` Bob Peterson
2017-07-31 12:38 ` Bob Peterson
2017-07-31 12:07 ` [Cluster-devel] " Jan Kara
2017-07-31 12:07 ` Jan Kara
2017-07-31 12:07 ` Jan Kara
2017-07-31 13:00 ` [Cluster-devel] " Jeff Layton
2017-07-31 13:00 ` Jeff Layton
2017-07-31 13:00 ` Jeff Layton
2017-07-31 13:32 ` [Cluster-devel] " Jan Kara
2017-07-31 13:32 ` Jan Kara
2017-07-31 13:32 ` Jan Kara
2017-07-31 16:49 ` [Cluster-devel] [PATCH v3] " Jeff Layton
2017-07-31 16:49 ` Jeff Layton
2017-07-31 16:49 ` Jeff Layton
2017-08-01 9:52 ` Jan Kara [this message]
2017-08-01 9:52 ` Jan Kara
2017-08-01 9:52 ` Jan Kara
2017-07-26 17:55 ` [Cluster-devel] [PATCH v2 3/4] fs: convert sync_file_range to use errseq_t based error-tracking Jeff Layton
2017-07-26 17:55 ` Jeff Layton
2017-07-26 17:55 ` Jeff Layton
2017-07-26 17:55 ` [Cluster-devel] [PATCH v2 4/4] gfs2: convert to errseq_t based writeback error reporting for fsync Jeff Layton
2017-07-26 17:55 ` Jeff Layton
2017-07-26 17:55 ` Jeff Layton
2017-07-26 19:21 ` [Cluster-devel] " Matthew Wilcox
2017-07-26 19:21 ` Matthew Wilcox
2017-07-26 19:21 ` Matthew Wilcox
2017-07-26 22:22 ` [Cluster-devel] " Jeff Layton
2017-07-26 22:22 ` Jeff Layton
2017-07-26 22:22 ` Jeff Layton
2017-07-27 12:47 ` [Cluster-devel] " Bob Peterson
2017-07-27 12:47 ` Bob Peterson
2017-07-27 12:47 ` Bob Peterson
2017-07-28 12:37 ` [Cluster-devel] " Steven Whitehouse
2017-07-28 12:37 ` Steven Whitehouse
2017-07-28 12:37 ` Steven Whitehouse
2017-07-28 12:47 ` [Cluster-devel] " Jeff Layton
2017-07-28 12:47 ` Jeff Layton
2017-07-28 12:47 ` Jeff Layton
2017-07-28 12:54 ` [Cluster-devel] " Steven Whitehouse
2017-07-28 12:54 ` Steven Whitehouse
2017-07-28 12:54 ` Steven Whitehouse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170801095231.GE4215@quack2.suse.cz \
--to=jack@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.