On Thu, Nov 01, 2018 at 02:09:46PM +0200, Nikolay Borisov wrote:
> This callback is called only from writepage_delalloc which in turn
> is guaranteed to be called from the data page writeout path. In the end
> there is no reason to have the call to this function to be indrected
> via the extent_io_ops structure. This patch removes the callback
> definition, exports the function and calls it directly. No functional
> changes.
>
> Signed-off-by: Nikolay Borisov <nborisov@xxxxxxxx>
> ---
> fs/btrfs/ctree.h | 3 +++
> fs/btrfs/extent_io.c | 14 ++++++--------
> fs/btrfs/extent_io.h | 5 -----
> fs/btrfs/inode.c | 10 +++++-----
> 4 files changed, 14 insertions(+), 18 deletions(-)
>
> diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
> index 68ca41dbbef3..dbeb5b2486d5 100644
> --- a/fs/btrfs/ctree.h
> +++ b/fs/btrfs/ctree.h
> @@ -3186,6 +3186,9 @@ int btrfs_prealloc_file_range_trans(struct inode *inode,
> struct btrfs_trans_handle *trans, int mode,
> u64 start, u64 num_bytes, u64 min_size,
> loff_t actual_len, u64 *alloc_hint);
> +int run_delalloc_range(void *private_data, struct page *locked_page, u64 start,
Functions exported in .h should have the btrfs_prefix, updated in the
patch.
> + u64 end, int *page_started, unsigned long *nr_written,
> + struct writeback_control *wbc);
> extern const struct dentry_operations btrfs_dentry_operations;
>
> /* ioctl.c */
> diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
> index 6877a74c7469..2e6191aa25f3 100644
> --- a/fs/btrfs/extent_io.c
> +++ b/fs/btrfs/extent_io.c
> @@ -3205,7 +3205,7 @@ static void update_nr_written(struct writeback_control *wbc,
> /*
> * helper for __extent_writepage, doing all of the delayed allocation setup.
> *
> - * This returns 1 if our fill_delalloc function did all the work required
> + * This returns 1 if run_delalloc_range function did all the work required
> * to write the page (copy into inline extent). In this case the IO has
> * been started and the page is already unlocked.
> *
> @@ -3226,7 +3226,7 @@ static noinline_for_stack int writepage_delalloc(struct inode *inode,
> int ret;
> int page_started = 0;
>
> - if (epd->extent_locked || !tree->ops || !tree->ops->fill_delalloc)
> + if (epd->extent_locked)
> return 0;
>
> while (delalloc_end < page_end) {
> @@ -3239,15 +3239,13 @@ static noinline_for_stack int writepage_delalloc(struct inode *inode,
> delalloc_start = delalloc_end + 1;
> continue;
> }
> - ret = tree->ops->fill_delalloc(inode, page,
> - delalloc_start,
> - delalloc_end,
> - &page_started,
> - nr_written, wbc);
> + ret = run_delalloc_range(inode, page, delalloc_start,
> + delalloc_end, &page_started,
> + nr_written, wbc);
> /* File system has been set read-only */
> if (ret) {
> SetPageError(page);
> - /* fill_delalloc should be return < 0 for error
> + /* run_delalloc_range should return < 0 for error
Please don't use this style of comments, fixed.