X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre_osc.h;h=32a2c638aff45e9608ad1ac6777ebecfa8451bb3;hb=6ee742fd5c56819ebe7eba65f4133d02c318916e;hp=734566d8954abace43c8c5b56e5ca2f57b8b5c14;hpb=db2d74e8091a7b816d831babe428fa189e002544;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre_osc.h b/lustre/include/lustre_osc.h index 734566d..32a2c63 100644 --- a/lustre/include/lustre_osc.h +++ b/lustre/include/lustre_osc.h @@ -23,7 +23,7 @@ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2012, 2016, Intel Corporation. + * Copyright (c) 2012, 2017, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -120,7 +120,7 @@ struct osc_device { } od_stats; /* configuration item(s) */ - int od_contention_time; + time64_t od_contention_time; int od_lockless_truncate; }; @@ -135,7 +135,9 @@ struct osc_io { /** true if this io is lockless. */ unsigned int oi_lockless:1, /** true if this io is counted as active IO */ - oi_is_active:1; + oi_is_active:1, + /** true if this io has CAP_SYS_RESOURCE */ + oi_cap_sys_resource:1; /** how many LRU pages are reserved for this IO */ unsigned long oi_lru_reserved; @@ -171,6 +173,7 @@ struct osc_thread_info { struct lustre_handle oti_handle; struct cl_page_list oti_plist; struct cl_io oti_io; + struct pagevec oti_pagevec; void *oti_pvec[OTI_PVEC_SIZE]; /** * Fields used by cl_lock_discard_pages(). @@ -256,7 +259,7 @@ struct osc_object { * True if locking against this stripe got -EUSERS. */ int oo_contended; - cfs_time_t oo_contention_time; + ktime_t oo_contention_time; #ifdef CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK /** * IO context used for invariant checks in osc_lock_has_pages(). @@ -358,7 +361,7 @@ static inline int osc_object_is_locked(struct osc_object *obj) static inline void osc_object_set_contended(struct osc_object *obj) { - obj->oo_contention_time = cfs_time_current(); + obj->oo_contention_time = ktime_get(); /* mb(); */ obj->oo_contended = 1; } @@ -533,7 +536,11 @@ struct osc_page { /** * Set if the page must be transferred with OBD_BRW_SRVLOCK. */ - ops_srvlock:1; + ops_srvlock:1, + /** + * If the page is in osc_object::oo_tree. + */ + ops_intree:1; /** * lru page list. See osc_lru_{del|use}() in osc_page.c for usage. */ @@ -541,7 +548,7 @@ struct osc_page { /** * Submit time - the time when the page is starting RPC. For debugging. */ - cfs_time_t ops_submit_time; + ktime_t ops_submit_time; }; struct osc_brw_async_args { @@ -562,6 +569,7 @@ extern struct kmem_cache *osc_thread_kmem; extern struct kmem_cache *osc_session_kmem; extern struct kmem_cache *osc_extent_kmem; extern struct kmem_cache *osc_quota_kmem; +extern struct kmem_cache *osc_obdo_kmem; extern struct lu_context_key osc_key; extern struct lu_context_key osc_session_key; @@ -718,6 +726,7 @@ void osc_lock_cancel(const struct lu_env *env, const struct cl_lock_slice *slice); void osc_lock_fini(const struct lu_env *env, struct cl_lock_slice *slice); int osc_ldlm_glimpse_ast(struct ldlm_lock *dlmlock, void *data); +unsigned long osc_ldlm_weigh_ast(struct ldlm_lock *dlmlock); /***************************************************************************** *