[lustre-devel] [PATCH 08/24] lustre: use truncate_inode_page in place of truncate_complete_page
James Simmons
jsimmons at infradead.org
Fri Jun 15 17:17:37 PDT 2018
> Carrying a local truncate_complete_page() is not good
> for maintainability. Linux now used truncate_inode_page,
> so use that instead.
> For correct use, we need to pass the mapping to mdc_release_page()
> rather than trusting page->mapping.
Nak: truncate_inode_page is not exported so it fails to build when lustre
is configured as a module.
> Signed-off-by: NeilBrown <neilb at suse.com>
> ---
> .../lustre/include/lustre_patchless_compat.h | 16 ----------------
> drivers/staging/lustre/lustre/llite/dir.c | 3 +--
> .../staging/lustre/lustre/llite/llite_internal.h | 4 ++--
> drivers/staging/lustre/lustre/mdc/mdc_request.c | 12 ++++++------
> 4 files changed, 9 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/staging/lustre/lustre/include/lustre_patchless_compat.h b/drivers/staging/lustre/lustre/include/lustre_patchless_compat.h
> index 298476ea7557..dca1e3dbd183 100644
> --- a/drivers/staging/lustre/lustre/include/lustre_patchless_compat.h
> +++ b/drivers/staging/lustre/lustre/include/lustre_patchless_compat.h
> @@ -41,22 +41,6 @@
> #include <linux/hash.h>
> #include <linux/pagemap.h>
>
> -#define ll_delete_from_page_cache(page) delete_from_page_cache(page)
> -
> -static inline void
> -truncate_complete_page(struct address_space *mapping, struct page *page)
> -{
> - if (page->mapping != mapping)
> - return;
> -
> - if (PagePrivate(page))
> - page->mapping->a_ops->invalidatepage(page, 0, PAGE_SIZE);
> -
> - cancel_dirty_page(page);
> - ClearPageMappedToDisk(page);
> - ll_delete_from_page_cache(page);
> -}
> -
> #ifndef ATTR_CTIME_SET
> /*
> * set ATTR_CTIME_SET to a high value to avoid any risk of collision with other
> diff --git a/drivers/staging/lustre/lustre/llite/dir.c b/drivers/staging/lustre/lustre/llite/dir.c
> index 688dddf3ca47..cc5869cf9f93 100644
> --- a/drivers/staging/lustre/lustre/llite/dir.c
> +++ b/drivers/staging/lustre/lustre/llite/dir.c
> @@ -167,8 +167,7 @@ void ll_release_page(struct inode *inode, struct page *page, bool remove)
>
> if (remove) {
> lock_page(page);
> - if (likely(page->mapping))
> - truncate_complete_page(page->mapping, page);
> + truncate_inode_page(inode->i_mapping, page);
> unlock_page(page);
> }
> put_page(page);
> diff --git a/drivers/staging/lustre/lustre/llite/llite_internal.h b/drivers/staging/lustre/lustre/llite/llite_internal.h
> index c08a6e14b6d7..28cff58690d6 100644
> --- a/drivers/staging/lustre/lustre/llite/llite_internal.h
> +++ b/drivers/staging/lustre/lustre/llite/llite_internal.h
> @@ -938,11 +938,11 @@ static inline void ll_invalidate_page(struct page *vmpage)
> return;
>
> /*
> - * truncate_complete_page() calls
> + * truncate_inode_page() calls
> * a_ops->invalidatepage()->cl_page_delete()->vvp_page_delete().
> */
> ll_teardown_mmaps(mapping, offset, offset + PAGE_SIZE);
> - truncate_complete_page(mapping, vmpage);
> + truncate_inode_page(mapping, vmpage);
> }
>
> #define ll_s2sbi(sb) (s2lsi(sb)->lsi_llsbi)
> diff --git a/drivers/staging/lustre/lustre/mdc/mdc_request.c b/drivers/staging/lustre/lustre/mdc/mdc_request.c
> index cff31cb0a9ac..856e6a376852 100644
> --- a/drivers/staging/lustre/lustre/mdc/mdc_request.c
> +++ b/drivers/staging/lustre/lustre/mdc/mdc_request.c
> @@ -922,12 +922,12 @@ static int mdc_getpage(struct obd_export *exp, const struct lu_fid *fid,
> return 0;
> }
>
> -static void mdc_release_page(struct page *page, int remove)
> +static void mdc_release_page(struct address_space *mapping,
> + struct page *page, int remove)
> {
> if (remove) {
> lock_page(page);
> - if (likely(page->mapping))
> - truncate_complete_page(page->mapping, page);
> + truncate_inode_page(mapping, page);
> unlock_page(page);
> }
> put_page(page);
> @@ -981,7 +981,7 @@ static struct page *mdc_page_locate(struct address_space *mapping, __u64 *hash,
> offset, *start, *end, *hash);
> if (*hash > *end) {
> kunmap(page);
> - mdc_release_page(page, 0);
> + mdc_release_page(mapping, page, 0);
> page = NULL;
> } else if (*end != *start && *hash == *end) {
> /*
> @@ -991,7 +991,7 @@ static struct page *mdc_page_locate(struct address_space *mapping, __u64 *hash,
> * fetch the page we want.
> */
> kunmap(page);
> - mdc_release_page(page,
> + mdc_release_page(mapping, page,
> le32_to_cpu(dp->ldp_flags) & LDF_COLLIDE);
> page = NULL;
> }
> @@ -1365,7 +1365,7 @@ static int mdc_read_page(struct obd_export *exp, struct md_op_data *op_data,
> return rc;
> fail:
> kunmap(page);
> - mdc_release_page(page, 1);
> + mdc_release_page(mapping, page, 1);
> rc = -EIO;
> goto out_unlock;
> }
>
>
>
More information about the lustre-devel
mailing list