Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-2446 build: Update Whamcloud copyright messages for Intel
[fs/lustre-release.git]
/
lustre
/
lov
/
lov_cl_internal.h
diff --git
a/lustre/lov/lov_cl_internal.h
b/lustre/lov/lov_cl_internal.h
index
76cd5e4
..
efc8d04
100644
(file)
--- a/
lustre/lov/lov_cl_internal.h
+++ b/
lustre/lov/lov_cl_internal.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.
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@
-26,8
+24,10
@@
* GPL HEADER END
*/
/*
* 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.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2012, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
*/
/*
* This file is part of Lustre, http://www.lustre.org/
@@
-158,7
+158,7
@@
struct lov_device {
* Serializes access to lov_device::ld_emrg in low-memory
* conditions.
*/
* Serializes access to lov_device::ld_emrg in low-memory
* conditions.
*/
-
cfs_mutex_t
ld_mutex;
+
struct mutex
ld_mutex;
};
/**
};
/**
@@
-196,16
+196,35
@@
struct lov_object {
*
* \see lov_object::lo_type
*/
*
* \see lov_object::lo_type
*/
-
cfs_rw_semaphore_t
lo_type_guard;
+
struct rw_semaphore
lo_type_guard;
/**
* Type of an object. Protected by lov_object::lo_type_guard.
*/
enum lov_layout_type lo_type;
/**
* Type of an object. Protected by lov_object::lo_type_guard.
*/
enum lov_layout_type lo_type;
+ /**
+ * True if layout is valid. This bit is cleared when layout lock
+ * is lost.
+ */
+ unsigned lo_lsm_invalid:1;
+ /**
+ * Layout metadata.
+ */
+ struct lov_stripe_md *lo_lsm;
+ /**
+ * Waitq - wait for no one else is using lo_lsm
+ */
+ cfs_waitq_t lo_waitq;
union lov_layout_state {
struct lov_layout_raid0 {
unsigned lo_nr;
union lov_layout_state {
struct lov_layout_raid0 {
unsigned lo_nr;
- struct lov_stripe_md *lo_lsm;
+ /**
+ * 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
+ * any sub-object change.
+ */
+ int lo_attr_valid;
/**
* Array of sub-objects. Allocated when top-object is
* created (lov_init_raid0()).
/**
* Array of sub-objects. Allocated when top-object is
* created (lov_init_raid0()).
@@
-225,14
+244,7
@@
struct lov_object {
/**
* protect 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
- * any sub-object change.
- */
- int lo_attr_valid;
+ spinlock_t lo_sub_lock;
/**
* Cached object attribute, built from sub-object
* attributes.
/**
* Cached object attribute, built from sub-object
* attributes.
@@
-414,7
+426,6
@@
struct lov_thread_info {
struct cl_lock_descr lti_ldescr;
struct ost_lvb lti_lvb;
struct cl_2queue lti_cl2q;
struct cl_lock_descr lti_ldescr;
struct ost_lvb lti_lvb;
struct cl_2queue lti_cl2q;
- union lov_layout_state lti_state;
struct cl_lock_closure lti_closure;
cfs_waitlink_t lti_waiter;
};
struct cl_lock_closure lti_closure;
cfs_waitlink_t lti_waiter;
};
@@
-471,6
+482,11
@@
struct lov_io {
* lov_io::lis_cl::cis_object.
*/
struct lov_object *lis_object;
* lov_io::lis_cl::cis_object.
*/
struct lov_object *lis_object;
+ /**
+ * Lov stripe - this determines how this io fans out.
+ * Hold a refcount to the lsm so it can't go away during IO.
+ */
+ struct lov_stripe_md *lis_lsm;
/**
* Original end-of-io position for this IO, set by the upper layer as
* cl_io::u::ci_rw::pos + cl_io::u::ci_rw::count. lov remembers this,
/**
* Original end-of-io position for this IO, set by the upper layer as
* cl_io::u::ci_rw::pos + cl_io::u::ci_rw::count. lov remembers this,
@@
-565,6
+581,8
@@
int lovsub_lock_init (const struct lu_env *env, struct cl_object *obj,
int lov_lock_init_raid0 (const struct lu_env *env, struct cl_object *obj,
struct cl_lock *lock, const struct cl_io *io);
int lov_lock_init_raid0 (const struct lu_env *env, struct cl_object *obj,
struct cl_lock *lock, const struct cl_io *io);
+int lov_lock_init_empty (const struct lu_env *env, struct cl_object *obj,
+ struct cl_lock *lock, const struct cl_io *io);
int lov_io_init_raid0 (const struct lu_env *env, struct cl_object *obj,
struct cl_io *io);
int lov_io_init_empty (const struct lu_env *env, struct cl_object *obj,
int lov_io_init_raid0 (const struct lu_env *env, struct cl_object *obj,
struct cl_io *io);
int lov_io_init_empty (const struct lu_env *env, struct cl_object *obj,
@@
-605,6
+623,8
@@
struct lov_io_sub *lov_page_subio (const struct lu_env *env,
struct lov_io *lio,
const struct cl_page_slice *slice);
struct lov_io *lio,
const struct cl_page_slice *slice);
+void lov_lsm_decref(struct lov_object *lov, struct lov_stripe_md *lsm);
+struct lov_stripe_md *lov_lsm_addref(struct lov_object *lov);
#define lov_foreach_target(lov, var) \
for (var = 0; var < lov_targets_nr(lov); ++var)
#define lov_foreach_target(lov, var) \
for (var = 0; var < lov_targets_nr(lov); ++var)
@@
-794,13
+814,10
@@
static inline struct lov_thread_info *lov_env_info(const struct lu_env *env)
static inline struct lov_layout_raid0 *lov_r0(struct lov_object *lov)
{
static inline struct lov_layout_raid0 *lov_r0(struct lov_object *lov)
{
- struct lov_layout_raid0 *raid0;
-
- LASSERT(lov->lo_type == LLT_RAID0);
- raid0 = &lov->u.raid0;
- LASSERT(raid0->lo_lsm->lsm_wire.lw_magic == LOV_MAGIC ||
- raid0->lo_lsm->lsm_wire.lw_magic == LOV_MAGIC_V3);
- return raid0;
+ LASSERT(lov->lo_type == LLT_RAID0);
+ LASSERT(lov->lo_lsm->lsm_wire.lw_magic == LOV_MAGIC ||
+ lov->lo_lsm->lsm_wire.lw_magic == LOV_MAGIC_V3);
+ return &lov->u.raid0;
}
/** @} lov */
}
/** @} lov */