struct osc_object {
struct cl_object oo_cl;
struct lov_oinfo *oo_oinfo;
- /**
- * True if locking against this stripe got -EUSERS.
- */
- int oo_contended;
- ktime_t oo_contention_time;
+
#ifdef CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK
/**
* IO context used for invariant checks in osc_lock_has_pages().
spin_lock(&obj->oo_lock);
}
-static inline int osc_object_trylock(struct osc_object *obj)
-{
- return spin_trylock(&obj->oo_lock);
-}
-
static inline void osc_object_unlock(struct osc_object *obj)
{
spin_unlock(&obj->oo_lock);
#define assert_osc_object_is_locked(obj) \
assert_spin_locked(&obj->oo_lock)
-static inline void osc_object_set_contended(struct osc_object *obj)
-{
- obj->oo_contention_time = ktime_get();
- /* mb(); */
- obj->oo_contended = 1;
-}
-
-static inline void osc_object_clear_contended(struct osc_object *obj)
-{
- obj->oo_contended = 0;
-}
-
/*
* Lock "micro-states" for osc layer.
*/
return io;
}
-static inline int osc_is_object(const struct lu_object *obj)
-{
- return obj->lo_dev->ld_type == &osc_device_type;
-}
-
-static inline struct osc_lock *osc_lock_at(const struct cl_lock *lock)
-{
- return cl2osc_lock(cl_lock_at(lock, &osc_device_type));
-}
-
int osc_lock_init(const struct lu_env *env, struct cl_object *obj,
struct cl_lock *lock, const struct cl_io *io);
int osc_io_init(const struct lu_env *env, struct cl_object *obj,