X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fliblustre%2Fnamei.c;h=43843b8b6a212b92f3cb36192c8487c00b93cbd8;hb=8ca651d636c37339cc50bffa4532b7cbd0ead570;hp=1fcb482e2522ae698bf8e3f8fad9fe1128db78e0;hpb=a25adb47c7b7eeb68a922e2647d74eeff3401c6a;p=fs%2Flustre-release.git diff --git a/lustre/liblustre/namei.c b/lustre/liblustre/namei.c index 1fcb482..43843b8 100644 --- a/lustre/liblustre/namei.c +++ b/lustre/liblustre/namei.c @@ -1,24 +1,43 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Lustre Light name resolution + * GPL HEADER START + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). * - * Copyright (c) 2002-2004 Cluster File Systems, Inc. + * You should have received a copy of the GNU General Public License + * version 2 along with this program; If not, see + * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf * - * This file is part of Lustre, http://www.lustre.org. + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. * - * Lustre is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. + * GPL HEADER END + */ +/* + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. + * + * Copyright (c) 2011, Whamcloud, Inc. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. * - * Lustre is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * lustre/liblustre/namei.c * - * 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. + * Lustre Light name resolution */ #define DEBUG_SUBSYSTEM S_LLITE @@ -32,19 +51,6 @@ #include #include -#include -#ifdef HAVE_XTIO_H -#include -#endif -#include -#include -#include -#ifdef HAVE_FILE_H -#include -#endif - -#undef LIST_HEAD - #include "llite_lib.h" void ll_intent_drop_lock(struct lookup_intent *it) @@ -91,7 +97,7 @@ void llu_lookup_finish_locks(struct lookup_intent *it, struct pnode *pnode) sbi = llu_i2sbi(inode); md_set_lock_data(sbi->ll_md_exp, - &it->d.lustre.it_lock_handle, inode); + &it->d.lustre.it_lock_handle, inode, NULL); } /* drop lookup/getattr locks */ @@ -173,7 +179,6 @@ int llu_md_blocking_ast(struct ldlm_lock *lock, } static int pnode_revalidate_finish(struct ptlrpc_request *req, - int offset, struct lookup_intent *it, struct pnode *pnode) { @@ -191,12 +196,12 @@ static int pnode_revalidate_finish(struct ptlrpc_request *req, RETURN(-ENOENT); rc = md_get_lustre_md(llu_i2sbi(inode)->ll_md_exp, req, - offset, llu_i2sbi(inode)->ll_dt_exp, + llu_i2sbi(inode)->ll_dt_exp, llu_i2sbi(inode)->ll_md_exp, &md); if (rc) RETURN(rc); - llu_update_inode(inode, md.body, md.lsm); + llu_update_inode(inode, &md); RETURN(rc); } @@ -205,8 +210,7 @@ static int llu_pb_revalidate(struct pnode *pnode, int flags, struct lookup_intent *it) { struct pnode_base *pb = pnode->p_base; - struct it_cb_data icbd; - struct md_op_data op_data; + struct md_op_data op_data = {{ 0 }}; struct ptlrpc_request *req = NULL; struct lookup_intent lookup_it = { .it_op = IT_LOOKUP }; struct obd_export *exp; @@ -242,8 +246,6 @@ static int llu_pb_revalidate(struct pnode *pnode, int flags, } exp = llu_i2mdexp(pb->pb_ino); - icbd.icbd_parent = pnode->p_parent->p_base->pb_ino; - icbd.icbd_child = pnode; if (!it) { it = &lookup_it; @@ -265,7 +267,7 @@ static int llu_pb_revalidate(struct pnode *pnode, int flags, if (rc < 0) GOTO(out, rc = 0); - rc = pnode_revalidate_finish(req, DLM_REPLY_REC_OFF, it, pnode); + rc = pnode_revalidate_finish(req, it, pnode); if (rc != 0) { ll_intent_release(it); GOTO(out, rc = 0); @@ -316,7 +318,7 @@ static int lookup_it_finish(struct ptlrpc_request *request, int offset, if (it_disposition(it, DISP_OPEN_CREATE) && !it_open_error(DISP_OPEN_CREATE, it)) { LASSERT(request); - LASSERT(atomic_read(&request->rq_refcount) > 1); + LASSERT(cfs_atomic_read(&request->rq_refcount) > 1); CDEBUG(D_INODE, "dec a ref of req %p\n", request); ptlrpc_req_finished(request); } @@ -335,7 +337,7 @@ static int lookup_it_finish(struct ptlrpc_request *request, int offset, if (it_disposition(it, DISP_OPEN_CREATE)) ptlrpc_req_finished(request); - rc = md_get_lustre_md(sbi->ll_md_exp, request, offset, + rc = md_get_lustre_md(sbi->ll_md_exp, request, sbi->ll_dt_exp, sbi->ll_md_exp, &md); if (rc) RETURN(rc); @@ -365,7 +367,7 @@ static int lookup_it_finish(struct ptlrpc_request *request, int offset, /* bug 2334: drop MDS lock before acquiring OST lock */ ll_intent_drop_lock(it); - rc = llu_glimpse_size(inode); + rc = cl_glimpse_size(inode); if (rc) { I_RELE(inode); RETURN(rc); @@ -402,7 +404,7 @@ struct inode *llu_inode_from_lock(struct ldlm_lock *lock) static int llu_lookup_it(struct inode *parent, struct pnode *pnode, struct lookup_intent *it, int flags) { - struct md_op_data op_data; + struct md_op_data op_data = {{ 0 }}; struct it_cb_data icbd; struct ptlrpc_request *req = NULL; struct lookup_intent lookup_it = { .it_op = IT_LOOKUP }; @@ -579,6 +581,8 @@ int llu_iop_lookup(struct pnode *pnode, } out: + if (it) + OBD_FREE(it, sizeof(*it)); liblustre_wait_event(0); RETURN(rc); }