*/
enum cl_lock_transition {
/** operation cannot be completed immediately. Wait for state change. */
- CLO_WAIT = 1,
+ CLO_WAIT = 1,
/** operation had to release lock mutex, restart. */
- CLO_REPEAT = 2
+ CLO_REPEAT = 2,
+ /** lower layer re-enqueued. */
+ CLO_REENQUEUED = 3,
};
/**
*/
CEF_NEVER = 0x00000010,
/**
+ * for async glimpse lock.
+ */
+ CEF_AGL = 0x00000020,
+ /**
+ * do not trigger re-enqueue.
+ */
+ CEF_NO_REENQUEUE = 0x00000040,
+ /**
* mask of enq_flags.
*/
- CEF_MASK = 0x0000001f
+ CEF_MASK = 0x0000007f,
};
/**
* @{ */
enum {
CLP_GANG_OKAY = 0,
+ CLP_GANG_RESCHED,
CLP_GANG_AGAIN,
- CLP_GANG_RESCHED
+ CLP_GANG_ABORT
};
+/* callback of cl_page_gang_lookup() */
+typedef int (*cl_page_gang_cb_t) (const struct lu_env *, struct cl_io *,
+ struct cl_page *, void *);
int cl_page_gang_lookup (const struct lu_env *env,
struct cl_object *obj,
struct cl_io *io,
pgoff_t start, pgoff_t end,
- struct cl_page_list *plist);
+ cl_page_gang_cb_t cb, void *cbdata);
struct cl_page *cl_page_lookup (struct cl_object_header *hdr,
pgoff_t index);
struct cl_page *cl_page_find (const struct lu_env *env,
void cl_env_unplant (struct lu_env *env, int *refcheck);
unsigned cl_env_cache_purge(unsigned nr);
-void cl_set_ctx_tags(__u32 tags);
-void cl_set_ses_tags(__u32 tags);
/** @} cl_env */
/*