These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / staging / lustre / lustre / lov / lov_io.c
index cf96e0d..5e6228b 100644 (file)
@@ -51,6 +51,7 @@ static inline void lov_sub_enter(struct lov_io_sub *sub)
 {
        sub->sub_reenter++;
 }
+
 static inline void lov_sub_exit(struct lov_io_sub *sub)
 {
        sub->sub_reenter--;
@@ -70,7 +71,7 @@ static void lov_io_sub_fini(const struct lu_env *env, struct lov_io *lio,
                if (sub->sub_stripe == lio->lis_single_subio_index)
                        lio->lis_single_subio_index = -1;
                else if (!sub->sub_borrowed)
-                       OBD_FREE_PTR(sub->sub_io);
+                       kfree(sub->sub_io);
                sub->sub_io = NULL;
        }
        if (sub->sub_env != NULL && !IS_ERR(sub->sub_env)) {
@@ -90,7 +91,6 @@ static void lov_io_sub_inherit(struct cl_io *io, struct lov_io *lio,
        case CIT_SETATTR: {
                io->u.ci_setattr.sa_attr = parent->u.ci_setattr.sa_attr;
                io->u.ci_setattr.sa_valid = parent->u.ci_setattr.sa_valid;
-               io->u.ci_setattr.sa_capa = parent->u.ci_setattr.sa_capa;
                if (cl_io_is_trunc(io)) {
                        loff_t new_size = parent->u.ci_setattr.sa_attr.lvb_size;
 
@@ -111,7 +111,6 @@ static void lov_io_sub_inherit(struct cl_io *io, struct lov_io *lio,
        case CIT_FSYNC: {
                io->u.ci_fsync.fi_start = start;
                io->u.ci_fsync.fi_end = end;
-               io->u.ci_fsync.fi_capa = parent->u.ci_fsync.fi_capa;
                io->u.ci_fsync.fi_fid = parent->u.ci_fsync.fi_fid;
                io->u.ci_fsync.fi_mode = parent->u.ci_fsync.fi_mode;
                break;
@@ -179,8 +178,9 @@ static int lov_io_sub_init(const struct lu_env *env, struct lov_io *lio,
                                sub->sub_io = &lio->lis_single_subio;
                                lio->lis_single_subio_index = stripe;
                        } else {
-                               OBD_ALLOC_PTR(sub->sub_io);
-                               if (sub->sub_io == NULL)
+                               sub->sub_io = kzalloc(sizeof(*sub->sub_io),
+                                                     GFP_NOFS);
+                               if (!sub->sub_io)
                                        result = -ENOMEM;
                        }
                }
@@ -272,7 +272,6 @@ struct lov_io_sub *lov_page_subio(const struct lu_env *env, struct lov_io *lio,
        return lov_sub_get(env, lio, stripe);
 }
 
-
 static int lov_io_subio_init(const struct lu_env *env, struct lov_io *lio,
                             struct cl_io *io)
 {
@@ -285,8 +284,10 @@ static int lov_io_subio_init(const struct lu_env *env, struct lov_io *lio,
         * Need to be optimized, we can't afford to allocate a piece of memory
         * when writing a page. -jay
         */
-       OBD_ALLOC_LARGE(lio->lis_subs,
-                       lsm->lsm_stripe_count * sizeof(lio->lis_subs[0]));
+       lio->lis_subs =
+               libcfs_kvzalloc(lsm->lsm_stripe_count *
+                               sizeof(lio->lis_subs[0]),
+                               GFP_NOFS);
        if (lio->lis_subs != NULL) {
                lio->lis_nr_subios = lio->lis_stripe_count;
                lio->lis_single_subio_index = -1;
@@ -329,6 +330,7 @@ static void lov_io_slice_init(struct lov_io *lio,
 
        case CIT_FAULT: {
                pgoff_t index = io->u.ci_fault.ft_index;
+
                lio->lis_pos = cl_offset(io->ci_obj, index);
                lio->lis_endpos = cl_offset(io->ci_obj, index + 1);
                break;
@@ -359,8 +361,7 @@ static void lov_io_fini(const struct lu_env *env, const struct cl_io_slice *ios)
        if (lio->lis_subs != NULL) {
                for (i = 0; i < lio->lis_nr_subios; i++)
                        lov_io_sub_fini(env, lio, &lio->lis_subs[i]);
-               OBD_FREE_LARGE(lio->lis_subs,
-                        lio->lis_nr_subios * sizeof(lio->lis_subs[0]));
+               kvfree(lio->lis_subs);
                lio->lis_nr_subios = 0;
        }
 
@@ -544,7 +545,6 @@ static void lov_io_unlock(const struct lu_env *env,
        LASSERT(rc == 0);
 }
 
-
 static struct cl_page_list *lov_io_submit_qin(struct lov_device *ld,
                                              struct cl_page_list *qin,
                                              int idx, int alloc)
@@ -603,8 +603,10 @@ static int lov_io_submit(const struct lu_env *env,
 
        LASSERT(lio->lis_subs != NULL);
        if (alloc) {
-               OBD_ALLOC_LARGE(stripes_qin,
-                               sizeof(*stripes_qin) * lio->lis_nr_subios);
+               stripes_qin =
+                       libcfs_kvzalloc(sizeof(*stripes_qin) *
+                                       lio->lis_nr_subios,
+                                       GFP_NOFS);
                if (stripes_qin == NULL)
                        return -ENOMEM;
 
@@ -657,8 +659,7 @@ static int lov_io_submit(const struct lu_env *env,
        }
 
        if (alloc) {
-               OBD_FREE_LARGE(stripes_qin,
-                        sizeof(*stripes_qin) * lio->lis_nr_subios);
+               kvfree(stripes_qin);
        } else {
                int i;
 
@@ -726,6 +727,8 @@ static int lov_io_fault_start(const struct lu_env *env,
        fio = &ios->cis_io->u.ci_fault;
        lio = cl2lov_io(env, ios);
        sub = lov_sub_get(env, lio, lov_page_stripe(fio->ft_page));
+       if (IS_ERR(sub))
+               return PTR_ERR(sub);
        sub->sub_io->u.ci_fault.ft_nob = fio->ft_nob;
        lov_sub_put(sub);
        return lov_io_start(env, ios);
@@ -987,4 +990,5 @@ int lov_io_init_released(const struct lu_env *env, struct cl_object *obj,
        io->ci_result = result < 0 ? result : 0;
        return result != 0;
 }
+
 /** @} lov */