X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Flov%2Flov_page.c;h=03335ff8763d001550a16ebc82aceafa91d08206;hb=091c8a93c184b2ff75a71ba665dbfcf38e435a6f;hp=b995e7d4fa4a8d92c528b808528ac7bad9423fa6;hpb=65701b4a30efdb695776bcf690a2b3cabc928da1;p=fs%2Flustre-release.git diff --git a/lustre/lov/lov_page.c b/lustre/lov/lov_page.c index b995e7d..03335ff 100644 --- a/lustre/lov/lov_page.c +++ b/lustre/lov/lov_page.c @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -111,6 +109,30 @@ static void lov_page_assume(const struct lu_env *env, lov_page_own(env, slice, io, 0); } +static int lov_page_cache_add(const struct lu_env *env, + const struct cl_page_slice *slice, + struct cl_io *io) +{ + struct lov_io *lio = lov_env_io(env); + struct lov_io_sub *sub; + int rc = 0; + + LINVRNT(lov_page_invariant(slice)); + LINVRNT(!cl2lov_page(slice)->lps_invalid); + ENTRY; + + sub = lov_page_subio(env, lio, slice); + if (!IS_ERR(sub)) { + rc = cl_page_cache_add(sub->sub_env, sub->sub_io, + slice->cpl_page->cp_child, CRT_WRITE); + lov_sub_put(sub); + } else { + rc = PTR_ERR(sub); + CL_PAGE_DEBUG(D_ERROR, env, slice->cpl_page, "rc = %d\n", rc); + } + RETURN(rc); +} + static int lov_page_print(const struct lu_env *env, const struct cl_page_slice *slice, void *cookie, lu_printer_t printer) @@ -124,6 +146,11 @@ static const struct cl_page_operations lov_page_ops = { .cpo_fini = lov_page_fini, .cpo_own = lov_page_own, .cpo_assume = lov_page_assume, + .io = { + [CRT_WRITE] = { + .cpo_cache_add = lov_page_cache_add + } + }, .cpo_print = lov_page_print };