diff --git a/SOURCES/rsync-3.1.2-vvv-hang.patch b/SOURCES/rsync-3.1.2-vvv-hang.patch
new file mode 100644
index 0000000..d1f8912
--- /dev/null
+++ b/SOURCES/rsync-3.1.2-vvv-hang.patch
@@ -0,0 +1,33 @@
+diff --git a/io.c b/io.c
+index 999c34e5..ceff3784 100644
+--- a/io.c
++++ b/io.c
+@@ -954,8 +954,17 @@ int send_msg(enum msgcode code, const char *buf, size_t len, int convert)
+ 	} else
+ #endif
+ 		needed = len + 4 + 3;
+-	if (iobuf.msg.len + needed > iobuf.msg.size)
+-		perform_io(needed, PIO_NEED_MSGROOM);
++	if (iobuf.msg.len + needed > iobuf.msg.size) {
++		if (!am_receiver)
++			perform_io(needed, PIO_NEED_MSGROOM);
++		else { /* We allow the receiver to increase their iobuf.msg size to avoid a deadlock. */
++			size_t old_size = iobuf.msg.size;
++			restore_iobuf_size(&iobuf.msg);
++			realloc_xbuf(&iobuf.msg, iobuf.msg.size * 2);
++			if (iobuf.msg.pos + iobuf.msg.len > old_size)
++				memcpy(iobuf.msg.buf + old_size, iobuf.msg.buf, iobuf.msg.pos + iobuf.msg.len - old_size);
++		}
++	}
+ 
+ 	pos = iobuf.msg.pos + iobuf.msg.len; /* Must be set after any flushing. */
+ 	if (pos >= iobuf.msg.size)
+@@ -1176,7 +1185,7 @@ int read_line(int fd, char *buf, size_t bufsiz, int flags)
+ 
+ #ifdef ICONV_OPTION
+ 	if (flags & RL_CONVERT && iconv_buf.size < bufsiz)
+-		realloc_xbuf(&iconv_buf, bufsiz + 1024);
++		realloc_xbuf(&iconv_buf, ROUND_UP_1024(bufsiz) + 1024);
+ #endif
+ 
+   start:
diff --git a/SPECS/rsync.spec b/SPECS/rsync.spec
index 669986d..1854189 100644
--- a/SPECS/rsync.spec
+++ b/SPECS/rsync.spec
@@ -9,7 +9,7 @@
 Summary: A program for synchronizing files over a network
 Name: rsync
 Version: 3.1.3
-Release: 7%{?dist}
+Release: 8%{?dist}
 Group: Applications/Internet
 URL: http://rsync.samba.org/
 
@@ -31,6 +31,7 @@ Patch0: rsync-man.patch
 Patch1: rsync-3.0.6-iconv-logging.patch
 Patch2: rsync-3.1.3-covscan.patch
 Patch3: rsync-3.1.2-remove-symlinks.patch
+Patch4: rsync-3.1.2-vvv-hang.patch
 
 %description
 Rsync uses a reliable algorithm to bring remote and host files into
@@ -72,6 +73,7 @@ patch -p1 -i patches/copy-devices.diff
 %patch1 -p1 -b .iconv
 %patch2 -p1 -b .covscan
 %patch3 -p1 -b .symlinks
+%patch4 -p1 -b .vvv
 
 %build
 
@@ -119,6 +121,9 @@ chmod -x support/*
 %systemd_postun_with_restart rsyncd.service
 
 %changelog
+* Wed Jun 10 2020 Michal Ruprich <michalruprich@gmail.com> - 3.1.3-8
+- Resolves: #1775561 - rsync 3.1.2 hangs when run with -vvv to sync a large repository
+
 * Tue Oct 29 2019 Michal Ruprich <mruprich@redhat.com> - 3.1.3-7
 - Resolves: #1693162 - remove-source-files fails with symlinks