X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre_import.h;h=4b419ba3c03111f8900d68d1d47e4ada511bce6b;hb=45cb603b4352a73077dcc45ec2cdea403837a7ba;hp=252157f14b453b34e22af40df781a3bdc1c081cc;hpb=d730750a6311cae8a4427824867410faccc6698f;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre_import.h b/lustre/include/lustre_import.h index 252157f..4b419ba 100644 --- a/lustre/include/lustre_import.h +++ b/lustre/include/lustre_import.h @@ -27,7 +27,7 @@ * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2011, 2013, Intel Corporation. + * Copyright (c) 2011, 2014, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -196,6 +196,11 @@ struct obd_import { struct list_head *imp_replay_cursor; /** @} */ + /** List of not replied requests */ + struct list_head imp_unreplied_list; + /** Known maximal replied XID */ + __u64 imp_known_replied_xid; + /** obd device for this import */ struct obd_device *imp_obd; @@ -255,7 +260,7 @@ struct obd_import { struct lustre_handle imp_remote_handle; /** When to perform next ping. time in jiffies. */ cfs_time_t imp_next_ping; - /** When we last succesfully connected. time in 64bit jiffies */ + /** When we last successfully connected. time in 64bit jiffies */ __u64 imp_last_success_conn; /** List of all possible connection for import. */ @@ -304,19 +309,22 @@ struct obd_import { * chouse new connection */ imp_force_reconnect:1, /* import has tried to connect with server */ - imp_connect_tried:1; - __u32 imp_connect_op; - struct obd_connect_data imp_connect_data; - __u64 imp_connect_flags_orig; - int imp_connect_error; - - __u32 imp_msg_magic; - __u32 imp_msghdr_flags; /* adjusted based on server capability */ - - struct ptlrpc_request_pool *imp_rq_pool; /* emergency request pool */ - - struct imp_at imp_at; /* adaptive timeout data */ - time_t imp_last_reply_time; /* for health check */ + imp_connect_tried:1, + /* connected but not FULL yet */ + imp_connected:1; + __u32 imp_connect_op; + struct obd_connect_data imp_connect_data; + __u64 imp_connect_flags_orig; + __u64 imp_connect_flags2_orig; + int imp_connect_error; + + __u32 imp_msg_magic; + /* adjusted based on server capability */ + __u32 imp_msghdr_flags; + + /* adaptive timeout data */ + struct imp_at imp_at; + time_t imp_last_reply_time; /* for health check */ }; /* import.c */ @@ -333,19 +341,37 @@ static inline unsigned int at_timeout2est(unsigned int val) return (max((val << 2) / 5, 5U) - 4); } -static inline void at_reset(struct adaptive_timeout *at, int val) { - spin_lock(&at->at_lock); +static inline void at_reset_nolock(struct adaptive_timeout *at, int val) +{ at->at_current = val; at->at_worst_ever = val; at->at_worst_time = cfs_time_current_sec(); +} + +static inline void at_reset(struct adaptive_timeout *at, int val) +{ + spin_lock(&at->at_lock); + at_reset_nolock(at, val); spin_unlock(&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); } + +static inline void at_reinit(struct adaptive_timeout *at, int val, int flags) +{ + spin_lock(&at->at_lock); + at->at_binstart = 0; + memset(at->at_hist, 0, sizeof(at->at_hist)); + at->at_flags = flags; + at_reset_nolock(at, val); + spin_unlock(&at->at_lock); +} + extern unsigned int at_min; static inline int at_get(struct adaptive_timeout *at) { return (at->at_current > at_min) ? at->at_current : at_min;