X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fliblustre%2Fllite_cl.c;h=5c7ce91a470a2926495b9bb7ec7eae36c8fd9e98;hp=5e43db8ce82892ae9aef6036d7411ea7c03ee384;hb=93fe562c5dd3829939e3bc0533918f66b19776a4;hpb=7af2428511c286788d9c73c436cb43d6f791821f diff --git a/lustre/liblustre/llite_cl.c b/lustre/liblustre/llite_cl.c index 5e43db8..5c7ce91 100644 --- a/lustre/liblustre/llite_cl.c +++ b/lustre/liblustre/llite_cl.c @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * Copyright (c) 2007 Cluster File Systems, Inc. * Author: Nikita Danilov * @@ -18,6 +16,8 @@ * You should have received a copy of the GNU General Public License * along with Lustre; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Copyright (c) 2011, 2013, Intel Corporation. */ #define DEBUG_SUBSYSTEM S_LLITE @@ -57,9 +57,8 @@ static int slp_type_init (struct lu_device_type *t); static void slp_type_fini (struct lu_device_type *t); -static struct cl_page * slp_page_init(const struct lu_env *env, - struct cl_object *obj, - struct cl_page *page, cfs_page_t *vmpage); +static int slp_page_init(const struct lu_env *env, struct cl_object *obj, + struct cl_page *page, struct page *vmpage); static int slp_attr_get (const struct lu_env *env, struct cl_object *obj, struct cl_attr *attr); @@ -224,32 +223,26 @@ void slp_global_fini(void) * */ -static struct cl_page *slp_page_init(const struct lu_env *env, - struct cl_object *obj, - struct cl_page *page, cfs_page_t *vmpage) +static int slp_page_init(const struct lu_env *env, struct cl_object *obj, + struct cl_page *page, struct page *vmpage) { - struct ccc_page *cpg; - int result; + struct ccc_page *cpg = cl_object_page_slice(obj, page); CLOBINVRNT(env, obj, ccc_object_invariant(obj)); - OBD_ALLOC_PTR(cpg); - if (cpg != NULL) { - cpg->cpg_page = vmpage; + cpg->cpg_page = vmpage; - if (page->cp_type == CPT_CACHEABLE) { - LBUG(); - } else { - struct ccc_object *clobj = cl2ccc(obj); + if (page->cp_type == CPT_CACHEABLE) { + LBUG(); + } else { + struct ccc_object *clobj = cl2ccc(obj); - cl_page_slice_add(page, &cpg->cpg_cl, obj, - &slp_transient_page_ops); - clobj->cob_transient_pages++; - } - result = 0; - } else - result = -ENOMEM; - return ERR_PTR(result); + cl_page_slice_add(page, &cpg->cpg_cl, obj, + &slp_transient_page_ops); + clobj->cob_transient_pages++; + } + + return 0; } static int slp_io_init(const struct lu_env *env, struct cl_object *obj, @@ -301,7 +294,7 @@ static int slp_attr_get(const struct lu_env *env, struct cl_object *obj, static void slp_page_fini_common(struct ccc_page *cp) { - cfs_page_t *vmpage = cp->cpg_page; + struct page *vmpage = cp->cpg_page; LASSERT(vmpage != NULL); llu_free_user_page(vmpage); @@ -504,8 +497,8 @@ static int llu_queue_pio(const struct lu_env *env, struct cl_io *io, unsigned long index, offset, bytes; offset = (pos & ~CFS_PAGE_MASK); - index = pos >> CFS_PAGE_SHIFT; - bytes = CFS_PAGE_SIZE - offset; + index = pos >> PAGE_CACHE_SHIFT; + bytes = PAGE_CACHE_SIZE - offset; if (bytes > count) bytes = count; @@ -560,7 +553,7 @@ static int llu_queue_pio(const struct lu_env *env, struct cl_io *io, if (rc == 0) { enum cl_req_type iot; iot = io->ci_type == CIT_READ ? CRT_READ : CRT_WRITE; - rc = cl_io_submit_sync(env, io, iot, queue, CRP_NORMAL, 0); + rc = cl_io_submit_sync(env, io, iot, queue, 0); } group->lig_rc = rc; @@ -589,7 +582,8 @@ struct llu_io_group * get_io_group(struct inode *inode, int maxpages, static int max_io_pages(ssize_t len, int iovlen) { - return (((len + CFS_PAGE_SIZE -1) / CFS_PAGE_SIZE) + 2 + iovlen - 1); + return ((len + PAGE_CACHE_SIZE - 1) / PAGE_CACHE_SIZE) + + 2 + iovlen - 1; } void put_io_group(struct llu_io_group *group)