Commit 30889c72 authored by Bobi Jam's avatar Bobi Jam Committed by Greg Kroah-Hartman

staging/lustre: lov_io_init() should return error code

lov_io_init_empty/release() should returns error code instead of
true on error case.

Fault IO needs to handle restart in the case of accessing HSM released
file
Signed-off-by: default avatarBobi Jam <bobijam.xu@intel.com>
Reviewed-on: http://review.whamcloud.com/17240
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-7446Reviewed-by: default avatarJohn L. Hammond <john.hammond@intel.com>
Reviewed-by: default avatarJinshan Xiong <jinshan.xiong@intel.com>
Signed-off-by: default avatarOleg Drokin <green@linuxhacker.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6cead36d
...@@ -123,6 +123,7 @@ ll_fault_io_init(struct vm_area_struct *vma, struct lu_env **env_ret, ...@@ -123,6 +123,7 @@ ll_fault_io_init(struct vm_area_struct *vma, struct lu_env **env_ret,
*env_ret = env; *env_ret = env;
restart:
io = vvp_env_thread_io(env); io = vvp_env_thread_io(env);
io->ci_obj = ll_i2info(inode)->lli_clob; io->ci_obj = ll_i2info(inode)->lli_clob;
LASSERT(io->ci_obj); LASSERT(io->ci_obj);
...@@ -157,6 +158,9 @@ ll_fault_io_init(struct vm_area_struct *vma, struct lu_env **env_ret, ...@@ -157,6 +158,9 @@ ll_fault_io_init(struct vm_area_struct *vma, struct lu_env **env_ret,
} else { } else {
LASSERT(rc < 0); LASSERT(rc < 0);
cl_io_fini(env, io); cl_io_fini(env, io);
if (io->ci_need_restart)
goto restart;
cl_env_nested_put(nest, env); cl_env_nested_put(nest, env);
io = ERR_PTR(rc); io = ERR_PTR(rc);
} }
......
...@@ -916,7 +916,7 @@ int lov_io_init_empty(const struct lu_env *env, struct cl_object *obj, ...@@ -916,7 +916,7 @@ int lov_io_init_empty(const struct lu_env *env, struct cl_object *obj,
} }
io->ci_result = result < 0 ? result : 0; io->ci_result = result < 0 ? result : 0;
return result != 0; return result;
} }
int lov_io_init_released(const struct lu_env *env, struct cl_object *obj, int lov_io_init_released(const struct lu_env *env, struct cl_object *obj,
...@@ -959,7 +959,7 @@ int lov_io_init_released(const struct lu_env *env, struct cl_object *obj, ...@@ -959,7 +959,7 @@ int lov_io_init_released(const struct lu_env *env, struct cl_object *obj,
} }
io->ci_result = result < 0 ? result : 0; io->ci_result = result < 0 ? result : 0;
return result != 0; return result;
} }
/** @} lov */ /** @} lov */
...@@ -133,6 +133,7 @@ void cl_io_fini(const struct lu_env *env, struct cl_io *io) ...@@ -133,6 +133,7 @@ void cl_io_fini(const struct lu_env *env, struct cl_io *io)
case CIT_WRITE: case CIT_WRITE:
break; break;
case CIT_FAULT: case CIT_FAULT:
break;
case CIT_FSYNC: case CIT_FSYNC:
LASSERT(!io->ci_need_restart); LASSERT(!io->ci_need_restart);
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment