[patch 05/12] dlm: rsb flag ops with inlined functions

2005-07-15 Thread David Teigland
Replace test/set/clear_bit of rsb flags with new inline functions that use
the less expense non-atomic bit ops.

Signed-off-by: David Teigland <[EMAIL PROTECTED]>

Index: linux-2.6.12-mm1/drivers/dlm/debug_fs.c
===
--- linux-2.6.12-mm1.orig/drivers/dlm/debug_fs.c
+++ linux-2.6.12-mm1/drivers/dlm/debug_fs.c
@@ -114,7 +114,7 @@ static int print_resource(struct dlm_rsb
seq_printf(s, "%02x ",
   (unsigned char) res->res_lvbptr[i]);
}
-   if (test_bit(RESFL_VALNOTVALID, >res_flags))
+   if (rsb_flag(res, RSB_VALNOTVALID))
seq_printf(s, " (INVALID)");
seq_printf(s, "\n");
}
Index: linux-2.6.12-mm1/drivers/dlm/dlm_internal.h
===
--- linux-2.6.12-mm1.orig/drivers/dlm/dlm_internal.h
+++ linux-2.6.12-mm1/drivers/dlm/dlm_internal.h
@@ -262,25 +262,11 @@ struct dlm_lkb {
longlkb_astparam;   /* caller's ast arg */
 };
 
-
-/* find_rsb() flags */
-
-#define R_MASTER   1   /* only return rsb if it's a master */
-#define R_CREATE   2   /* create/add rsb if not found */
-
-#define RESFL_MASTER_WAIT  0
-#define RESFL_MASTER_UNCERTAIN 1
-#define RESFL_VALNOTVALID  2
-#define RESFL_VALNOTVALID_PREV 3
-#define RESFL_NEW_MASTER   4
-#define RESFL_NEW_MASTER2  5
-#define RESFL_RECOVER_CONVERT  6
-
 struct dlm_rsb {
struct dlm_ls   *res_ls;/* the lockspace */
struct kref res_ref;
struct semaphoreres_sem;
-   unsigned long   res_flags;  /* RESFL_ */
+   unsigned long   res_flags;
int res_length; /* length of rsb name */
int res_nodeid;
uint32_tres_lvbseq;
@@ -301,6 +287,38 @@ struct dlm_rsb {
charres_name[1];
 };
 
+/* find_rsb() flags */
+
+#define R_MASTER   1   /* only return rsb if it's a master */
+#define R_CREATE   2   /* create/add rsb if not found */
+
+/* rsb_flags */
+
+enum rsb_flags {
+   RSB_MASTER_WAIT,
+   RSB_MASTER_UNCERTAIN,
+   RSB_VALNOTVALID,
+   RSB_VALNOTVALID_PREV,
+   RSB_NEW_MASTER,
+   RSB_NEW_MASTER2,
+   RSB_RECOVER_CONVERT,
+};
+
+static inline void rsb_set_flag(struct dlm_rsb *r, enum rsb_flags flag)
+{
+   __set_bit(flag, >res_flags);
+}
+
+static inline void rsb_clear_flag(struct dlm_rsb *r, enum rsb_flags flag)
+{
+   __clear_bit(flag, >res_flags);
+}
+
+static inline int rsb_flag(struct dlm_rsb *r, enum rsb_flags flag)
+{
+   return test_bit(flag, >res_flags);
+}
+
 
 /* dlm_header is first element of all structs sent between nodes */
 
Index: linux-2.6.12-mm1/drivers/dlm/lock.c
===
--- linux-2.6.12-mm1.orig/drivers/dlm/lock.c
+++ linux-2.6.12-mm1/drivers/dlm/lock.c
@@ -317,18 +317,17 @@ static int _search_rsb(struct dlm_ls *ls
list_move(>res_hashchain, >ls_rsbtbl[b].list);
 
if (r->res_nodeid == -1) {
-   clear_bit(RESFL_MASTER_WAIT, >res_flags);
-   clear_bit(RESFL_MASTER_UNCERTAIN, >res_flags);
+   rsb_clear_flag(r, RSB_MASTER_WAIT);
+   rsb_clear_flag(r, RSB_MASTER_UNCERTAIN);
r->res_trial_lkid = 0;
} else if (r->res_nodeid > 0) {
-   clear_bit(RESFL_MASTER_WAIT, >res_flags);
-   set_bit(RESFL_MASTER_UNCERTAIN, >res_flags);
+   rsb_clear_flag(r, RSB_MASTER_WAIT);
+   rsb_set_flag(r, RSB_MASTER_UNCERTAIN);
r->res_trial_lkid = 0;
} else {
DLM_ASSERT(r->res_nodeid == 0, dlm_print_rsb(r););
-   DLM_ASSERT(!test_bit(RESFL_MASTER_WAIT, >res_flags),
-  dlm_print_rsb(r););
-   DLM_ASSERT(!test_bit(RESFL_MASTER_UNCERTAIN, >res_flags),);
+   DLM_ASSERT(!rsb_flag(r, RSB_MASTER_WAIT), dlm_print_rsb(r););
+   DLM_ASSERT(!rsb_flag(r, RSB_MASTER_UNCERTAIN),);
}
  out:
*r_ret = r;
@@ -837,7 +836,7 @@ static void set_lvb_lock(struct dlm_rsb 
 
} else if (b == 0) {
if (lkb->lkb_exflags & DLM_LKF_IVVALBLK) {
-   set_bit(RESFL_VALNOTVALID, >res_flags);
+   rsb_set_flag(r, RSB_VALNOTVALID);
return;
}
 
@@ -856,10 +855,10 @@ static void set_lvb_lock(struct dlm_rsb 
memcpy(r->res_lvbptr, lkb->lkb_lvbptr, len);
r->res_lvbseq++;
lkb->lkb_lvbseq = r->res_lvbseq;
-   clear_bit(RESFL_VALNOTVALID, >res_flags);
+   rsb_clear_flag(r, RSB_VALNOTVALID);
}
 
-   if (test_bit(RESFL_VALNOTVALID, >res_flags))
+   

[patch 05/12] dlm: rsb flag ops with inlined functions

2005-07-15 Thread David Teigland
Replace test/set/clear_bit of rsb flags with new inline functions that use
the less expense non-atomic bit ops.

Signed-off-by: David Teigland [EMAIL PROTECTED]

Index: linux-2.6.12-mm1/drivers/dlm/debug_fs.c
===
--- linux-2.6.12-mm1.orig/drivers/dlm/debug_fs.c
+++ linux-2.6.12-mm1/drivers/dlm/debug_fs.c
@@ -114,7 +114,7 @@ static int print_resource(struct dlm_rsb
seq_printf(s, %02x ,
   (unsigned char) res-res_lvbptr[i]);
}
-   if (test_bit(RESFL_VALNOTVALID, res-res_flags))
+   if (rsb_flag(res, RSB_VALNOTVALID))
seq_printf(s,  (INVALID));
seq_printf(s, \n);
}
Index: linux-2.6.12-mm1/drivers/dlm/dlm_internal.h
===
--- linux-2.6.12-mm1.orig/drivers/dlm/dlm_internal.h
+++ linux-2.6.12-mm1/drivers/dlm/dlm_internal.h
@@ -262,25 +262,11 @@ struct dlm_lkb {
longlkb_astparam;   /* caller's ast arg */
 };
 
-
-/* find_rsb() flags */
-
-#define R_MASTER   1   /* only return rsb if it's a master */
-#define R_CREATE   2   /* create/add rsb if not found */
-
-#define RESFL_MASTER_WAIT  0
-#define RESFL_MASTER_UNCERTAIN 1
-#define RESFL_VALNOTVALID  2
-#define RESFL_VALNOTVALID_PREV 3
-#define RESFL_NEW_MASTER   4
-#define RESFL_NEW_MASTER2  5
-#define RESFL_RECOVER_CONVERT  6
-
 struct dlm_rsb {
struct dlm_ls   *res_ls;/* the lockspace */
struct kref res_ref;
struct semaphoreres_sem;
-   unsigned long   res_flags;  /* RESFL_ */
+   unsigned long   res_flags;
int res_length; /* length of rsb name */
int res_nodeid;
uint32_tres_lvbseq;
@@ -301,6 +287,38 @@ struct dlm_rsb {
charres_name[1];
 };
 
+/* find_rsb() flags */
+
+#define R_MASTER   1   /* only return rsb if it's a master */
+#define R_CREATE   2   /* create/add rsb if not found */
+
+/* rsb_flags */
+
+enum rsb_flags {
+   RSB_MASTER_WAIT,
+   RSB_MASTER_UNCERTAIN,
+   RSB_VALNOTVALID,
+   RSB_VALNOTVALID_PREV,
+   RSB_NEW_MASTER,
+   RSB_NEW_MASTER2,
+   RSB_RECOVER_CONVERT,
+};
+
+static inline void rsb_set_flag(struct dlm_rsb *r, enum rsb_flags flag)
+{
+   __set_bit(flag, r-res_flags);
+}
+
+static inline void rsb_clear_flag(struct dlm_rsb *r, enum rsb_flags flag)
+{
+   __clear_bit(flag, r-res_flags);
+}
+
+static inline int rsb_flag(struct dlm_rsb *r, enum rsb_flags flag)
+{
+   return test_bit(flag, r-res_flags);
+}
+
 
 /* dlm_header is first element of all structs sent between nodes */
 
Index: linux-2.6.12-mm1/drivers/dlm/lock.c
===
--- linux-2.6.12-mm1.orig/drivers/dlm/lock.c
+++ linux-2.6.12-mm1/drivers/dlm/lock.c
@@ -317,18 +317,17 @@ static int _search_rsb(struct dlm_ls *ls
list_move(r-res_hashchain, ls-ls_rsbtbl[b].list);
 
if (r-res_nodeid == -1) {
-   clear_bit(RESFL_MASTER_WAIT, r-res_flags);
-   clear_bit(RESFL_MASTER_UNCERTAIN, r-res_flags);
+   rsb_clear_flag(r, RSB_MASTER_WAIT);
+   rsb_clear_flag(r, RSB_MASTER_UNCERTAIN);
r-res_trial_lkid = 0;
} else if (r-res_nodeid  0) {
-   clear_bit(RESFL_MASTER_WAIT, r-res_flags);
-   set_bit(RESFL_MASTER_UNCERTAIN, r-res_flags);
+   rsb_clear_flag(r, RSB_MASTER_WAIT);
+   rsb_set_flag(r, RSB_MASTER_UNCERTAIN);
r-res_trial_lkid = 0;
} else {
DLM_ASSERT(r-res_nodeid == 0, dlm_print_rsb(r););
-   DLM_ASSERT(!test_bit(RESFL_MASTER_WAIT, r-res_flags),
-  dlm_print_rsb(r););
-   DLM_ASSERT(!test_bit(RESFL_MASTER_UNCERTAIN, r-res_flags),);
+   DLM_ASSERT(!rsb_flag(r, RSB_MASTER_WAIT), dlm_print_rsb(r););
+   DLM_ASSERT(!rsb_flag(r, RSB_MASTER_UNCERTAIN),);
}
  out:
*r_ret = r;
@@ -837,7 +836,7 @@ static void set_lvb_lock(struct dlm_rsb 
 
} else if (b == 0) {
if (lkb-lkb_exflags  DLM_LKF_IVVALBLK) {
-   set_bit(RESFL_VALNOTVALID, r-res_flags);
+   rsb_set_flag(r, RSB_VALNOTVALID);
return;
}
 
@@ -856,10 +855,10 @@ static void set_lvb_lock(struct dlm_rsb 
memcpy(r-res_lvbptr, lkb-lkb_lvbptr, len);
r-res_lvbseq++;
lkb-lkb_lvbseq = r-res_lvbseq;
-   clear_bit(RESFL_VALNOTVALID, r-res_flags);
+   rsb_clear_flag(r, RSB_VALNOTVALID);
}
 
-   if (test_bit(RESFL_VALNOTVALID, r-res_flags))
+