From 0f7d7b200b582ca4bd8e049f6634ac55f6a481b0 Mon Sep 17 00:00:00 2001 From: Mikhail Pershin Date: Tue, 28 Aug 2018 13:06:21 +0300 Subject: [PATCH] LU-11275 llite: check truncate race for DOM pages In ll_dom_finish_open() check vmpage mapping still exists after locking and exit otherwise. This can happen if page has been truncated concurrently. Signed-off-by: Mikhail Pershin Change-Id: Ib6ef551673a40ad99baaa9bd620225c65ce34454 Reviewed-on: https://review.whamcloud.com/33087 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin Reviewed-by: Andreas Dilger --- lustre/llite/file.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lustre/llite/file.c b/lustre/llite/file.c index 8bfdf21..b7c3a63 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -484,6 +484,12 @@ void ll_dom_finish_open(struct inode *inode, struct ptlrpc_request *req, break; } lock_page(vmpage); + if (vmpage->mapping == NULL) { + unlock_page(vmpage); + put_page(vmpage); + /* page was truncated */ + GOTO(out_io, rc = -ENODATA); + } clp = cl_page_find(env, obj, vmpage->index, vmpage, CPT_CACHEABLE); if (IS_ERR(clp)) { -- 1.8.3.1