aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnn Koehler <amk@cray.com>2014-02-28 21:16:44 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-02-28 19:13:21 -0800
commit15f13cde9c34f87452e463b13b180c0a948fb8ce (patch)
tree901a1c4034a086ebd396e6cb3740cd917df22a14
parentlustre/libcfs: warn if all HTs in a core are gone (diff)
lustre/osc: Don't flush active extents.
The extent is active so we need to abort and let the caller re-dirty the page. If we continued on here, and we were the one making the extent active, we could deadlock waiting for the page writeback to clear but it won't because the extent is active and won't be written out. Signed-off-by: Ann Koehler <amk@cray.com> Reviewed-on: http://review.whamcloud.com/8278 Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-4253 Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com> Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com> Reviewed-by: Alexey Lyashkov <alexey_lyashkov@xyratex.com> Reviewed-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Oleg Drokin <oleg.drokin@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/lustre/lustre/osc/osc_cache.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/staging/lustre/lustre/osc/osc_cache.c b/drivers/staging/lustre/lustre/osc/osc_cache.c
index b92a02efad43..af25c19c88fa 100644
--- a/drivers/staging/lustre/lustre/osc/osc_cache.c
+++ b/drivers/staging/lustre/lustre/osc/osc_cache.c
@@ -2394,6 +2394,12 @@ int osc_flush_async_page(const struct lu_env *env, struct cl_io *io,
* really sending the RPC. */
case OES_TRUNC:
/* race with truncate, page will be redirtied */
+ case OES_ACTIVE:
+ /* The extent is active so we need to abort and let the caller
+ * re-dirty the page. If we continued on here, and we were the
+ * one making the extent active, we could deadlock waiting for
+ * the page writeback to clear but it won't because the extent
+ * is active and won't be written out. */
GOTO(out, rc = -EAGAIN);
default:
break;