Commit 61011677 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull dlm updates from David Teigland:
 "This set includes some minor fixes and improvements.  The one large
  patch addresses the special "nodir" mode, which has been a long
  neglected proof of concept, but with these fixes seems to be quite
  usable.  It allows the resource master to be assigned statically
  instead of dynamically, which can improve performance if there is
  little locality and most resources are shared."

* tag 'dlm-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm:
  dlm: NULL dereference on failure in kmem_cache_create()
  gfs2: fix recovery during unmount
  dlm: fixes for nodir mode
  dlm: improve error and debug messages
  dlm: avoid unnecessary search in search_rsb
  dlm: limit rcom debug messages
  dlm: fix waiter recovery
  dlm: prevent connections during shutdown
parents 6133308a 75af271e
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -310,6 +310,7 @@ void dlm_callback_resume(struct dlm_ls *ls)
	}
	}
	mutex_unlock(&ls->ls_cb_mutex);
	mutex_unlock(&ls->ls_cb_mutex);


	if (count)
		log_debug(ls, "dlm_callback_resume %d", count);
		log_debug(ls, "dlm_callback_resume %d", count);
}
}
+14 −2
Original line number Original line Diff line number Diff line
@@ -38,6 +38,7 @@
#include <linux/miscdevice.h>
#include <linux/miscdevice.h>
#include <linux/mutex.h>
#include <linux/mutex.h>
#include <linux/idr.h>
#include <linux/idr.h>
#include <linux/ratelimit.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>


#include <linux/dlm.h>
#include <linux/dlm.h>
@@ -74,6 +75,13 @@ do { \
		       (ls)->ls_name , ##args); \
		       (ls)->ls_name , ##args); \
} while (0)
} while (0)


#define log_limit(ls, fmt, args...) \
do { \
	if (dlm_config.ci_log_debug) \
		printk_ratelimited(KERN_DEBUG "dlm: %s: " fmt "\n", \
			(ls)->ls_name , ##args); \
} while (0)

#define DLM_ASSERT(x, do) \
#define DLM_ASSERT(x, do) \
{ \
{ \
  if (!(x)) \
  if (!(x)) \
@@ -263,6 +271,8 @@ struct dlm_lkb {
	ktime_t			lkb_last_cast_time;	/* for debugging */
	ktime_t			lkb_last_cast_time;	/* for debugging */
	ktime_t			lkb_last_bast_time;	/* for debugging */
	ktime_t			lkb_last_bast_time;	/* for debugging */


	uint64_t		lkb_recover_seq; /* from ls_recover_seq */

	char			*lkb_lvbptr;
	char			*lkb_lvbptr;
	struct dlm_lksb		*lkb_lksb;      /* caller's status block */
	struct dlm_lksb		*lkb_lksb;      /* caller's status block */
	void			(*lkb_astfn) (void *astparam);
	void			(*lkb_astfn) (void *astparam);
@@ -317,7 +327,7 @@ enum rsb_flags {
	RSB_NEW_MASTER,
	RSB_NEW_MASTER,
	RSB_NEW_MASTER2,
	RSB_NEW_MASTER2,
	RSB_RECOVER_CONVERT,
	RSB_RECOVER_CONVERT,
	RSB_LOCKS_PURGED,
	RSB_RECOVER_GRANT,
};
};


static inline void rsb_set_flag(struct dlm_rsb *r, enum rsb_flags flag)
static inline void rsb_set_flag(struct dlm_rsb *r, enum rsb_flags flag)
@@ -563,6 +573,7 @@ struct dlm_ls {
	struct mutex		ls_requestqueue_mutex;
	struct mutex		ls_requestqueue_mutex;
	struct dlm_rcom		*ls_recover_buf;
	struct dlm_rcom		*ls_recover_buf;
	int			ls_recover_nodeid; /* for debugging */
	int			ls_recover_nodeid; /* for debugging */
	unsigned int		ls_recover_locks_in; /* for log info */
	uint64_t		ls_rcom_seq;
	uint64_t		ls_rcom_seq;
	spinlock_t		ls_rcom_spin;
	spinlock_t		ls_rcom_spin;
	struct list_head	ls_recover_list;
	struct list_head	ls_recover_list;
@@ -589,6 +600,7 @@ struct dlm_ls {
#define LSFL_UEVENT_WAIT	5
#define LSFL_UEVENT_WAIT	5
#define LSFL_TIMEWARN		6
#define LSFL_TIMEWARN		6
#define LSFL_CB_DELAY		7
#define LSFL_CB_DELAY		7
#define LSFL_NODIR		8


/* much of this is just saving user space pointers associated with the
/* much of this is just saving user space pointers associated with the
   lock that we pass back to the user lib with an ast */
   lock that we pass back to the user lib with an ast */
@@ -636,7 +648,7 @@ static inline int dlm_recovery_stopped(struct dlm_ls *ls)


static inline int dlm_no_directory(struct dlm_ls *ls)
static inline int dlm_no_directory(struct dlm_ls *ls)
{
{
	return (ls->ls_exflags & DLM_LSFL_NODIR) ? 1 : 0;
	return test_bit(LSFL_NODIR, &ls->ls_flags);
}
}


int dlm_netlink_init(void);
int dlm_netlink_init(void);
Loading