Es sollte nicht möglich sein. swapon
Systemaufruf erfordert readpage
und bmap
(indirekt) Aufrufe, die vom Dateisystem implementiert werden:
http://lxr.free-electrons.com/source/mm/swapfile.c?v=4.0#L2412
if (!mapping->a_ops->readpage) {
error = -EINVAL;
goto bad_swap;
}
Aber keiner von ihnen wird von tmpfs implementiert , fehlt ein solcher Eintrag im entsprechenden address_space_operations
:http://lxr.free-electrons.com/source/mm/shmem.c?v=4.0#L3104
Aus dem gleichen Grund kann tmpfs keine Loop Mounts halten und ramfs wird auch nicht funktionieren (es hat kein bmap
anrufen)
Aus diesem Q&A https://superuser.com/questions/539287/swapon-failed-invalid-argument-on-a-linux-system-with-btrfs-filesystem (die ursprünglich referenzierte Seite antwortet nicht):
"Ungültiges Argument" sollte also gelesen werden als "Ihr Dateisystem unterstützt keine Auslagerungsdatei"
Der Inkompatibilitätsgrund, den ich vermute, ist eine "zirkuläre Abhängigkeit". Aus diesem Artikel:http://www.jamescoyle.net/knowledge/951-the-difference-between-a-tmpfs-and-ramfs-ram-disk:
Diese beiden Unterschiede zwischen ramfs und tmpfs machen tmpfs viel handlicher, aber das ist ein großer Nachteil; tmpfs kann SWAPspace verwenden. Wenn Ihr System keinen physischen Arbeitsspeicher mehr hat, können Dateien in Ihren tmpfpartitions auf plattenbasierte SWAP-Partitionen geschrieben werden und müssen beim nächsten Zugriff auf die Datei von der Platte gelesen werden.
Was in Ihrem Szenario so gut wie unmöglich wäre.
Es vielleicht mit ramfs
arbeiten , tho - die dieses Problem nicht hat.