diff options
Diffstat (limited to 'drivers/staging/lustre/lustre/llite/vvp_io.c')
-rw-r--r-- | drivers/staging/lustre/lustre/llite/vvp_io.c | 59 |
1 files changed, 24 insertions, 35 deletions
diff --git a/drivers/staging/lustre/lustre/llite/vvp_io.c b/drivers/staging/lustre/lustre/llite/vvp_io.c index eb964acad45c..3ff664ce7503 100644 --- a/drivers/staging/lustre/lustre/llite/vvp_io.c +++ b/drivers/staging/lustre/lustre/llite/vvp_io.c @@ -176,19 +176,18 @@ static int vvp_mmap_locks(const struct lu_env *env, unsigned long seg; ssize_t count; int result; - ENTRY; LASSERT(io->ci_type == CIT_READ || io->ci_type == CIT_WRITE); if (!cl_is_normalio(env, io)) - RETURN(0); + return 0; if (vio->cui_iov == NULL) /* nfs or loop back device write */ - RETURN(0); + return 0; /* No MM (e.g. NFS)? No vmas too. */ if (mm == NULL) - RETURN(0); + return 0; for (seg = 0; seg < vio->cui_nrsegs; seg++) { const struct iovec *iv = &vio->cui_iov[seg]; @@ -234,7 +233,7 @@ static int vvp_mmap_locks(const struct lu_env *env, descr->cld_end); if (result < 0) - RETURN(result); + return result; if (vma->vm_end - addr >= count) break; @@ -244,7 +243,7 @@ static int vvp_mmap_locks(const struct lu_env *env, } up_read(&mm->mmap_sem); } - RETURN(0); + return 0; } static int vvp_io_rw_lock(const struct lu_env *env, struct cl_io *io, @@ -255,7 +254,6 @@ static int vvp_io_rw_lock(const struct lu_env *env, struct cl_io *io, int ast_flags = 0; LASSERT(io->ci_type == CIT_READ || io->ci_type == CIT_WRITE); - ENTRY; ccc_io_update_iov(env, cio, io); @@ -264,7 +262,7 @@ static int vvp_io_rw_lock(const struct lu_env *env, struct cl_io *io, result = vvp_mmap_locks(env, cio, io); if (result == 0) result = ccc_io_one_lock(env, io, ast_flags, mode, start, end); - RETURN(result); + return result; } static int vvp_io_read_lock(const struct lu_env *env, @@ -274,7 +272,6 @@ static int vvp_io_read_lock(const struct lu_env *env, struct ll_inode_info *lli = ll_i2info(ccc_object_inode(io->ci_obj)); int result; - ENTRY; /* XXX: Layer violation, we shouldn't see lsm at llite level. */ if (lli->lli_has_smd) /* lsm-less file doesn't need to lock */ result = vvp_io_rw_lock(env, io, CLM_READ, @@ -283,7 +280,7 @@ static int vvp_io_read_lock(const struct lu_env *env, io->u.ci_rd.rd.crw_count - 1); else result = 0; - RETURN(result); + return result; } static int vvp_io_fault_lock(const struct lu_env *env, @@ -407,13 +404,15 @@ static int vvp_io_setattr_start(const struct lu_env *env, { struct cl_io *io = ios->cis_io; struct inode *inode = ccc_object_inode(io->ci_obj); + int result = 0; mutex_lock(&inode->i_mutex); if (cl_io_is_trunc(io)) - return vvp_io_setattr_trunc(env, ios, inode, - io->u.ci_setattr.sa_attr.lvb_size); - else - return vvp_io_setattr_time(env, ios); + result = vvp_io_setattr_trunc(env, ios, inode, + io->u.ci_setattr.sa_attr.lvb_size); + if (result == 0) + result = vvp_io_setattr_time(env, ios); + return result; } static void vvp_io_setattr_end(const struct lu_env *env, @@ -525,7 +524,7 @@ out: io->ci_continue = 0; io->ci_nob += result; ll_rw_stats_tally(ll_i2sbi(inode), current->pid, - cio->cui_fd, pos, result, 0); + cio->cui_fd, pos, result, READ); result = 0; } return result; @@ -554,8 +553,6 @@ static int vvp_io_write_start(const struct lu_env *env, loff_t pos = io->u.ci_wr.wr.crw_pos; size_t cnt = io->u.ci_wr.wr.crw_count; - ENTRY; - if (!can_populate_pages(env, io, inode)) return 0; @@ -580,10 +577,10 @@ static int vvp_io_write_start(const struct lu_env *env, io->ci_continue = 0; io->ci_nob += result; ll_rw_stats_tally(ll_i2sbi(inode), current->pid, - cio->cui_fd, pos, result, 0); + cio->cui_fd, pos, result, WRITE); result = 0; } - RETURN(result); + return result; } static int vvp_io_kernel_fault(struct vvp_fault_io *cfio) @@ -767,7 +764,6 @@ static int vvp_io_fault_start(const struct lu_env *env, lu_ref_add(&page->cp_reference, "fault", io); fio->ft_page = page; - EXIT; out: /* return unlocked vmpage to avoid deadlocking */ @@ -805,8 +801,6 @@ static int vvp_io_read_page(const struct lu_env *env, CLOBINVRNT(env, obj, ccc_object_invariant(obj)); LASSERT(slice->cpl_obj == obj); - ENTRY; - if (sbi->ll_ra_info.ra_max_pages_per_file && sbi->ll_ra_info.ra_max_pages) ras_update(sbi, inode, ras, page->cp_index, @@ -819,7 +813,7 @@ static int vvp_io_read_page(const struct lu_env *env, rc == -ENODATA ? "without a lock" : "match failed", rc); if (rc != -ENODATA) - RETURN(rc); + return rc; } if (cp->cpg_defer_uptodate) { @@ -836,7 +830,7 @@ static int vvp_io_read_page(const struct lu_env *env, ll_readahead(env, io, ras, vmpage->mapping, &queue->c2_qin, fd->fd_flags); - RETURN(0); + return 0; } static int vvp_page_sync_io(const struct lu_env *env, struct cl_io *io, @@ -887,10 +881,10 @@ static int vvp_io_prepare_partial(const struct lu_env *env, struct cl_io *io, * purposes here we can treat it like i_size. */ if (attr->cat_kms <= offset) { - char *kaddr = ll_kmap_atomic(cp->cpg_page, KM_USER0); + char *kaddr = kmap_atomic(cp->cpg_page); memset(kaddr, 0, cl_page_size(obj)); - ll_kunmap_atomic(kaddr, KM_USER0); + kunmap_atomic(kaddr); } else if (cp->cpg_defer_uptodate) cp->cpg_ra_used = 1; else @@ -921,8 +915,6 @@ static int vvp_io_prepare_write(const struct lu_env *env, int result; - ENTRY; - LINVRNT(cl_page_is_vmlocked(env, pg)); LASSERT(vmpage->mapping->host == ccc_object_inode(obj)); @@ -942,7 +934,7 @@ static int vvp_io_prepare_write(const struct lu_env *env, pg, cp, from, to); } else CL_PAGE_HEADER(D_PAGE, env, pg, "uptodate\n"); - RETURN(result); + return result; } static int vvp_io_commit_write(const struct lu_env *env, @@ -963,12 +955,10 @@ static int vvp_io_commit_write(const struct lu_env *env, int tallyop; loff_t size; - ENTRY; - LINVRNT(cl_page_is_vmlocked(env, pg)); LASSERT(vmpage->mapping->host == inode); - LU_OBJECT_HEADER(D_INODE, env, &obj->co_lu, "commiting page write\n"); + LU_OBJECT_HEADER(D_INODE, env, &obj->co_lu, "committing page write\n"); CL_PAGE_HEADER(D_PAGE, env, pg, "committing: [%d, %d]\n", from, to); /* @@ -1067,7 +1057,7 @@ static int vvp_io_commit_write(const struct lu_env *env, cl_page_discard(env, io, pg); } ll_inode_size_unlock(inode); - RETURN(result); + return result; } static const struct cl_io_operations vvp_io_ops = { @@ -1120,7 +1110,6 @@ int vvp_io_init(const struct lu_env *env, struct cl_object *obj, int result; CLOBINVRNT(env, obj, ccc_object_invariant(obj)); - ENTRY; CL_IO_SLICE_CLEAN(cio, cui_cl); cl_io_slice_add(io, &cio->cui_cl, obj, &vvp_io_ops); @@ -1174,7 +1163,7 @@ int vvp_io_init(const struct lu_env *env, struct cl_object *obj, PFID(lu_object_fid(&obj->co_lu)), result); } - RETURN(result); + return result; } static struct vvp_io *cl2vvp_io(const struct lu_env *env, |