diff --git a/frontend/afe/rpc_interface.py b/frontend/afe/rpc_interface.py
index 584e481..2af5783 100644
--- a/frontend/afe/rpc_interface.py
+++ b/frontend/afe/rpc_interface.py
@@ -811,7 +811,7 @@
         builds = {}
         builds[provision.CROS_VERSION_PREFIX] = image
         if firmware_rw_build:
-            builds[provision.FW_VERSION_PREFIX] = firmware_rw_build
+            builds[provision.FW_RW_VERSION_PREFIX] = firmware_rw_build
         if firmware_ro_build:
             builds[provision.FW_RO_VERSION_PREFIX] = firmware_ro_build
         return site_rpc_interface.create_suite_job(
diff --git a/server/cros/dynamic_suite/constants.py b/server/cros/dynamic_suite/constants.py
index f2afa40..1c03e48 100644
--- a/server/cros/dynamic_suite/constants.py
+++ b/server/cros/dynamic_suite/constants.py
@@ -19,7 +19,7 @@
 
 # Job attribute and label names
 EXPERIMENTAL_PREFIX = 'experimental_'
-FW_VERSION_PREFIX = 'fw-version:'
+FW_RW_VERSION_PREFIX = 'fwrw-version:'
 JOB_REPO_URL = 'job_repo_url'
 VERSION_PREFIX = 'cros-version:'
 BOARD_PREFIX = 'board:'
diff --git a/server/cros/dynamic_suite/dynamic_suite.py b/server/cros/dynamic_suite/dynamic_suite.py
index d84926e..10d1486 100644
--- a/server/cros/dynamic_suite/dynamic_suite.py
+++ b/server/cros/dynamic_suite/dynamic_suite.py
@@ -316,7 +316,7 @@
                                  this suite will run.
         @param timeout: Max lifetime in hours for each of the sub-jobs that
                         this suite run.
-        @param firmware_reimage: True if we should use FW_VERSION_PREFIX as
+        @param firmware_reimage: True if we should use FW_RW_VERSION_PREFIX as
                                  the version_prefix.
                                  False if we should use CROS_VERSION_PREFIX as
                                  the version_prefix.
@@ -387,8 +387,8 @@
             if version_prefix:
                 prefix = version_prefix
             else:
-                prefix = (provision.FW_VERSION_PREFIX if firmware_reimage else
-                          provision.CROS_VERSION_PREFIX)
+                prefix = (provision.FW_RW_VERSION_PREFIX if firmware_reimage
+                          else provision.CROS_VERSION_PREFIX)
             self.builds = {prefix: build}
 
         if provision.CROS_VERSION_PREFIX in self.builds:
diff --git a/server/cros/dynamic_suite/dynamic_suite_unittest.py b/server/cros/dynamic_suite/dynamic_suite_unittest.py
index 890b25d..d94c54c 100755
--- a/server/cros/dynamic_suite/dynamic_suite_unittest.py
+++ b/server/cros/dynamic_suite/dynamic_suite_unittest.py
@@ -25,8 +25,8 @@
     """
 
     _DEVSERVER_HOST = 'http://devserver1'
-    _BUILDS = {provision.CROS_VERSION_PREFIX: 'build',
-               provision.FW_VERSION_PREFIX:'fw_build'}
+    _BUILDS = {provision.CROS_VERSION_PREFIX: 'build_1',
+               provision.FW_RW_VERSION_PREFIX:'fwrw_build_1'}
 
     def setUp(self):
 
diff --git a/server/cros/dynamic_suite/suite_unittest.py b/server/cros/dynamic_suite/suite_unittest.py
index 342e5f3..1f2f166 100755
--- a/server/cros/dynamic_suite/suite_unittest.py
+++ b/server/cros/dynamic_suite/suite_unittest.py
@@ -42,8 +42,8 @@
     """
 
     _BOARD = 'board:board'
-    _BUILDS = {provision.CROS_VERSION_PREFIX:'build',
-               provision.FW_VERSION_PREFIX:'fw_build'}
+    _BUILDS = {provision.CROS_VERSION_PREFIX:'build_1',
+               provision.FW_RW_VERSION_PREFIX:'fwrw_build_1'}
     _TAG = 'suite_tag'
     _ATTR = {'attr:attr'}
     _DEVSERVER_HOST = 'http://dontcare:8080'
diff --git a/server/cros/provision.py b/server/cros/provision.py
index be90671..ef893a4 100644
--- a/server/cros/provision.py
+++ b/server/cros/provision.py
@@ -14,7 +14,7 @@
 
 ### Constants for label prefixes
 CROS_VERSION_PREFIX = 'cros-version'
-FW_VERSION_PREFIX = 'fw-version'
+FW_RW_VERSION_PREFIX = 'fwrw-version'
 FW_RO_VERSION_PREFIX = 'fwro-version'
 
 # Default number of provisions attempts to try if we believe the devserver is
@@ -42,7 +42,7 @@
     @returns: A string that is the appropriate label name.
 
     """
-    return FW_VERSION_PREFIX + ':' + image
+    return FW_RW_VERSION_PREFIX + ':' + image
 
 
 class _SpecialTaskAction(object):
@@ -158,7 +158,7 @@
                               'disable_before_iteration_sysinfo': True,
                               'disable_after_test_sysinfo': True,
                               'disable_after_iteration_sysinfo': True}),
-        FW_VERSION_PREFIX: actionables.TestActionable(
+        FW_RW_VERSION_PREFIX: actionables.TestActionable(
                 'provision_FirmwareUpdate'),
     }
 
diff --git a/server/hosts/cros_host.py b/server/hosts/cros_host.py
index 64c5050..c56ae71 100644
--- a/server/hosts/cros_host.py
+++ b/server/hosts/cros_host.py
@@ -818,7 +818,7 @@
     def _clear_fw_version_labels(self):
         """Clear firmware version labels from the machine."""
         labels = self._AFE.get_labels(
-                name__startswith=provision.FW_VERSION_PREFIX,
+                name__startswith=provision.FW_RW_VERSION_PREFIX,
                 host__hostname=self.hostname)
         for label in labels:
             label.remove_hosts(hosts=[self.hostname])
diff --git a/site_utils/run_suite.py b/site_utils/run_suite.py
index 1b6d52c..718077b 100755
--- a/site_utils/run_suite.py
+++ b/site_utils/run_suite.py
@@ -101,7 +101,8 @@
     parser.add_option("-i", "--build", dest="build")
     parser.add_option("-w", "--web", dest="web", default=None,
                       help="Address of a webserver to receive suite requests.")
-    parser.add_option('--firmware_build', dest='firmware_build', default=None,
+    parser.add_option('--firmware_rw_build', dest='firmware_rw_build',
+                      default=None,
                       help='Firmware build to be installed in dut RW firmware.')
     parser.add_option('--firmware_ro_build', dest='firmware_ro_build',
                       default=None,
@@ -110,7 +111,7 @@
                       default=None,
                       help=('Build that contains the test code, '
                             'e.g., it can be the value of `--build`, '
-                            '`--firmware_build` or `--firmware_ro_build` '
+                            '`--firmware_rw_build` or `--firmware_ro_build` '
                             'arguments. Default is None, that is, use the test '
                             'code from `--build` (CrOS image)'))
     #  This should just be a boolean flag, but the autotest "proxy" code
@@ -1270,8 +1271,8 @@
         runtime_in_secs = -1
         if (self.timings.tests_end_time is not None and
             self.timings.suite_start_time is not None):
-          runtime_in_secs = (self.timings.tests_end_time -
-                  self.timings.suite_start_time).total_seconds()
+            runtime_in_secs = (self.timings.tests_end_time -
+                    self.timings.suite_start_time).total_seconds()
 
         job_overhead.record_suite_runtime(self._suite_job_id, self._suite_name,
                 self._board, self._build, self._num_child_jobs, runtime_in_secs)
@@ -1289,8 +1290,8 @@
     builds = {}
     if options.build:
         builds[provision.CROS_VERSION_PREFIX] = options.build
-    if options.firmware_build:
-        builds[provision.FW_VERSION_PREFIX] = options.firmware_build
+    if options.firmware_rw_build:
+        builds[provision.FW_RW_VERSION_PREFIX] = options.firmware_rw_build
     if options.firmware_ro_build:
         builds[provision.FW_RO_VERSION_PREFIX] = options.firmware_ro_build
     wait = options.no_wait == 'False'
