X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre_mdc.h;h=f095a71ab67db602055d6555c0640b4204077c61;hb=c660aac3f17e4100b4bddb8985b61c1f8d96ecb0;hp=7b43f4febb11e84cc41b408ca6081ea99ade8b94;hpb=c079cd7484d5e7e656eae050003075e30f7f88cc;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre_mdc.h b/lustre/include/lustre_mdc.h index 7b43f4f..f095a71 100644 --- a/lustre/include/lustre_mdc.h +++ b/lustre/include/lustre_mdc.h @@ -1,7 +1,39 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * This file is part of Lustre, http://www.lustre.org + * 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). + * + * 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 + * + * 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. + * + * GPL HEADER END + */ +/* + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. + * + * lustre/include/lustre_mdc.h * * MDS data structures. * See also lustre_idl.h for wire formats of requests. @@ -10,20 +42,28 @@ #ifndef _LUSTRE_MDC_H #define _LUSTRE_MDC_H +/** \defgroup mdc mdc + * + * @{ + */ + #ifdef __KERNEL__ # include # include # ifdef CONFIG_FS_POSIX_ACL # ifdef HAVE_XATTR_ACL # include -# endif +# endif /*HAVE_XATTR_ACL */ # ifdef HAVE_LINUX_POSIX_ACL_XATTR_H # include -# endif -# endif -#endif +# endif /* HAVE_LINUX_POSIX_ACL_XATTR_H */ +# endif /* CONFIG_FS_POSIX_ACL */ +# ifndef HAVE_VFS_INTENT_PATCHES +# include +# endif /* HAVE_VFS_INTENT_PATCHES */ +#endif /* __KERNEL__ */ #include -#include +#include #include #include #include @@ -36,13 +76,13 @@ struct ptlrpc_request; struct obd_device; struct mdc_rpc_lock { - struct semaphore rpcl_sem; + cfs_semaphore_t rpcl_sem; struct lookup_intent *rpcl_it; }; static inline void mdc_init_rpc_lock(struct mdc_rpc_lock *lck) { - sema_init(&lck->rpcl_sem, 1); + cfs_sema_init(&lck->rpcl_sem, 1); lck->rpcl_it = NULL; } @@ -51,7 +91,7 @@ static inline void mdc_get_rpc_lock(struct mdc_rpc_lock *lck, { ENTRY; if (!it || (it->it_op != IT_GETATTR && it->it_op != IT_LOOKUP)) { - down(&lck->rpcl_sem); + cfs_down(&lck->rpcl_sem); LASSERT(lck->rpcl_it == NULL); lck->rpcl_it = it; } @@ -63,14 +103,29 @@ static inline void mdc_put_rpc_lock(struct mdc_rpc_lock *lck, if (!it || (it->it_op != IT_GETATTR && it->it_op != IT_LOOKUP)) { LASSERT(it == lck->rpcl_it); lck->rpcl_it = NULL; - up(&lck->rpcl_sem); + cfs_up(&lck->rpcl_sem); } EXIT; } -struct mdc_cache_waiter { - struct list_head mcw_entry; - wait_queue_head_t mcw_waitq; +static inline void mdc_update_max_ea_from_body(struct obd_export *exp, + struct mdt_body *body) +{ + if (body->valid & OBD_MD_FLMODEASIZE) { + if (exp->exp_obd->u.cli.cl_max_mds_easize < body->max_mdsize) + exp->exp_obd->u.cli.cl_max_mds_easize = + body->max_mdsize; + if (exp->exp_obd->u.cli.cl_max_mds_cookiesize < + body->max_cookiesize) + exp->exp_obd->u.cli.cl_max_mds_cookiesize = + body->max_cookiesize; + } +} + + +struct mdc_cache_waiter { + cfs_list_t mcw_entry; + cfs_waitq_t mcw_waitq; }; /* mdc/mdc_locks.c */ @@ -82,4 +137,7 @@ int it_open_error(int phase, struct lookup_intent *it); int mdc_sendpage(struct obd_export *exp, const struct lu_fid *fid, const struct page *page, int offset); #endif + +/** @} mdc */ + #endif