diff --git includes/update.inc includes/update.inc
index 5afd80a..2a02418 100644
--- includes/update.inc
+++ includes/update.inc
@@ -391,7 +391,7 @@ function update_fix_d7_requirements() {
 
     // Add the cache_path table.
     require_once('./modules/system/system.install');
-    $schema['cache_path'] = system_schema_cache_7054();
+    $schema['cache_path'] = system_schema_cache_7035();
     $schema['cache_path']['description'] = 'Cache table used for path alias lookups.';
     db_create_table('cache_path', $schema['cache_path']);
 
@@ -992,27 +992,15 @@ function update_get_update_list() {
         continue;
       }
 
-      $last_file_name = NULL;
       $updates = drupal_map_assoc($updates);
       foreach (array_keys($updates) as $update) {
         if ($update > $schema_version) {
-          // Omit stub functions that just carry doxygen for developers.
+          // The description for an update comes from its Doxygen.
           $func = new ReflectionFunction($module . '_update_' . $update);
-          // Only read file contents once per .install file.
-          $current_file_name = $func->getFileName();
-          if ($current_file_name != $last_file_name) {
-            $file = file($current_file_name);
-            $last_file_name = $current_file_name;
-          }
-          // Slice out just the body of the function.
-          $body = array_slice($file, $func->getStartLine(), ($func->getEndLine() - $func->getStartLine()-1));
-          if (trim(implode('', $body))) {
-            // The description for an update comes from its Doxygen.
-            $description = str_replace(array("\n", '*', '/'), '', $func->getDocComment());
-            $ret[$module]['pending'][$update] = "$update - $description";
-            if (!isset($ret[$module]['start'])) {
-              $ret[$module]['start'] = $update;
-            }
+          $description = str_replace(array("\n", '*', '/'), '', $func->getDocComment());
+          $ret[$module]['pending'][$update] = "$update - $description";
+          if (!isset($ret[$module]['start'])) {
+            $ret[$module]['start'] = $update;
           }
         }
       }
diff --git modules/block/block.install modules/block/block.install
index 2328748..82a8eb8 100644
--- modules/block/block.install
+++ modules/block/block.install
@@ -414,7 +414,7 @@ function block_update_7005() {
  * Removes 'headers' column.
  */
 function block_update_7006() {
-  $schema = system_schema_cache_7054();
+  $schema = system_schema_cache_7035();
 
   db_drop_table('cache_block');
   db_create_table('cache_block', $schema);
diff --git modules/comment/comment.install modules/comment/comment.install
index 358eec7..0377676 100644
--- modules/comment/comment.install
+++ modules/comment/comment.install
@@ -84,7 +84,7 @@ function comment_update_dependencies() {
   // Comment update 7005 creates the comment body field and therefore must run
   // after text module has been enabled and entities have been updated.
   $dependencies['comment'][7005] = array(
-    'system' => 7021,
+    'system' => 7014,
   );
 
   return $dependencies;
diff --git modules/filter/filter.install modules/filter/filter.install
index 0dfd6af..4666f4b 100644
--- modules/filter/filter.install
+++ modules/filter/filter.install
@@ -154,7 +154,7 @@ function filter_update_dependencies() {
   // Filter update 7007 migrates permissions and therefore needs to run after
   // the {role} table is properly set up.
   $dependencies['filter'][7005] = array(
-    'user' => 7007,
+    'user' => 7006,
   );
 
   return $dependencies;
@@ -464,7 +464,7 @@ function filter_update_7008() {
  * Converts fields that store serialized variables from text to blob.
  */
 function filter_update_7009() {
-  $schema = system_schema_cache_7054();
+  $schema = system_schema_cache_7035();
   db_drop_table('cache_filter');
   db_create_table('cache_filter', $schema);
 }
diff --git modules/image/image.install modules/image/image.install
index 5312388..9601fcd 100644
--- modules/image/image.install
+++ modules/image/image.install
@@ -145,7 +145,7 @@ function image_update_7000() {
   if (!db_table_exists('image_styles')) {
     $schema = array();
 
-    $schema['cache_image'] = system_schema_cache_7054();
+    $schema['cache_image'] = system_schema_cache_7035();
     $schema['cache_image']['description'] = 'Cache table used to store information about image manipulations that are in-progress.';
 
     $schema['image_styles'] = array(
diff --git modules/locale/locale.install modules/locale/locale.install
index 50901c4..5c404fb 100644
--- modules/locale/locale.install
+++ modules/locale/locale.install
@@ -105,10 +105,9 @@ function locale_update_7001() {
 
 /**
  * Allow longer javascript file names.
- *
- * Moved to update_fix_d7_requirements().
  */
 function locale_update_7002() {
+  // Update moved to update_fix_d7_requirements().
 }
 
 /**
diff --git modules/node/node.install modules/node/node.install
index 108ef5a..bd876c7 100644
--- modules/node/node.install
+++ modules/node/node.install
@@ -410,9 +410,9 @@ function node_update_dependencies() {
   // Node update 7006 migrates node data to fields and therefore must run after
   // the Field module has been enabled, but before upgrading field data.
   $dependencies['node'][7006] = array(
-    'system' => 7049,
+    'system' => 7030,
   );
-  $dependencies['system'][7050] = array(
+  $dependencies['system'][7031] = array(
     'node' => 7006,
   );
   return $dependencies;
diff --git modules/system/system.install modules/system/system.install
index 53178e9..78094d2 100644
--- modules/system/system.install
+++ modules/system/system.install
@@ -1620,13 +1620,13 @@ function system_schema() {
 }
 
 /**
- * The cache schema corresponding to system_update_7054.
+ * The cache schema corresponding to system_update_7035.
  *
  * Drupal 7 adds several new cache tables. Since they all have identical schema
  * this helper function allows them to re-use the same definition, without
  * relying on system_schema(), which may change with future updates.
  */
-function system_schema_cache_7054() {
+function system_schema_cache_7035() {
   return array(
     'description' => 'Generic cache table for caching things not separated out into their own tables. Contributed modules may also use this to store cached items.',
     'fields' => array(
@@ -1682,7 +1682,7 @@ function system_update_last_removed() {
  */
 function system_update_dependencies() {
   // Update 7053 adds new blocks, so make sure the block tables are updated.
-  $dependencies['system'][7053] = array(
+  $dependencies['system'][7034] = array(
     'block' => 7002,
   );
 
@@ -1864,21 +1864,12 @@ function system_update_7005() {
 }
 
 /**
- * Registry tables and drop the file key of the menu router, since it is no
- * longer needed.
- *
- * Moved to update_fix_d7_requirements().
- */
-function system_update_7006() {
-}
-
-/**
  * Convert to new method of storing permissions.
  *
  * This update is in system.install rather than user.install so that
  * all modules can use the updated permission scheme during their updates.
  */
-function system_update_7007() {
+function system_update_7006() {
   // Copy the permissions from the old {permission} table to the new {role_permission} table.
   $messages = array();
   $result = db_query("SELECT rid, perm FROM {permission} ORDER BY rid ASC");
@@ -1899,35 +1890,9 @@ function system_update_7007() {
 }
 
 /**
- * Use the poll_choice primary key to record votes in poll_votes rather than
- * the choice order. Rename chorder to weight.
- *
- * Moved to poll_update_7001().
- */
-function system_update_7008() {
-}
-
-/**
- * Rename the variable for primary links.
- */
-function system_update_7009() {
-  $current_primary = variable_get('menu_primary_links_source');
-  if (isset($current_primary)) {
-    variable_set('menu_main_links_source', $current_primary);
-    variable_del('menu_primary_links_source');
-  }
-}
-
-/**
- * Moved to system_update_6048().
- */
-function system_update_7010() {
-}
-
-/**
  * Split the 'bypass node access' permission from 'administer nodes'.
  */
-function system_update_7011() {
+function system_update_7007() {
   // Get existing roles that can 'administer nodes'.
   $rids = array();
   $rids = db_query("SELECT rid FROM {role_permission} WHERE permission = :perm", array(':perm' => 'administer nodes'))->fetchCol();
@@ -1946,15 +1911,9 @@ function system_update_7011() {
 }
 
 /**
- * Moved to block_update_7002().
- */
-function system_update_7012() {
-}
-
-/**
  * Convert default time zone offset to default time zone name.
  */
-function system_update_7013() {
+function system_update_7008() {
   $timezone = NULL;
   $timezones = system_time_zones();
   // If the contributed Date module set a default time zone name, use this
@@ -2004,15 +1963,9 @@ function system_update_7013() {
 }
 
 /**
- * Drop the bootstrap column from the {system} table. This was reverted.
- */
-function system_update_7014() {
-}
-
-/**
  * Change the user logout path.
  */
-function system_update_7015() {
+function system_update_7009() {
   db_update('menu_links')
     ->fields(array('link_path' => 'user/logout'))
     ->condition('link_path', 'logout')
@@ -2027,7 +1980,7 @@ function system_update_7015() {
 /**
  * Remove custom datatype *_unsigned in PostgreSQL.
  */
-function system_update_7016() {
+function system_update_7010() {
   // Only run these queries if the driver used is pgsql.
   if (db_driver() == 'pgsql') {
     $result = db_query("SELECT c.relname AS table, a.attname AS field,
@@ -2059,7 +2012,7 @@ function system_update_7016() {
 /**
  * Change the theme setting 'toggle_node_info' into a per content type variable.
  */
-function system_update_7017() {
+function system_update_7011() {
   $types = node_type_get_types();
   if (count($types)) {
     foreach ($types as $type) {
@@ -2083,7 +2036,7 @@ function system_update_7017() {
 /**
  * Shorten the {system}.type column and modify indexes.
  */
-function system_update_7018() {
+function system_update_7012() {
   db_drop_index('system', 'modules');
   db_drop_index('system', 'type_name');
   db_change_field('system', 'type', 'type', array('type' => 'varchar', 'length' => 12, 'not null' => TRUE, 'default' => ''));
@@ -2093,7 +2046,7 @@ function system_update_7018() {
 /**
  * Enable field module.
  */
-function system_update_7020() {
+function system_update_7013() {
   $module_list = array('field_sql_storage', 'field');
   module_enable($module_list, FALSE);
 }
@@ -2101,7 +2054,7 @@ function system_update_7020() {
 /**
  * Change the PHP for settings permission.
  */
-function system_update_7021() {
+function system_update_7014() {
   db_update('role_permission')
     ->fields(array('permission' => 'use PHP for settings'))
     ->condition('permission', 'use PHP for block visibility')
@@ -2114,7 +2067,7 @@ function system_update_7021() {
  * Note: this should go into the driver itself, but we have no support
  * for driver-specific updates yet.
  */
-function system_update_7024() {
+function system_update_7015() {
   if (db_driver() == 'pgsql') {
     db_query('CREATE OR REPLACE FUNCTION "substring_index"(text, text, integer) RETURNS text AS
       \'SELECT array_to_string((string_to_array($1, $2)) [1:$3], $2);\'
@@ -2126,22 +2079,18 @@ function system_update_7024() {
 /**
  * Enable field type modules.
  */
-function system_update_7027() {
+function system_update_7016() {
   $module_list = array('text', 'number', 'list', 'options');
   module_enable($module_list, FALSE);
 }
 
-/**
- * Moved to taxonomy_update_7001().
- */
-function system_update_7028() {
-}
+// system_update_7028() moved to taxonomy_update_7001().
 
 /**
  * Add new 'view own unpublished content' permission for authenticated users.
  * Preserves legacy behavior from Drupal 6.x.
  */
-function system_update_7029() {
+function system_update_7017() {
   db_insert('role_permission')
     ->fields(array(
       'rid' => DRUPAL_AUTHENTICATED_RID,
@@ -2151,17 +2100,9 @@ function system_update_7029() {
 }
 
 /**
- * Removed in favour of Drupal 6 backport.
- *
- * @see system_update_6052()
- */
-function system_update_7031() {
-}
-
-/**
 * Alter field hostname to identifier in the {flood} table.
  */
-function system_update_7032() {
+function system_update_7018() {
   db_drop_index('flood', 'allow');
   db_change_field('flood', 'hostname', 'identifier', array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''));
   db_add_index('flood', 'allow', array('event', 'identifier', 'timestamp'));
@@ -2170,7 +2111,7 @@ function system_update_7032() {
 /**
  * Move CACHE_AGGRESSIVE to CACHE_NORMAL.
  */
-function system_update_7033() {
+function system_update_7019() {
   if (variable_get('cache') == 2) {
     variable_set('cache', 1);
     return t('Aggressive caching was disabled and replaced with normal caching. Read the page caching section in default.settings.php for more information on how to enable similar functionality.');
@@ -2180,7 +2121,7 @@ function system_update_7033() {
 /**
  * Migrate the file_downloads setting and create the new {file_managed} table.
  */
-function system_update_7034() {
+function system_update_7020() {
   $files_directory = variable_get('file_directory_path', NULL);
   if (variable_get('file_downloads', 1) == 1) {
     // Our default is public, so we don't need to set anything.
@@ -2272,14 +2213,14 @@ function system_update_7034() {
 /**
  * Migrate upload module files to the new {file_managed} table.
  */
-function system_update_7035() {
+function system_update_7021() {
   // Update merged into system_update_7059().
 }
 
 /**
  * Split the 'access site in maintenance mode' permission from 'administer site configuration'.
  */
-function system_update_7036() {
+function system_update_7022() {
   // Get existing roles that can 'administer site configuration'.
   $rids = db_query("SELECT rid FROM {role_permission} WHERE permission = :perm", array(':perm' => 'administer site configuration'))->fetchCol();
   // None found.
@@ -2303,40 +2244,14 @@ function system_update_7036() {
 /**
  * Rename action description to label.
  */
-function system_update_7037() {
+function system_update_7023() {
   db_change_field('actions', 'description', 'label', array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '0'));
 }
 
 /**
- * Adds fields to the {menu_router} table to allow custom themes to be set per
- * page.
- *
- * Moved to update_fix_d7_requirements().
- */
-function system_update_7039() {
-}
-
-/**
- * Create new date format tables.
- *
- * Moved to update_fix_d7_requirements().
- */
-function system_update_7040() {
-}
-
-/**
- * Adds 'delivery_callback' field to the {menu_router} table to allow a custom
- * function to be used for final page rendering and sending to browser.
- *
- * Moved to update_fix_d7_requirements().
- */
-function system_update_7041() {
-}
-
-/**
  * Upgrade the {url_alias} table and create a cache bin for path aliases.
  */
-function system_update_7042() {
+function system_update_7024() {
   // update_fix_d7_requirements() adds 'fake' source and alias columns to
   // allow bootstrap to run without fatal errors. Remove those columns now
   // so that we can rename properly.
@@ -2356,16 +2271,9 @@ function system_update_7042() {
 }
 
 /**
- * Add a 'context' field to {menu_router} to control contextual placement of local tasks.
- */
-function system_update_7043() {
-  // Moved to update_fix_d7_requirements().
-}
-
-/**
  * Drop the actions_aid table.
  */
-function system_update_7044() {
+function system_update_7025() {
   // The current value of the increment has been taken into account when
   // creating the sequences table in update_fix_d7_requirements().
   db_drop_table('actions_aid');
@@ -2374,7 +2282,7 @@ function system_update_7044() {
 /**
  * Add expiration field to the {flood} table.
  */
-function system_update_7045() {
+function system_update_7026() {
   db_add_field('flood', 'expiration', array('description' => 'Expiration timestamp. Expired events are purged on cron run.', 'type' => 'int', 'not null' => TRUE, 'default' => 0));
   db_add_index('flood', 'purge', array('expiration'));
 }
@@ -2382,7 +2290,7 @@ function system_update_7045() {
 /**
  * Switch from the Minnelli theme if it is the default or admin theme.
  */
-function system_update_7046() {
+function system_update_7027() {
   if (variable_get('theme_default') == 'minnelli' || variable_get('admin_theme') == 'minnelli') {
     // Make sure Garland is enabled.
     db_update('system')
@@ -2422,14 +2330,14 @@ function system_update_7046() {
 /**
  * Normalize the front page path variable.
  */
-function system_update_7047() {
+function system_update_7028() {
   variable_set('site_frontpage', drupal_get_normal_path(variable_get('site_frontpage', 'node')));
 }
 
 /**
  * Convert path languages from the empty string to LANGUAGE_NONE.
  */
-function system_update_7048() {
+function system_update_7029() {
   db_update('url_alias')
     ->fields(array('language' => LANGUAGE_NONE))
     ->condition('language', '')
@@ -2439,7 +2347,7 @@ function system_update_7048() {
 /**
  * Rename 'Default' profile to 'Standard.'
  */
-function system_update_7049() {
+function system_update_7030() {
   if (variable_get('install_profile', 'standard') == 'default') {
     variable_set('install_profile', 'standard');
   }
@@ -2448,28 +2356,28 @@ function system_update_7049() {
 /**
  * Change {batch}.id column from serial to regular int.
  */
-function system_update_7050() {
+function system_update_7031() {
   db_change_field('batch', 'bid', 'bid', array('description' => 'Primary Key: Unique batch ID.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE));
 }
 
 /**
  * make the IP field IPv6 compatible
  */
-function system_update_7051() {
+function system_update_7032() {
   db_change_field('blocked_ips', 'ip', 'ip', array('description' => 'IP address', 'type' => 'varchar', 'length' => 40, 'not null' => TRUE, 'default' => ''));
 }
 
 /**
  * Rename file to include_file in {menu_router} table.
  */
-function system_update_7052() {
+function system_update_7033() {
   db_change_field('menu_router', 'file', 'include_file', array('type' => 'text', 'size' => 'medium'));
 }
 
 /**
  * Upgrade standard blocks and menus.
  */
-function system_update_7053() {
+function system_update_7034() {
   if (db_table_exists('menu_custom')) {
     // Create the same menus as in menu_install().
     db_insert('menu_custom')
@@ -2508,7 +2416,7 @@ function system_update_7053() {
 /**
  * Remove {cache_*}.headers columns.
  */
-function system_update_7054() {
+function system_update_7035() {
   // Update: update_fix_d7_requirements() installs this version for cache_path
   // already, so we don't include it in this particular update. It should be
   // included in later updates though.
@@ -2518,7 +2426,7 @@ function system_update_7054() {
     'cache_page' => 'Cache table used to store compressed pages for anonymous users, if page caching is enabled.',
     'cache_menu' => 'Cache table for the menu system to store router information as well as generated link trees for various menu/page/user combinations.',
   );
-  $schema = system_schema_cache_7054();
+  $schema = system_schema_cache_7035();
   foreach ($cache_tables as $table => $description) {
     $schema['description'] = $description;
     db_drop_table($table);
@@ -2529,7 +2437,7 @@ function system_update_7054() {
 /**
  * Converts fields that store serialized variables from text to blob.
  */
-function system_update_7055() {
+function system_update_7036() {
   $spec = array(
     'description' => 'The value of the variable.',
     'type' => 'blob',
@@ -2610,7 +2518,7 @@ function system_update_7055() {
 /**
  * Increase the size of session-ids.
  */
-function system_update_7057() {
+function system_update_7037() {
   $spec = array(
     'description' => "A session ID. The value is generated by PHP's Session API.",
     'type' => 'varchar',
@@ -2624,14 +2532,14 @@ function system_update_7057() {
 /**
  * Remove cron semaphore variable.
  */
-function system_update_7058() {
+function system_update_7038() {
   variable_del('cron_semaphore');
 }
 
 /**
  * Create the {file_usage} table.
  */
-function system_update_7059() {
+function system_update_7039() {
   $spec = array(
     'description' => 'Track where a file is used.',
     'fields' => array(
@@ -2683,7 +2591,7 @@ function system_update_7059() {
 /**
  * Migrate upload.module to file.module.
  */
-function system_update_7060(&$sandbox) {
+function system_update_7040(&$sandbox) {
   if (!db_table_exists('upload')) {
     return;
   }
diff --git modules/taxonomy/taxonomy.install modules/taxonomy/taxonomy.install
index 3be5829..8943b7e 100644
--- modules/taxonomy/taxonomy.install
+++ modules/taxonomy/taxonomy.install
@@ -247,12 +247,12 @@ function taxonomy_update_dependencies() {
   // run after the Field module has been enabled, but before upgrading field
   // data.
   $dependencies['taxonomy'][7002] = array(
-    'system' => 7049,
+    'system' => 7030,
   );
-  $dependencies['user'][7006] = array(
+  $dependencies['user'][7005] = array(
     'taxonomy' => 7002,
   );
-  $dependencies['system'][7050] = array(
+  $dependencies['system'][7031] = array(
     'taxonomy' => 7002,
   );
   // It also must run before nodes are upgraded to use the Field API.
diff --git modules/update/update.install modules/update/update.install
index 00d659b..18a6771 100644
--- modules/update/update.install
+++ modules/update/update.install
@@ -180,7 +180,7 @@ function update_update_7000() {
  * Removes 'headers' column.
  */
 function update_update_7001() {
-  $schema = system_schema_cache_7054();
+  $schema = system_schema_cache_7035();
 
   db_drop_table('cache_update');
   db_create_table('cache_update', $schema);
diff --git modules/user/user.install modules/user/user.install
index 34b24ae..219f296 100644
--- modules/user/user.install
+++ modules/user/user.install
@@ -344,16 +344,16 @@ function user_install() {
 function user_update_dependencies() {
   // Run all the critical user upgrades before everything.
   $dependencies['system'][7000] = array(
-    'user' => 7008,
+    'user' => 7007,
   );
-  // user_update_7006 relies on filter_update_7002.
+  // user_update_7005 relies on filter_update_7003.
   // TODO: move user_update_7006 down below in the upgrade process.
-  $dependencies['user'][7006] = array(
+  $dependencies['user'][7005] = array(
     'filter' => 7003,
   );
   // user_update_7013 relies on system_update_7060.
-  $dependencies['user'][7013] = array(
-    'system' => 7059,
+  $dependencies['user'][7012] = array(
+    'system' => 7039,
   );
 
   return $dependencies;
@@ -548,15 +548,9 @@ function user_update_7003() {
 }
 
 /**
- * Moved to user_update_7012().
- */
-function user_update_7004() {
-}
-
-/**
  * Changes the users table to allow longer e-mail addresses.
  */
-function user_update_7005(&$sandbox) {
+function user_update_7004(&$sandbox) {
   $mail_field = array(
     'type' => 'varchar',
     'length' => 254,
@@ -579,7 +573,7 @@ function user_update_7005(&$sandbox) {
 /**
  * Add module data to {role_permission}.
  */
-function user_update_7006(&$sandbox) {
+function user_update_7005(&$sandbox) {
   $module_field = array(
     'type' => 'varchar',
     'length' => 255,
@@ -605,7 +599,7 @@ function user_update_7006(&$sandbox) {
 /**
  * Add a weight column to user roles.
  */
-function user_update_7007() {
+function user_update_7006() {
   db_add_field('role', 'weight', array('type' => 'int', 'not null' => TRUE, 'default' => 0));
   db_add_index('role', 'name_weight', array('name', 'weight'));
 }
@@ -614,7 +608,7 @@ function user_update_7007() {
  * If 'user_register' variable was unset in Drupal 6, set it to be the same as
  * the Drupal 6 default setting.
  */
-function user_update_7008() {
+function user_update_7007() {
   if (!isset($GLOBALS['conf']['user_register'])) {
     // Set to the Drupal 6 default, "visitors can create accounts".
     variable_set('user_register', USER_REGISTER_VISITORS);
@@ -624,7 +618,7 @@ function user_update_7008() {
 /**
  * Converts fields that store serialized variables from text to blob.
  */
-function user_update_7009() {
+function user_update_7008() {
   $spec = array(
     'type' => 'blob',
     'not null' => FALSE,
@@ -638,7 +632,7 @@ function user_update_7009() {
 /**
  * Update the {user}.signature_format column.
  */
-function user_update_7010() {
+function user_update_7009() {
   // It was previously possible for a value of "0" to be stored in database
   // tables to indicate that a particular piece of text should be filtered
   // using the default text format.
@@ -661,7 +655,7 @@ function user_update_7010() {
  * displays a warning to users that they may need to go and modify the wording
  * of their templates.
  */
-function user_update_7011() {
+function user_update_7010() {
   $message = '';
 
   $tokens = array(
@@ -697,7 +691,7 @@ function user_update_7011() {
  * Add the user's pictures to the {file_managed} table and make them managed
  * files.
  */
-function user_update_7012(&$sandbox) {
+function user_update_7011(&$sandbox) {
 
   $picture_field = array(
     'type' => 'int',
@@ -770,7 +764,7 @@ function user_update_7012(&$sandbox) {
 /**
  * Add user module file usage entries.
  */
-function user_update_7013(&$sandbox) {
+function user_update_7012(&$sandbox) {
   if (!isset($sandbox['progress'])) {
     // Initialize batch update information.
     $sandbox['progress'] = 0;
