X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fldlm%2Fldlm_extent.c;h=15414165916e559e5dca3b2f6d679d16c7a95518;hb=9d3ad9fba3e244735f0994c3910e9de00e2a7f4d;hp=2e6aa1a9523d0a46af2a35371a6c12197aeda995;hpb=e628a59ade003f281800faf3553ac5930e05cb8c;p=fs%2Flustre-release.git diff --git a/lustre/ldlm/ldlm_extent.c b/lustre/ldlm/ldlm_extent.c index 2e6aa1a..1541416 100644 --- a/lustre/ldlm/ldlm_extent.c +++ b/lustre/ldlm/ldlm_extent.c @@ -1,27 +1,42 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright (c) 2002, 2003 Cluster File Systems, Inc. - * Author: Peter Braam - * Author: Phil Schwan + * GPL HEADER START * - * This file is part of the Lustre file system, http://www.lustre.org - * Lustre is a trademark of Cluster File Systems, Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * - * You may have signed or agreed to another license before downloading - * this software. If so, you are bound by the terms and conditions - * of that agreement, and the following does not apply to you. See the - * LICENSE file included with this distribution for more information. + * 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. * - * If you did not agree to a different license, then this copy of Lustre - * is open source 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. + * 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). * - * In either case, 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 - * license text for more details. + * 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 2008 Sun Microsystems, Inc. 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/ldlm/ldlm_extent.c + * + * Author: Peter Braam + * Author: Phil Schwan */ #define DEBUG_SUBSYSTEM S_LDLM @@ -29,7 +44,6 @@ # include #else # include -# include #endif #include @@ -120,7 +134,9 @@ static void ldlm_extent_internal_policy_granted(struct ldlm_lock *req, limiter.start = req_start; if (interval_is_overlapped(tree->lit_root, &ext)) - printk("req_mode = %d, tree->lit_mode = %d, tree->lit_size = %d\n", + CDEBUG(D_INFO, + "req_mode = %d, tree->lit_mode = %d, " + "tree->lit_size = %d\n", req_mode, tree->lit_mode, tree->lit_size); interval_expand(tree->lit_root, &ext, &limiter); limiter.start = max(limiter.start, ext.start); @@ -200,7 +216,7 @@ ldlm_extent_internal_policy_waiting(struct ldlm_lock *req, continue; /* We grow extents downwards only as far as they don't overlap - * with already-granted locks, on the assumtion that clients + * with already-granted locks, on the assumption that clients * will be writing beyond the initial requested end and would * then need to enqueue a new lock beyond previous request. * l_req_extent->end strictly < req_start, checked above. */ @@ -268,6 +284,9 @@ static int ldlm_check_contention(struct ldlm_lock *lock, int contended_locks) struct ldlm_resource *res = lock->l_resource; cfs_time_t now = cfs_time_current(); + if (OBD_FAIL_CHECK(OBD_FAIL_LDLM_SET_CONTENTION)) + return 1; + CDEBUG(D_DLMTRACE, "contended locks = %d\n", contended_locks); if (contended_locks > res->lr_namespace->ns_contended_locks) res->lr_contention_time = now; @@ -604,9 +623,9 @@ static void discard_bl_list(struct list_head *bl_list) lock->l_flags &= ~LDLM_FL_AST_SENT; LASSERT(lock->l_bl_ast_run == 0); LASSERT(lock->l_blocking_lock); - LDLM_LOCK_PUT(lock->l_blocking_lock); + LDLM_LOCK_RELEASE(lock->l_blocking_lock); lock->l_blocking_lock = NULL; - LDLM_LOCK_PUT(lock); + LDLM_LOCK_RELEASE(lock); } EXIT; } @@ -622,7 +641,7 @@ int ldlm_process_extent_lock(struct ldlm_lock *lock, int *flags, int first_enq, ldlm_error_t *err, struct list_head *work_list) { struct ldlm_resource *res = lock->l_resource; - struct list_head rpc_list = CFS_LIST_HEAD_INIT(rpc_list); + CFS_LIST_HEAD(rpc_list); int rc, rc2; int contended_locks = 0; ENTRY;