#ifdef HAVE_SPLIT_SUPPORT
{
struct md_attr *ma = &cmm_env_info(env)->cmi_ma;
- int split;
-
- memset(ma, 0, sizeof(*ma));
- split = cmm_expect_splitting(env, mo, ma);
-
- if (split == CMM_NOT_SPLITTABLE) {
- if (lm == LU_PW)
- RETURN(LU_CW);
- } else {
- if (lm == LU_EX) {
- RETURN(LU_EX);
- } else if (lm == LU_PR) {
- RETURN(LU_CR);
- } else if (lm == LU_PW) {
- if (split == CMM_EXPECT_SPLIT) {
- RETURN(LU_EX);
- } else {
- RETURN(LU_CW);
- }
- }
- }
+
+ /*
+ * Check only if need protection from split. If not mdt handles
+ * other cases.
+ */
+ if (lm == LU_PW &&
+ cmm_expect_splitting(env, mo, ma) == CMM_EXPECT_SPLIT)
+ RETURN(LU_EX);
}
#endif
RETURN(LU_MINMODE);
RETURN(m);
}
-static inline lu_mode_t mdt_ldlm_mode2lu_mode(ldlm_mode_t mode)
-{
- switch (mode) {
- case LCK_MINMODE:
- return LU_MINMODE;
- case LCK_EX:
- return LU_EX;
- case LCK_PW:
- return LU_PW;
- case LCK_PR:
- return LU_PR;
- case LCK_CW:
- return LU_CW;
- case LCK_CR:
- return LU_CR;
- case LCK_NL:
- return LU_NL;
- case LCK_GROUP:
- return LU_GROUP;
- default:
- return 0;
- }
-}
-
-static inline ldlm_mode_t mdt_lu_mode2ldlm_mode(lu_mode_t mode)
-{
- switch (mode) {
- case LU_MINMODE:
- return LCK_MINMODE;
- case LU_EX:
- return LCK_EX;
- case LU_PW:
- return LCK_PW;
- case LU_PR:
- return LCK_PR;
- case LU_CW:
- return LCK_CW;
- case LU_CR:
- return LCK_CR;
- case LU_NL:
- return LCK_NL;
- case LU_GROUP:
- return LCK_GROUP;
- default:
- return 0;
- }
-}
-
int mdt_object_lock_mode(struct mdt_thread_info *info,
struct mdt_object *o,
struct mdt_lock_handle *lh,
return cache ? (strcmp(cache->uc_upcall, "NONE") == 0) : 1;
}
+static inline lu_mode_t mdt_ldlm_mode2lu_mode(ldlm_mode_t mode)
+{
+ switch (mode) {
+ case LCK_MINMODE:
+ return LU_MINMODE;
+ case LCK_EX:
+ return LU_EX;
+ case LCK_PW:
+ return LU_PW;
+ case LCK_PR:
+ return LU_PR;
+ case LCK_CW:
+ return LU_CW;
+ case LCK_CR:
+ return LU_CR;
+ case LCK_NL:
+ return LU_NL;
+ case LCK_GROUP:
+ return LU_GROUP;
+ default:
+ return 0;
+ }
+}
+
+static inline ldlm_mode_t mdt_lu_mode2ldlm_mode(lu_mode_t mode)
+{
+ switch (mode) {
+ case LU_MINMODE:
+ return LCK_MINMODE;
+ case LU_EX:
+ return LCK_EX;
+ case LU_PW:
+ return LCK_PW;
+ case LU_PR:
+ return LCK_PR;
+ case LU_CW:
+ return LCK_CW;
+ case LU_CR:
+ return LCK_CR;
+ case LU_NL:
+ return LCK_NL;
+ case LU_GROUP:
+ return LCK_GROUP;
+ default:
+ return 0;
+ }
+}
+
/*
* Capability
*/