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

Commit 0671d8f1 authored by Markus Elfring's avatar Markus Elfring Committed by Anna Schumaker
Browse files

nfs/write: Use common error handling code in nfs_lock_and_join_requests()



Add a jump target so that a bit of exception handling can be better reused
at the end of this function.

This issue was detected by using the Coccinelle software.

Signed-off-by: default avatarMarkus Elfring <elfring@users.sourceforge.net>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent fcd8843c
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -487,10 +487,8 @@ nfs_lock_and_join_requests(struct page *page)
	}

	ret = nfs_page_group_lock(head);
	if (ret < 0) {
		nfs_unlock_and_release_request(head);
		return ERR_PTR(ret);
	}
	if (ret < 0)
		goto release_request;

	/* lock each request in the page group */
	total_bytes = head->wb_bytes;
@@ -515,8 +513,7 @@ nfs_lock_and_join_requests(struct page *page)
			if (ret < 0) {
				nfs_unroll_locks(inode, head, subreq);
				nfs_release_request(subreq);
				nfs_unlock_and_release_request(head);
				return ERR_PTR(ret);
				goto release_request;
			}
		}
		/*
@@ -532,8 +529,8 @@ nfs_lock_and_join_requests(struct page *page)
			nfs_page_group_unlock(head);
			nfs_unroll_locks(inode, head, subreq);
			nfs_unlock_and_release_request(subreq);
			nfs_unlock_and_release_request(head);
			return ERR_PTR(-EIO);
			ret = -EIO;
			goto release_request;
		}
	}

@@ -576,6 +573,10 @@ nfs_lock_and_join_requests(struct page *page)
	/* still holds ref on head from nfs_page_find_head_request
	 * and still has lock on head from lock loop */
	return head;

release_request:
	nfs_unlock_and_release_request(head);
	return ERR_PTR(ret);
}

static void nfs_write_error_remove_page(struct nfs_page *req)