Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c1afa3c authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw

* master.kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (73 commits)
  [DLM] Clean up lowcomms
  [GFS2] Change gfs2_fsync() to use write_inode_now()
  [GFS2] Fix indent in recovery.c
  [GFS2] Don't flush everything on fdatasync
  [GFS2] Add a comment about reading the super block
  [GFS2] Mount problem with the GFS2 code
  [GFS2] Remove gfs2_check_acl()
  [DLM] fix format warnings in rcom.c and recoverd.c
  [GFS2] lock function parameter
  [DLM] don't accept replies to old recovery messages
  [DLM] fix size of STATUS_REPLY message
  [GFS2] fs/gfs2/log.c:log_bmap() fix printk format warning
  [DLM] fix add_requestqueue checking nodes list
  [GFS2] Fix recursive locking in gfs2_getattr
  [GFS2] Fix recursive locking in gfs2_permission
  [GFS2] Reduce number of arguments to meta_io.c:getbuf()
  [GFS2] Move gfs2_meta_syncfs() into log.c
  [GFS2] Fix journal flush problem
  [GFS2] mark_inode_dirty after write to stuffed file
  [GFS2] Fix glock ordering on inode creation
  ...
parents 0a01707b ac33d071
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
menu "Distributed Lock Manager"
	depends on INET && IP_SCTP && EXPERIMENTAL
	depends on EXPERIMENTAL && INET

config DLM
	tristate "Distributed Lock Manager (DLM)"
	depends on IPV6 || IPV6=n
	select CONFIGFS_FS
	select IP_SCTP if DLM_SCTP
	help
	A general purpose distributed lock manager for kernel or userspace
	applications.

choice
	prompt "Select DLM communications protocol"
	depends on DLM
	default DLM_TCP
	help
	The DLM Can use TCP or SCTP for it's network communications.
	SCTP supports multi-homed operations whereas TCP doesn't.
	However, SCTP seems to have stability problems at the moment.

config DLM_TCP
	bool "TCP/IP"

config DLM_SCTP
	bool "SCTP"

endchoice

config DLM_DEBUG
	bool "DLM debugging"
	depends on DLM
+3 −1
Original line number Diff line number Diff line
@@ -4,7 +4,6 @@ dlm-y := ast.o \
				dir.o \
				lock.o \
				lockspace.o \
				lowcomms.o \
				main.o \
				member.o \
				memory.o \
@@ -17,3 +16,6 @@ dlm-y := ast.o \
				util.o
dlm-$(CONFIG_DLM_DEBUG) +=	debug_fs.o

dlm-$(CONFIG_DLM_TCP)   += lowcomms-tcp.o

dlm-$(CONFIG_DLM_SCTP)  += lowcomms-sctp.o
 No newline at end of file
+3 −1
Original line number Diff line number Diff line
@@ -471,6 +471,7 @@ struct dlm_ls {
	char			*ls_recover_buf;
	int			ls_recover_nodeid; /* for debugging */
	uint64_t		ls_rcom_seq;
	spinlock_t		ls_rcom_spin;
	struct list_head	ls_recover_list;
	spinlock_t		ls_recover_list_lock;
	int			ls_recover_list_count;
@@ -488,7 +489,8 @@ struct dlm_ls {
#define LSFL_RUNNING		1
#define LSFL_RECOVERY_STOP	2
#define LSFL_RCOM_READY		3
#define LSFL_UEVENT_WAIT	4
#define LSFL_RCOM_WAIT		4
#define LSFL_UEVENT_WAIT	5

/* much of this is just saving user space pointers associated with the
   lock that we pass back to the user lib with an ast */
+12 −4
Original line number Diff line number Diff line
@@ -2372,6 +2372,7 @@ static int send_lookup_reply(struct dlm_ls *ls, struct dlm_message *ms_in,
static void receive_flags(struct dlm_lkb *lkb, struct dlm_message *ms)
{
	lkb->lkb_exflags = ms->m_exflags;
	lkb->lkb_sbflags = ms->m_sbflags;
	lkb->lkb_flags = (lkb->lkb_flags & 0xFFFF0000) |
		         (ms->m_flags & 0x0000FFFF);
}
@@ -3028,11 +3029,18 @@ int dlm_receive_message(struct dlm_header *hd, int nodeid, int recovery)

	while (1) {
		if (dlm_locking_stopped(ls)) {
			if (!recovery)
				dlm_add_requestqueue(ls, nodeid, hd);
			if (recovery) {
				error = -EINTR;
				goto out;
			}
			error = dlm_add_requestqueue(ls, nodeid, hd);
			if (error == -EAGAIN)
				continue;
			else {
				error = -EINTR;
				goto out;
			}
		}

		if (lock_recovery_try(ls))
			break;
+4 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include "memory.h"
#include "lock.h"
#include "recover.h"
#include "requestqueue.h"

#ifdef CONFIG_DLM_DEBUG
int dlm_create_debug_file(struct dlm_ls *ls);
@@ -478,6 +479,8 @@ static int new_lockspace(char *name, int namelen, void **lockspace,
	ls->ls_recoverd_task = NULL;
	mutex_init(&ls->ls_recoverd_active);
	spin_lock_init(&ls->ls_recover_lock);
	spin_lock_init(&ls->ls_rcom_spin);
	get_random_bytes(&ls->ls_rcom_seq, sizeof(uint64_t));
	ls->ls_recover_status = 0;
	ls->ls_recover_seq = 0;
	ls->ls_recover_args = NULL;
@@ -684,6 +687,7 @@ static int release_lockspace(struct dlm_ls *ls, int force)
	 * Free structures on any other lists
	 */

	dlm_purge_requestqueue(ls);
	kfree(ls->ls_recover_args);
	dlm_clear_free_entries(ls);
	dlm_clear_members(ls);
Loading