diff --git a/.gitignore b/.gitignore
index 0e876c7..06fb075 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/mdadm-4.2-rc1.tar.xz
+SOURCES/mdadm-4.2-rc2.tar.xz
diff --git a/.mdadm.metadata b/.mdadm.metadata
index a0dcc5b..f8a1efb 100644
--- a/.mdadm.metadata
+++ b/.mdadm.metadata
@@ -1 +1 @@
-cceb5f208a2d77a220a68f23d6cab5a0e8704685 SOURCES/mdadm-4.2-rc1.tar.xz
+b6e99ec4b0c3953505dc2e6ef6e8f2a71a26207d SOURCES/mdadm-4.2-rc2.tar.xz
diff --git a/SOURCES/0001-Fix-some-building-errors.patch b/SOURCES/0001-Fix-some-building-errors.patch
deleted file mode 100644
index 16cf5cf..0000000
--- a/SOURCES/0001-Fix-some-building-errors.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 83b3de7795d2a421eb6ae4ab97656a250bb898ea Mon Sep 17 00:00:00 2001
-From: Xiao Ni <xni@redhat.com>
-Date: Fri, 23 Apr 2021 14:01:30 +0800
-Subject: [PATCH 1/2] Fix some building errors
-
-There are some building errors if treating warning as errors.
-Fix them in this patch.
-
-Signed-off-by: Xiao Ni <xni@redhat.com>
-Signed-off-by: Jes Sorensen <jsorensen@fb.com>
----
- super-intel.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/super-intel.c b/super-intel.c
-index be0313d..5469912 100644
---- a/super-intel.c
-+++ b/super-intel.c
-@@ -3192,7 +3192,7 @@ static int imsm_create_metadata_checkpoint_update(
- 	}
- 	(*u)->type = update_general_migration_checkpoint;
- 	(*u)->curr_migr_unit = current_migr_unit(super->migr_rec);
--	dprintf("prepared for %llu\n", (*u)->curr_migr_unit);
-+	dprintf("prepared for %llu\n", (unsigned long long)(*u)->curr_migr_unit);
- 
- 	return update_memory_size;
- }
-@@ -11127,7 +11127,7 @@ int recover_backup_imsm(struct supertype *st, struct mdinfo *info)
- 			skipped_disks++;
- 			continue;
- 		}
--		if (read(dl_disk->fd, buf, unit_len) != unit_len) {
-+		if (read(dl_disk->fd, buf, unit_len) != (ssize_t)unit_len) {
- 			pr_err("Cannot read copy area block: %s\n",
- 			       strerror(errno));
- 			skipped_disks++;
-@@ -11139,7 +11139,7 @@ int recover_backup_imsm(struct supertype *st, struct mdinfo *info)
- 			skipped_disks++;
- 			continue;
- 		}
--		if (write(dl_disk->fd, buf, unit_len) != unit_len) {
-+		if (write(dl_disk->fd, buf, unit_len) != (ssize_t)unit_len) {
- 			pr_err("Cannot restore block: %s\n",
- 			       strerror(errno));
- 			skipped_disks++;
--- 
-2.7.5
-
diff --git a/SOURCES/0002-Prevent-user-from-using-stop-with-ambiguous-args.patch b/SOURCES/0002-Prevent-user-from-using-stop-with-ambiguous-args.patch
deleted file mode 100644
index 0a052e0..0000000
--- a/SOURCES/0002-Prevent-user-from-using-stop-with-ambiguous-args.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 0530e2e0d8c9ecb5171e70bc48e1a6566f317378 Mon Sep 17 00:00:00 2001
-From: Norbert Szulc <norbert.szulc@intel.com>
-Date: Wed, 5 May 2021 13:01:02 +0200
-Subject: [PATCH 2/2] Prevent user from using --stop with ambiguous args
-
-When both --scan and device name is passed to --stop action,
-then is executed only for given device. Scan is ignored.
-
-Block the operation when both --scan and device name are passed.
-
-Signed-off-by: Norbert Szulc <norbert.szulc@intel.com>
-Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
-Signed-off-by: Jes Sorensen <jsorensen@fb.com>
----
- mdadm.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/mdadm.c b/mdadm.c
-index 9a4317d..dcc26ba 100644
---- a/mdadm.c
-+++ b/mdadm.c
-@@ -2041,6 +2041,11 @@ static int misc_list(struct mddev_dev *devlist,
- 				rv |= Manage_run(dv->devname, mdfd, c);
- 				break;
- 			case 'S':
-+				if (c->scan) {
-+					pr_err("--stop not meaningful with both a --scan assembly and a device name.\n");
-+					rv |= 1;
-+					break;
-+				}
- 				rv |= Manage_stop(dv->devname, mdfd, c->verbose, 0);
- 				break;
- 			case 'o':
--- 
-2.7.5
-
diff --git a/SOURCES/disable-Werror.patch b/SOURCES/disable-Werror.patch
new file mode 100644
index 0000000..2d52c67
--- /dev/null
+++ b/SOURCES/disable-Werror.patch
@@ -0,0 +1,11 @@
+--- mdadm/Makefile.orig	2021-07-28 21:39:23.887433859 +0800
++++ mdadm/Makefile	2021-07-28 21:39:37.989432841 +0800
+@@ -50,7 +50,7 @@
+ CC := $(CROSS_COMPILE)gcc
+ endif
+ CXFLAGS ?= -ggdb
+-CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter
++CWFLAGS = -Wall -Wstrict-prototypes -Wextra -Wno-unused-parameter
+ ifdef WARN_UNUSED
+ CWFLAGS += -Wp,-D_FORTIFY_SOURCE=2 -O3
+ endif
diff --git a/SPECS/mdadm.spec b/SPECS/mdadm.spec
index 285484e..33f70ae 100644
--- a/SPECS/mdadm.spec
+++ b/SPECS/mdadm.spec
@@ -1,8 +1,8 @@
 Summary:     The mdadm program controls Linux md devices (software RAID arrays)
 Name:        mdadm
 Version:     4.2
-%define subversion rc1
-Release:     rc1_2%{?dist}
+%define subversion rc2
+Release:     rc2%{?dist}
 Source:      http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-%{version}-%{subversion}.tar.xz
 Source1:     mdmonitor.init
 Source2:     raid-check
@@ -15,8 +15,7 @@ Source8:     mdadm_event.conf
 Source9:     mdcheck
 Source10:    mdadm_env.sh
 
-Patch001:    0001-Fix-some-building-errors.patch
-Patch002:    0002-Prevent-user-from-using-stop-with-ambiguous-args.patch
+Patch000:    disable-Werror.patch
 
 # RHEL customization patches
 Patch200:    mdadm-3.3-udev.patch
@@ -47,8 +46,8 @@ file can be used to help with some common tasks.
 %prep
 %setup -q -n %{name}-%{version}_%{subversion}
 
-%patch001 -p1 -b .0001
-%patch002 -p1 -b .0002
+%patch000 -p1 -b .disable
+
 # RHEL customization patches
 %patch200 -p1 -b .udev
 %patch201 -p1 -b .static
@@ -119,6 +118,18 @@ rm -rf %{buildroot}
 /usr/lib/mdadm/mdadm_env.sh
 
 %changelog
+* Thu Aug 05 2021 Xiao Ni <xni@redhat.com> - 4.2-rc2
+- Update to 4.2-rc2
+- Resolves rhbz#1989844
+
+* Fri Jul 23 2021 Xiao Ni <xni@redhat.com> - 4.2-rc1-4
+- Fix gating test failure
+- Resolves rhbz#1984335
+
+* Tue Jul 20 2021 Xiao Ni <xni@redhat.com> - 4.2-rc1-3
+- Fix super1.0 offset problem and super imsm bugs
+- Resolves rhbz#1966712 and rhbz#1975449
+
 * Thu Jun 10 2021 Xiao Ni <xni@redhat.com> - 4.2-rc1-2
 - Fix udev rule syntax error
 - Resolves rhbz#1945780