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

Commit 9cbf22b3 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull dlm updates from David Teigland:
 "This set mainly includes a change to the way the dlm uses the SCTP API
  in the kernel, removing the direct dependency on the sctp module.
  Other odd SCTP-related fixes are also included.

  The other notable fix is for a long standing regression in the
  behavior of lock value blocks for user space locks"

* tag 'dlm-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm:
  dlm: print error from kernel_sendpage
  dlm: fix lvb copy for user locks
  dlm: sctp_accept_from_sock() can be static
  dlm: fix reconnecting but not sending data
  dlm: replace BUG_ON with a less severe handling
  dlm: use sctp 1-to-1 API
  dlm: fix not reconnecting on connecting error handling
  dlm: fix race while closing connections
  dlm: fix connection stealing if using SCTP
parents ea814ab9 b3a5bbfd
Loading
Loading
Loading
Loading
+300 −443

File changed.

Preview size limit exceeded, changes collapsed.

+4 −3
Original line number Original line Diff line number Diff line
@@ -782,6 +782,7 @@ static ssize_t device_read(struct file *file, char __user *buf, size_t count,
	DECLARE_WAITQUEUE(wait, current);
	DECLARE_WAITQUEUE(wait, current);
	struct dlm_callback cb;
	struct dlm_callback cb;
	int rv, resid, copy_lvb = 0;
	int rv, resid, copy_lvb = 0;
	int old_mode, new_mode;


	if (count == sizeof(struct dlm_device_version)) {
	if (count == sizeof(struct dlm_device_version)) {
		rv = copy_version_to_user(buf, count);
		rv = copy_version_to_user(buf, count);
@@ -838,6 +839,9 @@ static ssize_t device_read(struct file *file, char __user *buf, size_t count,


	lkb = list_entry(proc->asts.next, struct dlm_lkb, lkb_cb_list);
	lkb = list_entry(proc->asts.next, struct dlm_lkb, lkb_cb_list);


	/* rem_lkb_callback sets a new lkb_last_cast */
	old_mode = lkb->lkb_last_cast.mode;

	rv = dlm_rem_lkb_callback(lkb->lkb_resource->res_ls, lkb, &cb, &resid);
	rv = dlm_rem_lkb_callback(lkb->lkb_resource->res_ls, lkb, &cb, &resid);
	if (rv < 0) {
	if (rv < 0) {
		/* this shouldn't happen; lkb should have been removed from
		/* this shouldn't happen; lkb should have been removed from
@@ -861,9 +865,6 @@ static ssize_t device_read(struct file *file, char __user *buf, size_t count,
	}
	}


	if (cb.flags & DLM_CB_CAST) {
	if (cb.flags & DLM_CB_CAST) {
		int old_mode, new_mode;

		old_mode = lkb->lkb_last_cast.mode;
		new_mode = cb.mode;
		new_mode = cb.mode;


		if (!cb.sb_status && lkb->lkb_lksb->sb_lvbptr &&
		if (!cb.sb_status && lkb->lkb_lksb->sb_lvbptr &&
+1 −1
Original line number Original line Diff line number Diff line
@@ -26,7 +26,7 @@
/* Version of the device interface */
/* Version of the device interface */
#define DLM_DEVICE_VERSION_MAJOR 6
#define DLM_DEVICE_VERSION_MAJOR 6
#define DLM_DEVICE_VERSION_MINOR 0
#define DLM_DEVICE_VERSION_MINOR 0
#define DLM_DEVICE_VERSION_PATCH 1
#define DLM_DEVICE_VERSION_PATCH 2


/* struct passed to the lock write */
/* struct passed to the lock write */
struct dlm_lock_params {
struct dlm_lock_params {