X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Flov%2Flov_cl_internal.h;h=a892bc1d262692b5325f6301357fe646fd224595;hb=68bbae08db0da2767bb46e370a43b24f6f1e3369;hp=98c1270fa625c904e605a98806d6f8f0b68e65b8;hpb=0c4b43a566f9a06a909642b00fb513d021d7bc49;p=fs%2Flustre-release.git diff --git a/lustre/lov/lov_cl_internal.h b/lustre/lov/lov_cl_internal.h index 98c1270..a892bc1 100644 --- a/lustre/lov/lov_cl_internal.h +++ b/lustre/lov/lov_cl_internal.h @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -55,8 +55,6 @@ #include #include "lov_internal.h" -/** \addtogroup lov lov @{ */ - /** \defgroup lov lov * Logical object volume layer. This layer implements data striping (raid0). * @@ -160,7 +158,7 @@ struct lov_device { * Serializes access to lov_device::ld_emrg in low-memory * conditions. */ - struct mutex ld_mutex; + cfs_mutex_t ld_mutex; }; /** @@ -171,8 +169,6 @@ enum lov_layout_type { LLT_EMPTY, /** striped file */ LLT_RAID0, - /** join file */ - LLT_JOIN, LLT_NR }; @@ -200,7 +196,7 @@ struct lov_object { * * \see lov_object::lo_type */ - struct rw_semaphore lo_type_guard; + cfs_rw_semaphore_t lo_type_guard; /** * Type of an object. Protected by lov_object::lo_type_guard. */ @@ -227,6 +223,10 @@ struct lov_object { */ struct lovsub_object **lo_sub; /** + * protect lo_sub + */ + cfs_spinlock_t lo_sub_lock; + /** * When this is true, lov_object::lo_attr contains * valid up to date attributes for a top-level * object. This field is reset to 0 when attributes of @@ -241,8 +241,6 @@ struct lov_object { } raid0; struct lov_layout_state_empty { } empty; - struct lov_layout_state_join { - } join; } u; /** * Thread that acquired lov_object::lo_type_guard in an exclusive @@ -285,9 +283,9 @@ struct lov_lock { unsigned lls_nr_filled; /** * Set when sub-lock was canceled, while top-lock was being - * unlocked. + * used, or unused. */ - int lls_unuse_race; + int lls_cancel_race:1; /** * An array of sub-locks * @@ -372,7 +370,7 @@ struct lov_lock_link { * A linkage into per sub-lock list of all corresponding top-locks, * hanging off lovsub_lock::lss_parents. */ - struct list_head lll_list; + cfs_list_t lll_list; }; /** @@ -384,7 +382,7 @@ struct lovsub_lock { * List of top-locks that have given sub-lock as their part. Protected * by cl_lock::cll_guard mutex. */ - struct list_head lss_parents; + cfs_list_t lss_parents; /** * Top-lock that initiated current operation on this sub-lock. This is * only set during top-to-bottom lock operations like enqueue, and is @@ -436,7 +434,7 @@ struct lov_io_sub { * Linkage into a list (hanging off lov_io::lis_active) of all * sub-io's active for the current IO iteration. */ - struct list_head sub_linkage; + cfs_list_t sub_linkage; /** * true, iff cl_io_init() was successfully executed against * lov_io_sub::sub_io. @@ -512,7 +510,7 @@ struct lov_io { /** * List of active sub-io's. */ - struct list_head lis_active; + cfs_list_t lis_active; }; struct lov_session { @@ -800,7 +798,8 @@ static inline struct lov_layout_raid0 *lov_r0(struct lov_object *lov) LASSERT(lov->lo_type == LLT_RAID0); raid0 = &lov->u.raid0; - LASSERT(raid0->lo_lsm->lsm_wire.lw_magic == LOV_MAGIC); + LASSERT(raid0->lo_lsm->lsm_wire.lw_magic == LOV_MAGIC || + raid0->lo_lsm->lsm_wire.lw_magic == LOV_MAGIC_V3); return raid0; }