mm: modify swap_map and add SWAP_HAS_CACHE flag
[linux-2.6-block.git] / mm / swap_state.c
index 19bdf3017a9ed30d7dccdd97ceb62bc06c029c4b..b9ca029673a53d52e8353008f3b161878127e0c9 100644 (file)
@@ -292,7 +292,10 @@ struct page *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
                /*
                 * Swap entry may have been freed since our caller observed it.
                 */
-               if (!swapcache_prepare(entry))
+               err = swapcache_prepare(entry);
+               if (err == -EEXIST) /* seems racy */
+                       continue;
+               if (err)           /* swp entry is obsolete ? */
                        break;
 
                /*