Cela ne devrait pas être possible. swapon
l'appel système nécessite readpage
et bmap
appels (indirectement) mis en œuvre par le système de fichiers :
http://lxr.free-electrons.com/source/mm/swapfile.c?v=4.0#L2412
if (!mapping->a_ops->readpage) {
error = -EINVAL;
goto bad_swap;
}
Mais aucun d'entre eux n'est implémenté par tmpfs , une telle entrée est manquante dans le address_space_operations
correspondant :http://lxr.free-electrons.com/source/mm/shmem.c?v=4.0#L3104
Pour la même raison, tmpfs ne peut pas contenir de montages en boucle, et ramfs ne fonctionnera pas non plus (il n'a pas bmap
appel)
À partir de ce Q&A https://superuser.com/questions/539287/swapon-failed-invalid-argument-on-a-linux-system-with-btrfs-filesystem (le site référencé d'origine ne répond pas):
Donc "Argument non valide" doit être lu comme "Votre système de fichiers ne prend pas en charge le fichier d'échange"
La raison d'incompatibilité que je soupçonne est une "dépendance circulaire". Extrait de cet article :http://www.jamescoyle.net/knowledge/951-the-difference-between-a-tmpfs-and-ramfs-ram-disk :
Ces deux différences entre ramfs et tmpfs rendent tmpfs beaucoup plus facile à gérer, mais c'est un inconvénient majeur ; tmpfs peut utiliser SWAPspace. Si votre système manque de RAM physique, les fichiers de vos partitions tmpfs peuvent être écrits sur des partitions SWAP basées sur disque et devront être lus à partir du disque lors du prochain accès au fichier.
Ce qui serait quasiment impossible dans votre scénario.
Il pourrait travailler avec ramfs
, mais - qui n'a pas ce problème.