X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre_import.h;h=cba464788956a41c71c33073dabe5251f5021161;hb=b74eb1a08d2a1cc1ee1b5b8aec268c05f8e7ac22;hp=4ab3acc0a6f64fbbddd7df38c4624920bb1901c4;hpb=2800ca6728b00c7ab1f98a27a399ed916cb1be4e;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre_import.h b/lustre/include/lustre_import.h index 4ab3acc..cba4647 100644 --- a/lustre/include/lustre_import.h +++ b/lustre/include/lustre_import.h @@ -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. @@ -26,8 +24,10 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. + * + * Copyright (c) 2011, 2012, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -61,13 +61,13 @@ #define AT_FLG_NOHIST 0x1 /* use last reported value only */ struct adaptive_timeout { - time_t at_binstart; /* bin start time */ - unsigned int at_hist[AT_BINS]; /* timeout history bins */ - unsigned int at_flags; - unsigned int at_current; /* current timeout value */ - unsigned int at_worst_ever; /* worst-ever timeout value */ - time_t at_worst_time; /* worst-ever timeout timestamp */ - cfs_spinlock_t at_lock; + time_t at_binstart; /* bin start time */ + unsigned int at_hist[AT_BINS]; /* timeout history bins */ + unsigned int at_flags; + unsigned int at_current; /* current timeout value */ + unsigned int at_worst_ever; /* worst-ever timeout value */ + time_t at_worst_time; /* worst-ever timeout timestamp */ + spinlock_t at_lock; }; struct ptlrpc_at_array { @@ -124,6 +124,8 @@ enum obd_import_event { IMP_EVENT_INVALIDATE = 0x808003, IMP_EVENT_ACTIVE = 0x808004, IMP_EVENT_OCD = 0x808005, + IMP_EVENT_DEACTIVATE = 0x808006, + IMP_EVENT_ACTIVATE = 0x808007, }; /** @@ -186,7 +188,7 @@ struct obd_import { * @{ */ struct ptlrpc_sec *imp_sec; - cfs_semaphore_t imp_sec_mutex; + struct mutex imp_sec_mutex; cfs_time_t imp_sec_expire; /** @} */ @@ -246,7 +248,7 @@ struct obd_import { struct obd_import_conn *imp_conn_current; /** Protects flags, level, generation, conn_cnt, *_list */ - cfs_spinlock_t imp_lock; + spinlock_t imp_lock; /* flags */ unsigned long imp_no_timeout:1, /* timeouts are disabled */ @@ -261,6 +263,8 @@ struct obd_import { imp_force_verify:1, /* force an immidiate ping */ imp_pingable:1, /* pingable */ imp_resend_replay:1, /* resend for replay */ + imp_no_pinger_recover:1,/* disable normal recovery, for test only. */ + imp_need_mne_swab:1, /* need IR MNE swab */ imp_force_reconnect:1; /* import must be reconnected instead of chouse new connection */ __u32 imp_connect_op; struct obd_connect_data imp_connect_data; @@ -312,16 +316,20 @@ static inline unsigned int at_timeout2est(unsigned int val) return (max((val << 2) / 5, 5U) - 4); } -static inline void at_init(struct adaptive_timeout *at, int val, int flags) { - memset(at, 0, sizeof(*at)); +static inline void at_reset(struct adaptive_timeout *at, int val) { at->at_current = val; at->at_worst_ever = val; at->at_worst_time = cfs_time_current_sec(); - at->at_flags = flags; - cfs_spin_lock_init(&at->at_lock); } +static inline void at_init(struct adaptive_timeout *at, int val, int flags) { + memset(at, 0, sizeof(*at)); + spin_lock_init(&at->at_lock); + at->at_flags = flags; + at_reset(at, val); +} +extern unsigned int at_min; static inline int at_get(struct adaptive_timeout *at) { - return at->at_current; + return (at->at_current > at_min) ? at->at_current : at_min; } int at_measured(struct adaptive_timeout *at, unsigned int val); int import_at_get_index(struct obd_import *imp, int portal);