diff --git a/panels_node/panels_node.install b/panels_node/panels_node.install
index 1af682f..a572b9c 100644
--- a/panels_node/panels_node.install
+++ b/panels_node/panels_node.install
@@ -165,3 +165,51 @@ function panels_node_update_7302() {
     return t('Added the storage type for panels_node to relevant panels displays');
   }
 }
+
+/**
+ * Set the storage type and id on existing panels nodes.
+ *
+ * Re-run of panels_node_update_7302 as a multipass update hook.
+ */
+function panels_node_update_7303(&$sandbox) {
+  if (!isset($sandbox['progress'])) {
+    // Initialize batch update information.
+    $sandbox['progress'] = (float)0;
+    $sandbox['current_did'] = -1;
+    $sandbox['max'] = db_query("SELECT COUNT(pd.did)
+         FROM {panels_display} pd
+           JOIN {panels_node} pn ON pn.did = pd.did
+         WHERE pd.storage_type = ''")->fetchField();
+  }
+
+  // Set a limit of how many rows to process per batch.
+  $limit = 1000;
+
+  // Run the query
+  $result = db_query_range("SELECT pd.did, pn.nid
+      FROM {panels_display} pd
+        JOIN {panels_node} pn ON pn.did = pd.did
+      WHERE pd.storage_type = '' AND pd.did > :current_did", 0, $limit, array(':current_did' => $sandbox['current_did']));
+
+  foreach ($result as $row) {
+    db_update('panels_display')
+      ->fields(array(
+        'storage_type' => 'panels_node',
+        'storage_id' => $row->nid,
+      ))
+      ->condition('did', $row->did)
+      ->execute();
+
+    // Update our progress information.
+    $sandbox['progress']++;
+    $sandbox['current_did'] = $row->did;
+  }
+
+  // Set the "finished" status, to tell batch engine whether this function
+  // needs to run again.
+  $sandbox['#finished'] = ($sandbox['progress'] >= $sandbox['max']) ? TRUE : ($sandbox['progress'] / $sandbox['max']);
+
+  if ($sandbox['#finished']) {
+    return t('Added the storage type for panels_node to relevant panels displays');
+  }
+}
