staging/lustre: lov_io_init() should return error code
authorBobi Jam <bobijam.xu@intel.com>
Wed, 30 Mar 2016 23:49:07 +0000 (19:49 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 31 Mar 2016 04:38:13 +0000 (21:38 -0700)
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: Bobi Jam <bobijam.xu@intel.com>
Reviewed-on: http://review.whamcloud.com/17240
Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-7446
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/llite/llite_mmap.c
drivers/staging/lustre/lustre/lov/lov_io.c
drivers/staging/lustre/lustre/obdclass/cl_io.c

index 83d7006546dcd341a3537ba7c37e75f7e6ff33b2..5b4382cca0d752a9e04b213da2a7a9ef1ffb1420 100644 (file)
@@ -123,6 +123,7 @@ ll_fault_io_init(struct vm_area_struct *vma, struct lu_env **env_ret,
 
        *env_ret = env;
 
+restart:
        io = vvp_env_thread_io(env);
        io->ci_obj = ll_i2info(inode)->lli_clob;
        LASSERT(io->ci_obj);
@@ -157,6 +158,9 @@ ll_fault_io_init(struct vm_area_struct *vma, struct lu_env **env_ret,
        } else {
                LASSERT(rc < 0);
                cl_io_fini(env, io);
+               if (io->ci_need_restart)
+                       goto restart;
+
                cl_env_nested_put(nest, env);
                io = ERR_PTR(rc);
        }
index ba79955f54bbd201d0963f182e071949f5bcca5f..41512372c472059c001645088e027e7e5b297cc1 100644 (file)
@@ -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;
-       return result != 0;
+       return result;
 }
 
 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;
-       return result != 0;
+       return result;
 }
 
 /** @} lov */
index 7655dc485fefb3de284666afdb19659369634fb4..f4b3178ec04350009cfadce85f77a0122ee26b40 100644 (file)
@@ -133,6 +133,7 @@ void cl_io_fini(const struct lu_env *env, struct cl_io *io)
        case CIT_WRITE:
                break;
        case CIT_FAULT:
+               break;
        case CIT_FSYNC:
                LASSERT(!io->ci_need_restart);
                break;