mm, THP, swap: support splitting THP for THP swap out
[linux-block.git] / mm / swapfile.c
index 267b1fe41844b129c0f0c3e79814c96c4f28a382..42eff9e4e9721bbd952d132f591fcfd7d2427193 100644 (file)
@@ -1216,6 +1216,21 @@ static void swapcache_free_cluster(swp_entry_t entry)
                }
        }
 }
+
+int split_swap_cluster(swp_entry_t entry)
+{
+       struct swap_info_struct *si;
+       struct swap_cluster_info *ci;
+       unsigned long offset = swp_offset(entry);
+
+       si = _swap_info_get(entry);
+       if (!si)
+               return -EBUSY;
+       ci = lock_cluster(si, offset);
+       cluster_clear_huge(ci);
+       unlock_cluster(ci);
+       return 0;
+}
 #else
 static inline void swapcache_free_cluster(swp_entry_t entry)
 {