diff --git a/modules/image/image.module b/modules/image/image.module
index 59eacec..2180c2e 100644
--- a/modules/image/image.module
+++ b/modules/image/image.module
@@ -824,15 +824,32 @@ function image_style_deliver($style, $scheme) {
   // acquiring the lock.
   $success = file_exists($derivative_uri) || image_style_create_derivative($style, $image_uri, $derivative_uri);
 
+  $image = FALSE;
   if ($success) {
     if (!empty($lock_acquired)) {
       lock_release($lock_name);
     }
 
-    $image = image_load($derivative_uri);
-    file_transfer($image->source, array('Content-Type' => $image->info['mime_type'], 'Content-Length' => $image->info['file_size']));
+    $counter = 0;
+    // On certain file systems the image may not be available to be loaded
+    // eventhough we got a response of success. If that is the case we attempt
+    // to retrieve the image multiple times and issue an error if we have no
+    // image to transfer.
+    do {
+      $image = image_load($derivative_uri);
+      if (!empty($image)) {
+        file_transfer($image->source, array('Content-Type' => $image->info['mime_type'], 'Content-Length' => $image->info['file_size']));
+        break;
+      }
+      else {
+        $counter++;
+        // Sleep for 100ms to allow for the file to appear on slow file
+        // systems.
+        usleep(100000);
+      }
+    } while($counter < 10);
   }
-  else {
+  if (empty($image)) {
     watchdog('image', 'Unable to generate the derived image located at %path.', array('%path' => $derivative_uri));
     drupal_add_http_header('Status', '500 Internal Server Error');
     print t('Error generating image.');
