Cook and download a directory from the Software Heritage Vault
You have requested the cooking of the directory with identifier None into a standard tar.gz archive
.
Are you sure you want to continue ?
Download a directory from the Software Heritage Vault
You have requested the download of the directory with identifier None as a standard tar.gz archive
.
Are you sure you want to continue ?
Cook and download a revision from the Software Heritage Vault
You have requested the cooking of the history heading to revision with identifier swh:1:rev:df44bd83017d449c8d10060d356c14e7caa3bdc5 into a bare git archive
.
Are you sure you want to continue ?
Download a revision from the Software Heritage Vault
You have requested the download of the history heading to revision with identifier swh:1:rev:df44bd83017d449c8d10060d356c14e7caa3bdc5 as a bare git archive
.
Are you sure you want to continue ?
Invalid Email !
The provided email is not well-formed.
Download link has expired
The requested archive is no longer available for download from the Software Heritage Vault.
Do you want to cook it again ?
{ "original_artifact": [ { "blake2s256": "fa0d9e6afd79c59fba94e7717d50f3f5ed0152a7ff65f971f72fcfc7122aeed9", "length": 122763, "name": "linux_4.9.80-2.dsc", "sha1": "4bcc47ef3e9a843f1d1b5fe0fddb0f79bbeee771", "sha1_git": "bc2fba9f7b4486bfdf3a2800ad61ea75ce60ab22", "sha256": "e0647884acd8174f9619e992a4dcb6ce0905c4887a3aad57a975936f8970e5d7" }, { "blake2s256": "fa0d9e6afd79c59fba94e7717d50f3f5ed0152a7ff65f971f72fcfc7122aeed9", "length": 122763, "name": "linux_4.9.80-2.dsc", "sha1": "4bcc47ef3e9a843f1d1b5fe0fddb0f79bbeee771", "sha1_git": "bc2fba9f7b4486bfdf3a2800ad61ea75ce60ab22", "sha256": "e0647884acd8174f9619e992a4dcb6ce0905c4887a3aad57a975936f8970e5d7" }, { "blake2s256": "d9656fda67be3ce75f4239926ef4304fca4ad7487faa93ff0ca16f1bb52c346c", "length": 2453704, "name": "linux_4.9.80-2.debian.tar.xz", "sha1": "38551a6bbcc232ddd03ba5bd83f47b88a263408f", "sha1_git": "20c0a0f4fe5eb590fbe1f9ea2773471b03dbf8bc", "sha256": "9eca8778e08f3ce9bf2eb3677f53fded477ae96d99b3862c3862ab9f6953ea60" }, { "blake2s256": "1e4c9bc1f932c93171edad69981998ddb3e9d257fc89ca7a3aa781c89132fbdd", "length": 94572404, "name": "linux_4.9.80.orig.tar.xz", "sha1": "6ceac4ddfee1deca2c2153e63482fdf396112891", "sha1_git": "24b245540c9511ce06f6265c59d12751886e608b", "sha256": "764fa2cc03ad7d1239e4a8f2c6629d3ec42fe3ccc0de61c960b19d43bf4af1b7" } ], "package_info": { "changelog": { "date": "2018-02-09T13:58:52+01:00", "history": [ [ "linux", "4.9.80-1" ], [ "linux", "4.9.65-3+deb9u2" ], [ "linux", "4.9.65-3+deb9u1" ], [ "linux", "4.9.65-3" ], [ "linux", "4.9.65-2" ], [ "linux", "4.9.65-1" ], [ "linux", "4.9.51-1" ], [ "linux", "4.9.47-1" ], [ "linux", "4.9.30-2+deb9u5" ], [ "linux", "4.9.30-2+deb9u4" ], [ "linux", "4.9.30-2+deb9u3" ], [ "linux", "4.9.30-2+deb9u2" ], [ "linux", "4.9.30-2+deb9u1" ], [ "linux", "4.9.30-2" ], [ "linux", "4.9.30-1" ], [ "linux", "4.9.25-1" ], [ "linux", "4.9.18-1" ], [ "linux", "4.9.16-1" ], [ "linux", "4.9.13-1" ], [ "linux", "4.9.10-1" ], [ "linux", "4.9.6-3" ], [ "linux", "4.9.6-2" ], [ "linux", "4.9.6-1" ], [ "linux", "4.9.2-2" ], [ "linux", "4.9.2-1" ], [ "linux", "4.9.1-1~exp1" ], [ "linux", "4.9~rc8-1~exp1" ], [ "linux", "4.9~rc7-1~exp1" ], [ "linux", "4.9~rc5-1~exp1" ], [ "linux", "4.9~rc3-1~exp1" ], [ "linux", "4.8.15-2" ], [ "linux", "4.8.15-1" ], [ "linux", "4.8.11-1" ], [ "linux", "4.8.7-1" ], [ "linux", "4.8.5-1" ], [ "linux", "4.8.4-1~exp1" ], [ "linux", "4.8~rc8-1~exp1" ], [ "linux", "4.8~rc5-1~exp1" ], [ "linux", "4.7.8-1" ], [ "linux", "4.7.6-1" ], [ "linux", "4.7.5-1" ], [ "linux", "4.7.4-2" ], [ "linux", "4.7.4-1" ], [ "linux", "4.7.2-1" ], [ "linux", "4.7~rc7-1~exp1" ], [ "linux", "4.7~rc4-1~exp1" ], [ "linux", "4.7~rc3-1~exp1" ], [ "linux", "4.6.4-1" ], [ "linux", "4.6.3-1" ], [ "linux", "4.6.2-2" ], [ "linux", "4.6.2-1" ], [ "linux", "4.6.1-1" ], [ "linux", "4.6-1~exp2" ], [ "linux", "4.6-1~exp1" ], [ "linux", "4.6~rc7-1~exp1" ], [ "linux", "4.6~rc5-1~exp1" ], [ "linux", "4.6~rc3-1~exp1" ], [ "linux", "4.5.5-1" ], [ "linux", "4.5.4-1" ], [ "linux", "4.5.3-2" ], [ "linux", "4.5.3-1" ], [ "linux", "4.5.2-1" ], [ "linux", "4.5.1-1" ], [ "linux-tools", "4.5-1~exp1" ], [ "linux", "4.5-1~exp1" ], [ "linux", "4.5~rc7-1~exp1" ], [ "linux-tools", "4.5~rc7-1~exp1" ], [ "linux-tools", "4.5~rc5-1~exp3" ], [ "linux-tools", "4.5~rc5-1~exp2" ], [ "linux-tools", "4.5~rc5-1~exp1" ], [ "linux", "4.5~rc5-1~exp1" ], [ "linux", "4.5~rc4-1~exp1" ], [ "linux-tools", "4.4.6-1" ], [ "linux", "4.4.6-1" ], [ "linux", "4.4.4-2" ], [ "linux", "4.4.4-1" ], [ "linux-tools", "4.4-4" ], [ "linux-tools", "4.4-3" ], [ "linux", "4.4.2-3" ], [ "linux-tools", "4.4-2" ], [ "linux", "4.4.2-2" ], [ "linux-tools", "4.4-1" ], [ "linux", "4.4.2-1" ], [ "linux", "4.4.1-1~exp1" ], [ "linux", "4.4-1~exp1" ], [ "linux-tools", "4.4-1~exp2" ], [ "linux-tools", "4.4-1~exp1" ], [ "linux", "4.4~rc8-1~exp1" ], [ "linux", "4.4~rc6-1~exp1" ], [ "linux", "4.4~rc5-1~exp1" ], [ "linux-tools", "4.4~rc4-1~exp1" ], [ "linux", "4.4~rc4-1~exp1" ], [ "linux", "4.3.5-1" ], [ "linux", "4.3.3-7" ], [ "linux", "4.3.3-6" ], [ "linux", "4.3.3-5" ], [ "linux", "4.3.3-4" ], [ "linux", "4.3.3-3" ], [ "linux-tools", "4.3.1-2" ], [ "linux", "4.3.3-2" ], [ "linux", "4.3.3-1" ], [ "linux-tools", "4.3.1-1" ], [ "linux-tools", "4.3-1" ], [ "linux", "4.3.1-1" ], [ "linux", "4.3-1~exp2" ], [ "linux", "4.3-1~exp1" ], [ "linux", "4.3~rc7-1~exp1" ], [ "linux-tools", "4.3~rc5-1~exp2" ], [ "linux-tools", "4.3~rc5-1~exp1" ], [ "linux", "4.3~rc5-1~exp1" ], [ "linux-tools", "4.3~rc4-1~exp1" ], [ "linux", "4.3~rc4-1~exp1" ], [ "linux", "4.3~rc3-1~exp1" ], [ "linux", "4.2.6-3" ], [ "linux", "4.2.6-2" ], [ "linux", "4.2.6-1" ], [ "linux", "4.2.5-1" ], [ "linux", "4.2.3-2" ], [ "linux", "4.2.3-1" ], [ "linux-tools", "4.2-2" ], [ "linux", "4.2.1-2" ], [ "linux-tools", "4.2-1" ], [ "linux", "4.2.1-1" ], [ "linux", "4.2-1~exp1" ], [ "linux", "4.2~rc8-1~exp1" ], [ "linux-tools", "4.2~rc7-1~exp1" ], [ "linux-tools", "4.2~rc6-1~exp1" ], [ "linux", "4.2~rc6-1~exp1" ], [ "linux", "4.1.6-1" ], [ "linux", "4.1.5-1" ], [ "linux-tools", "4.1.4-2" ], [ "linux-tools", "4.1.4-1" ], [ "linux", "4.1.3-1" ], [ "linux-tools", "4.1.2-1~exp1" ], [ "linux", "4.1.2-1~exp1" ], [ "linux", "4.1.1-1~exp1" ], [ "linux", "4.0.8-2" ], [ "linux", "4.0.8-1" ], [ "linux", "4.0.7-1" ], [ "linux", "4.0.5-1" ], [ "linux", "4.0.4-1" ], [ "linux", "4.0.2-1" ], [ "linux-tools", "4.0.2-1" ], [ "linux", "4.0-1~exp1" ], [ "linux", "3.19.3-1~exp1" ], [ "linux", "3.19.1-1~exp1" ], [ "linux", "3.19-1~exp1" ], [ "linux", "3.18.6-1~exp1" ], [ "linux-tools", "3.18.5-1~exp1" ], [ "linux", "3.18.5-1~exp1" ], [ "linux", "3.18.3-1~exp1" ], [ "linux", "3.18-1~exp1" ], [ "linux", "3.17.4-1~exp1" ], [ "linux-tools", "3.17-1~exp1" ], [ "linux", "3.17-1~exp1" ], [ "linux", "3.17~rc5-1~exp1" ], [ "linux", "3.16.7-ckt9-3" ], [ "linux", "3.16.7-ckt9-2" ], [ "linux", "3.16.7-ckt9-1" ], [ "linux", "3.16.7-ckt7-1" ], [ "linux", "3.16.7-ckt4-3" ], [ "linux-tools", "3.16-3" ], [ "linux", "3.16.7-ckt4-2" ], [ "linux", "3.16.7-ckt4-1" ], [ "linux", "3.16.7-ckt2-1" ], [ "linux", "3.16.7-2" ], [ "linux", "3.16.7-1" ], [ "linux", "3.16.5-1" ], [ "linux", "3.16.3-2" ], [ "linux", "3.16.3-1" ], [ "linux", "3.16.2-3" ], [ "linux-tools", "3.16-2" ], [ "linux-tools", "3.16-1" ], [ "linux", "3.16.2-2" ], [ "linux", "3.16.2-1" ], [ "linux", "3.16-1~exp1" ], [ "linux-tools", "3.16~rc7-1~exp1" ], [ "linux", "3.16~rc6-1~exp1" ], [ "linux", "3.16~rc5-1~exp1" ], [ "linux", "3.15.5-1~exp1" ], [ "linux", "3.15.3-1~exp1" ], [ "linux", "3.15.1-1~exp1" ], [ "linux", "3.15~rc8-1~exp1" ], [ "linux", "3.15~rc7-1~exp1" ], [ "linux", "3.15~rc5-1~exp1" ], [ "linux", "3.14.15-2" ], [ "linux", "3.14.15-1" ], [ "linux", "3.14.13-2" ], [ "linux", "3.14.13-1" ], [ "linux", "3.14.12-1" ], [ "linux", "3.14.10-1" ], [ "linux", "3.14.9-1" ], [ "linux", "3.14.7-1" ], [ "linux", "3.14.5-1" ], [ "linux", "3.14.4-1" ], [ "linux-tools", "3.14-1" ], [ "linux", "3.14.2-1" ], [ "linux", "3.14.1-1~exp1" ], [ "linux", "3.14-1~exp1" ], [ "linux-tools", "3.14~rc7-1~exp1" ], [ "linux", "3.14~rc7-1~exp1" ], [ "linux", "3.14~rc5-1~exp1" ], [ "linux", "3.13.10-1" ], [ "linux", "3.13.7-1" ], [ "linux-tools", "3.13.6-1" ], [ "linux", "3.13.6-1" ], [ "linux", "3.13.5-1" ], [ "linux-tools", "3.13.4-1" ], [ "linux", "3.13.4-1" ], [ "linux-tools", "3.13-1~exp3" ], [ "linux-tools", "3.13-1~exp2" ], [ "linux-tools", "3.13-1~exp1" ], [ "linux", "3.13-1~exp1" ], [ "linux", "3.13~rc6-1~exp1" ], [ "linux-tools", "3.12.6-3" ], [ "linux-tools", "3.12.6-2" ], [ "linux", "3.12.9-1" ], [ "linux", "3.12.8-1" ], [ "linux", "3.12.6-2" ], [ "linux", "3.12.6-1" ], [ "linux", "3.12.3-1~exp1" ], [ "linux-tools", "3.12.6-1" ], [ "linux-tools", "3.12-1~exp1" ], [ "linux", "3.12-1~exp1" ], [ "linux", "3.12~rc7-1~exp1" ], [ "linux", "3.11.10-1" ], [ "linux", "3.11.8-1" ], [ "linux", "3.11.7-1" ], [ "linux", "3.11.6-2" ], [ "linux-tools", "3.11-3" ], [ "linux", "3.11.6-1" ], [ "linux-tools", "3.11-2" ], [ "linux-tools", "3.11-1" ], [ "linux", "3.11.5-1" ], [ "linux", "3.11-1~exp1" ], [ "linux", "3.11~rc7-1~exp1" ], [ "linux-tools", "3.11~rc4-1~exp1" ], [ "linux", "3.11~rc4-1~exp1" ], [ "linux", "3.10.11-1" ], [ "linux-tools", "3.10-4" ], [ "linux", "3.10.7-1" ], [ "linux-tools", "3.10-3" ], [ "linux", "3.10.5-1" ], [ "linux", "3.10.3-1" ], [ "linux-tools", "3.10-2" ], [ "linux-tools", "3.10-1" ], [ "linux", "3.10.1-1" ], [ "linux", "3.10~rc7-1~exp1" ], [ "linux", "3.10~rc5-1~exp1" ], [ "linux", "3.10~rc4-1~exp1" ], [ "linux", "3.9.8-1" ], [ "linux", "3.9.6-1" ], [ "linux", "3.9.5-1" ], [ "linux-tools", "3.9.4-1" ], [ "linux", "3.9.4-1" ], [ "linux", "3.8.13-1" ], [ "linux", "3.8.12-1" ], [ "linux-tools", "3.8.11-1" ], [ "linux", "3.8.11-1" ], [ "linux", "3.8.5-1~experimental.1" ], [ "linux", "3.8.3-1~experimental.1" ], [ "linux-tools", "3.8.2-1~experimental.1" ], [ "linux", "3.8.2-1~experimental.1" ], [ "linux", "3.8-1~experimental.1" ], [ "linux", "3.7.8-1~experimental.1" ], [ "linux", "3.7.3-1~experimental.1" ], [ "linux", "3.7.1-1~experimental.2" ], [ "linux-tools", "3.7.1-1~experimental.1" ], [ "linux", "3.7.1-1~experimental.1" ], [ "linux", "3.6.9-1~experimental.1" ], [ "linux", "3.6.8-1~experimental.1" ], [ "linux-tools", "3.6-1~experimental.1" ], [ "linux", "3.6.6-1~experimental.1" ], [ "linux", "3.6.4-1~experimental.1" ], [ "linux", "3.5.5-1~experimental.1" ], [ "linux-tools", "3.5-1~experimental.1" ], [ "linux", "3.5.2-1~experimental.1" ], [ "linux", "3.5-1~experimental.1" ], [ "linux", "3.4.4-1~experimental.1" ], [ "linux-tools", "3.4-1~experimental.1" ], [ "linux-2.6", "3.4.1-1~experimental.1" ], [ "linux-2.6", "3.3.6-1~experimental.1" ], [ "linux-2.6", "3.3.4-1~experimental.1" ], [ "linux-2.6", "3.3.2-1~experimental.1" ], [ "linux-tools", "3.3-1~experimental.1" ], [ "linux-2.6", "3.3-1~experimental.1" ], [ "linux-2.6", "3.3~rc6-1~experimental.1" ], [ "linux", "3.2.41-2" ], [ "linux", "3.2.41-1" ], [ "linux", "3.2.39-2" ], [ "linux", "3.2.39-1" ], [ "linux", "3.2.35-2" ], [ "linux", "3.2.35-1" ], [ "linux", "3.2.32-1" ], [ "linux", "3.2.30-1" ], [ "linux", "3.2.29-1" ], [ "linux", "3.2.23-1" ], [ "linux", "3.2.21-3" ], [ "linux", "3.2.21-2" ], [ "linux-tools", "3.2.17-1" ], [ "linux", "3.2.21-1" ], [ "linux", "3.2.20-1" ], [ "linux-2.6", "3.2.19-1" ], [ "linux-2.6", "3.2.18-1" ], [ "linux-2.6", "3.2.17-1" ], [ "linux-2.6", "3.2.16-1" ], [ "linux-2.6", "3.2.15-1" ], [ "linux-2.6", "3.2.14-1" ], [ "linux-2.6", "3.2.13-1" ], [ "linux-tools", "3.2.7-2" ], [ "linux-2.6", "3.2.12-1" ], [ "linux-2.6", "3.2.10-1" ], [ "linux-tools", "3.2.7-1" ], [ "linux-2.6", "3.2.9-1" ], [ "linux-2.6", "3.2.7-1" ], [ "linux-2.6", "3.2.6-1" ], [ "linux-2.6", "3.2.4-1" ], [ "linux-2.6", "3.2.2-1" ], [ "linux-tools", "3.2.1-2" ], [ "linux-2.6", "3.2.1-2" ], [ "linux-tools", "3.2.1-1" ], [ "linux-2.6", "3.2.1-1" ], [ "linux-2.6", "3.2~rc7-1~experimental.1" ], [ "linux-tools", "3.2~rc4-1~experimental.1" ], [ "linux-2.6", "3.2~rc4-1~experimental.1" ], [ "linux-2.6", "3.1.8-2" ], [ "linux-2.6", "3.1.8-1" ], [ "linux-2.6", "3.1.6-1" ], [ "linux-tools", "3.1.1-3" ], [ "linux-2.6", "3.1.5-1" ], [ "linux-2.6", "3.1.4-1" ], [ "linux-tools", "3.1.1-2" ], [ "linux-tools", "3.1.1-1" ], [ "linux-2.6", "3.1.1-1" ], [ "linux-2.6", "3.1.0-1~experimental.1" ], [ "linux-2.6", "3.1.0~rc7-1~experimental.1" ], [ "linux-2.6", "3.1.0~rc6-1~experimental.1" ], [ "linux-2.6", "3.1.0~rc4-1~experimental.1" ], [ "linux-2.6", "3.0.0-6" ], [ "linux-2.6", "3.0.0-5" ], [ "linux-2.6", "3.0.0-4" ], [ "linux-2.6", "3.0.0-3" ], [ "linux-2.6", "3.0.0-2" ], [ "linux-kbuild-2.6", "3.0.0-2" ], [ "linux-kbuild-2.6", "3.0.0-1" ], [ "linux-2.6", "3.0.0-1" ], [ "linux-2.6", "3.0.0~rc6-1~experimental.1" ], [ "linux-kbuild-2.6", "3.0.0~rc5-1~experimental.1" ], [ "linux-2.6", "3.0.0~rc5-1~experimental.1" ], [ "linux-2.6", "3.0.0~rc4-1~experimental.1" ], [ "linux-2.6", "3.0.0~rc3-1~experimental.1" ], [ "linux-2.6", "3.0.0~rc2-1~experimental.1" ], [ "linux-kbuild-2.6", "3.0.0~rc1-1~experimental.1" ], [ "linux-2.6", "3.0.0~rc1-1~experimental.1" ], [ "linux-2.6", "2.6.39-3" ], [ "linux-2.6", "2.6.39-2" ], [ "linux-kbuild-2.6", "2.6.39-1" ], [ "linux-2.6", "2.6.39-1" ], [ "linux-2.6", "2.6.39~rc7-1~experimental.1" ], [ "linux-2.6", "2.6.39~rc6-1~experimental.1" ], [ "linux-2.6", "2.6.39~rc5-1~experimental.1" ], [ "linux-2.6", "2.6.39~rc4-1~experimental.1" ], [ "linux-2.6", "2.6.38-5" ], [ "linux-2.6", "2.6.38-4" ], [ "linux-2.6", "2.6.38-3" ], [ "linux-2.6", "2.6.38-2" ], [ "linux-kbuild-2.6", "2.6.38-1" ], [ "linux-2.6", "2.6.38-1" ], [ "linux-2.6", "2.6.38~rc8-1~experimental.1" ], [ "linux-2.6", "2.6.38~rc7-1~experimental.1" ], [ "linux-2.6", "2.6.38~rc6-1~experimental.1" ], [ "linux-2.6", "2.6.37-2" ], [ "linux-kbuild-2.6", "2.6.37-1" ], [ "linux-2.6", "2.6.37-1" ], [ "linux-kbuild-2.6", "2.6.37-1~experimental.1" ], [ "linux-2.6", "2.6.37-1~experimental.1" ], [ "linux-2.6", "2.6.37~rc7-1~experimental.1" ], [ "linux-2.6", "2.6.37~rc5-1~experimental.3" ], [ "linux-2.6", "2.6.37~rc5-1~experimental.2" ], [ "linux-2.6", "2.6.37~rc5-1~experimental.1" ], [ "linux-2.6", "2.6.37~rc4-1~experimental.1" ], [ "linux-kbuild-2.6", "2.6.36-1~experimental.1" ], [ "linux-2.6", "2.6.36-1~experimental.1" ], [ "linux-2.6", "2.6.36~rc6-1~experimental.1" ], [ "linux-2.6", "2.6.36~rc5-1~experimental.1" ], [ "linux-2.6", "2.6.35-1~experimental.3" ], [ "linux-2.6", "2.6.35-1~experimental.2" ], [ "linux-kbuild-2.6", "2.6.35-1~experimental.1" ], [ "linux-2.6", "2.6.35-1~experimental.1" ], [ "linux-2.6", "2.6.35~rc6-1~experimental.1" ], [ "linux-2.6", "2.6.35~rc5-1~experimental.1" ], [ "linux-2.6", "2.6.35~rc4-1~experimental.1" ], [ "linux-2.6", "2.6.34-1~experimental.2" ], [ "linux-kbuild-2.6", "2.6.34-1~experimental.1" ], [ "linux-2.6", "2.6.34-1~experimental.1" ], [ "linux-2.6", "2.6.33-1~experimental.5" ], [ "linux-2.6", "2.6.33-1~experimental.4" ], [ "linux-2.6", "2.6.33-1~experimental.3" ], [ "linux-2.6", "2.6.33-1~experimental.2" ], [ "linux-2.6", "2.6.33-1~experimental.1" ], [ "linux-2.6", "2.6.32-30" ], [ "linux-2.6", "2.6.32-29" ], [ "linux-2.6", "2.6.32-28" ], [ "linux-2.6", "2.6.32-27" ], [ "linux-2.6", "2.6.32-26" ], [ "linux-2.6", "2.6.32-25" ], [ "linux-2.6", "2.6.32-24" ], [ "linux-2.6", "2.6.32-23" ], [ "linux-2.6", "2.6.32-22" ], [ "linux-2.6", "2.6.32-21" ], [ "linux-2.6", "2.6.32-20" ], [ "linux-2.6", "2.6.32-19" ], [ "linux-2.6", "2.6.32-18" ], [ "linux-2.6", "2.6.32-17" ], [ "linux-2.6", "2.6.32-16" ], [ "linux-2.6", "2.6.32-15" ], [ "linux-2.6", "2.6.32-14" ], [ "linux-2.6", "2.6.32-13" ], [ "linux-2.6", "2.6.32-12" ], [ "linux-2.6", "2.6.32-11" ], [ "linux-2.6", "2.6.32-10" ], [ "linux-2.6", "2.6.32-9" ], [ "linux-2.6", "2.6.32-8" ], [ "linux-2.6", "2.6.32-7" ], [ "linux-2.6", "2.6.32-6" ], [ "linux-2.6", "2.6.32-5" ], [ "linux-2.6", "2.6.32-4" ], [ "linux-2.6", "2.6.32-3" ], [ "linux-2.6", "2.6.32-2" ], [ "linux-kbuild-2.6", "2.6.32-1" ], [ "linux-2.6", "2.6.32-1" ], [ "linux-2.6", "2.6.32~rc8-1~experimental.1" ], [ "linux-2.6", "2.6.31-2" ], [ "linux-kbuild-2.6", "2.6.31.2-1" ], [ "linux-2.6", "2.6.31-1" ], [ "linux-kbuild-2.6", "2.6.31.2-1~experimental.1" ], [ "linux-2.6", "2.6.31-1~experimental.2" ], [ "linux-2.6", "2.6.31-1~experimental.1" ], [ "linux-2.6", "2.6.30-8" ], [ "linux-2.6", "2.6.30-7" ], [ "linux-2.6", "2.6.30-6" ], [ "linux-2.6", "2.6.30-5" ], [ "linux-2.6", "2.6.30-4" ], [ "linux-2.6", "2.6.30-3" ], [ "linux-2.6", "2.6.30-2" ], [ "linux-kbuild-2.6", "2.6.30-1" ], [ "linux-2.6", "2.6.30-1" ], [ "linux-2.6", "2.6.29-5" ], [ "linux-2.6", "2.6.29-4" ], [ "linux-2.6", "2.6.29-3" ], [ "linux-2.6", "2.6.29-2" ], [ "linux-kbuild-2.6", "2.6.29-1" ], [ "linux-2.6", "2.6.29-1" ], [ "linux-kbuild-2.6", "2.6.28-1" ], [ "linux-2.6", "2.6.28-1" ], [ "linux-2.6", "2.6.26-12" ], [ "linux-2.6", "2.6.26-11" ], [ "linux-2.6", "2.6.26-10" ], [ "linux-2.6", "2.6.26-9" ], [ "linux-2.6", "2.6.26-8" ], [ "linux-2.6", "2.6.26-7" ], [ "linux-2.6", "2.6.26-6" ], [ "linux-2.6", "2.6.26-5" ], [ "linux-2.6", "2.6.26-4" ], [ "linux-2.6", "2.6.26-3" ], [ "linux-kbuild-2.6", "2.6.26-3" ], [ "linux-kbuild-2.6", "2.6.26-2" ], [ "linux-2.6", "2.6.26-2" ], [ "linux-kbuild-2.6", "2.6.26-1" ], [ "linux-2.6", "2.6.26-1" ], [ "linux-2.6", "2.6.25-7" ], [ "linux-2.6", "2.6.25-6" ], [ "linux-2.6", "2.6.25-5" ], [ "linux-2.6", "2.6.25-4" ], [ "linux-2.6", "2.6.25-3" ], [ "linux-2.6", "2.6.25-2" ], [ "linux-kbuild-2.6", "2.6.25-2" ], [ "linux-kbuild-2.6", "2.6.25-1" ], [ "linux-2.6", "2.6.25-1" ], [ "linux-2.6", "2.6.24-6" ], [ "linux-2.6", "2.6.24-5" ], [ "linux-2.6", "2.6.24-4" ], [ "linux-2.6", "2.6.24-3" ], [ "linux-2.6", "2.6.24-2" ], [ "linux-kbuild-2.6", "2.6.24-1" ], [ "linux-2.6", "2.6.24-1" ], [ "linux-2.6", "2.6.24~rc8-1~experimental.1" ], [ "linux-2.6", "2.6.23-2" ], [ "linux-kbuild-2.6", "2.6.23-1" ], [ "linux-2.6", "2.6.23-1" ], [ "linux-2.6", "2.6.22-6" ], [ "linux-2.6", "2.6.22-5" ], [ "linux-2.6", "2.6.22-4" ], [ "linux-2.6", "2.6.22-3" ], [ "linux-2.6", "2.6.22-2" ], [ "linux-kbuild-2.6", "2.6.22-1" ], [ "linux-2.6", "2.6.22-1" ], [ "linux-2.6", "2.6.22~rc5-1~experimental.1" ], [ "linux-2.6", "2.6.21-6" ], [ "linux-2.6", "2.6.21-5" ], [ "linux-2.6", "2.6.21-4" ], [ "linux-2.6", "2.6.21-3" ], [ "linux-kbuild-2.6", "2.6.21-1" ], [ "linux-2.6", "2.6.21-2" ], [ "linux-2.6", "2.6.21-1" ], [ "linux-2.6", "2.6.20-3" ], [ "linux-2.6", "2.6.20-2" ], [ "linux-kbuild-2.6", "2.6.20-1" ], [ "linux-2.6", "2.6.20-1" ], [ "linux-2.6", "2.6.18.dfsg.1-10" ], [ "linux-2.6", "2.6.18.dfsg.1-9" ], [ "linux-2.6", "2.6.18-8" ], [ "linux-2.6", "2.6.18-7" ], [ "linux-2.6", "2.6.18-6" ], [ "linux-2.6", "2.6.18-5" ], [ "linux-2.6", "2.6.18-4" ], [ "linux-2.6", "2.6.18-3" ], [ "linux-2.6", "2.6.18-2" ], [ "linux-kbuild-2.6", "2.6.18-1" ], [ "linux-2.6", "2.6.18-1" ], [ "linux-2.6", "2.6.17-9" ], [ "linux-2.6", "2.6.17-8" ], [ "linux-2.6", "2.6.17-7" ], [ "linux-2.6", "2.6.17-6" ], [ "linux-kbuild-2.6", "2.6.17-3" ], [ "linux-2.6", "2.6.17-5" ], [ "linux-2.6", "2.6.17-4" ], [ "linux-2.6", "2.6.17-3" ], [ "linux-kbuild-2.6", "2.6.17-2" ], [ "linux-kbuild-2.6", "2.6.17-1" ], [ "linux-2.6", "2.6.17-2" ], [ "linux-2.6", "2.6.17-1" ], [ "linux-2.6", "2.6.16+2.6.17-rc3-0experimental.1" ], [ "linux-2.6.16", "2.6.16-18" ], [ "linux-2.6.16", "2.6.16-17" ], [ "linux-2.6.16", "2.6.16-16" ], [ "linux-2.6.16", "2.6.16-15" ], [ "linux-2.6", "2.6.16-14" ], [ "linux-2.6", "2.6.16-13" ], [ "linux-2.6", "2.6.16-12" ], [ "linux-2.6", "2.6.16-11" ], [ "linux-2.6", "2.6.16-10" ], [ "linux-2.6", "2.6.16-9" ], [ "linux-2.6", "2.6.16-8" ], [ "linux-2.6", "2.6.16-7" ], [ "linux-2.6", "2.6.16-6" ], [ "linux-2.6", "2.6.16-5" ], [ "linux-2.6", "2.6.16-4" ], [ "linux-2.6", "2.6.16-3" ], [ "linux-2.6", "2.6.16-2" ], [ "linux-2.6", "2.6.16-1" ], [ "linux-2.6", "2.6.15+2.6.16-rc5-0experimental.1" ], [ "linux-2.6", "2.6.15+2.6.16-rc4-0experimental.1" ], [ "linux-2.6", "2.6.15-8" ], [ "linux-2.6", "2.6.15-7" ], [ "linux-2.6", "2.6.15-6" ], [ "linux-2.6", "2.6.15-5" ], [ "linux-2.6", "2.6.15-4" ], [ "linux-2.6", "2.6.15-3" ], [ "linux-2.6", "2.6.15-2" ], [ "linux-2.6", "2.6.15-1" ], [ "linux-2.6", "2.6.14-7" ], [ "linux-2.6", "2.6.14-6" ], [ "linux-2.6", "2.6.14-5" ], [ "linux-2.6", "2.6.14-4" ], [ "linux-2.6", "2.6.14-3" ], [ "linux-2.6", "2.6.14-2" ], [ "linux-2.6", "2.6.14-1" ], [ "linux-2.6", "2.6.13+2.6.14-rc5-0experimental.1" ], [ "linux-2.6", "2.6.13+2.6.14-rc4-0experimental.1" ], [ "linux-2.6", "2.6.13-1" ], [ "linux-2.6", "2.6.12-6" ], [ "linux-2.6", "2.6.12-5" ], [ "linux-2.6", "2.6.12-4" ], [ "linux-2.6", "2.6.12-3" ], [ "linux-2.6", "2.6.12-2" ], [ "linux-2.6", "2.6.12-1" ] ], "person": { "email": "corsac@debian.org", "fullname": "Yves-Alexis Perez <corsac@debian.org>", "name": "Yves-Alexis Perez" } }, "maintainers": [ { "email": "debian-kernel@lists.debian.org", "fullname": "Debian Kernel Team <debian-kernel@lists.debian.org>", "name": "Debian Kernel Team" }, { "email": "waldi@debian.org", "fullname": "Bastian Blank <waldi@debian.org>", "name": "Bastian Blank" }, { "email": "maks@debian.org", "fullname": "maximilian attems <maks@debian.org>", "name": "maximilian attems" }, { "email": "ben@decadent.org.uk", "fullname": "Ben Hutchings <ben@decadent.org.uk>", "name": "Ben Hutchings" }, { "email": "carnil@debian.org", "fullname": "Salvatore Bonaccorso <carnil@debian.org>", "name": "Salvatore Bonaccorso" } ], "name": "linux", "version": "4.9.80-2" } }
To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.
/*
* zpool memory storage api
*
* Copyright (C) 2014 Dan Streetman
*
* This is a common frontend for memory storage pool implementations.
* Typically, this is used to store compressed memory.
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/list.h>
#include <linux/types.h>
#include <linux/mm.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
#include <linux/module.h>
#include <linux/zpool.h>
struct zpool {
struct zpool_driver *driver;
void *pool;
const struct zpool_ops *ops;
struct list_head list;
};
static LIST_HEAD(drivers_head);
static DEFINE_SPINLOCK(drivers_lock);
static LIST_HEAD(pools_head);
static DEFINE_SPINLOCK(pools_lock);
/**
* zpool_register_driver() - register a zpool implementation.
* @driver: driver to register
*/
void zpool_register_driver(struct zpool_driver *driver)
{
spin_lock(&drivers_lock);
atomic_set(&driver->refcount, 0);
list_add(&driver->list, &drivers_head);
spin_unlock(&drivers_lock);
}
EXPORT_SYMBOL(zpool_register_driver);
/**
* zpool_unregister_driver() - unregister a zpool implementation.
* @driver: driver to unregister.
*
* Module usage counting is used to prevent using a driver
* while/after unloading, so if this is called from module
* exit function, this should never fail; if called from
* other than the module exit function, and this returns
* failure, the driver is in use and must remain available.
*/
int zpool_unregister_driver(struct zpool_driver *driver)
{
int ret = 0, refcount;
spin_lock(&drivers_lock);
refcount = atomic_read(&driver->refcount);
WARN_ON(refcount < 0);
if (refcount > 0)
ret = -EBUSY;
else
list_del(&driver->list);
spin_unlock(&drivers_lock);
return ret;
}
EXPORT_SYMBOL(zpool_unregister_driver);
/* this assumes @type is null-terminated. */
static struct zpool_driver *zpool_get_driver(const char *type)
{
struct zpool_driver *driver;
spin_lock(&drivers_lock);
list_for_each_entry(driver, &drivers_head, list) {
if (!strcmp(driver->type, type)) {
bool got = try_module_get(driver->owner);
if (got)
atomic_inc(&driver->refcount);
spin_unlock(&drivers_lock);
return got ? driver : NULL;
}
}
spin_unlock(&drivers_lock);
return NULL;
}
static void zpool_put_driver(struct zpool_driver *driver)
{
atomic_dec(&driver->refcount);
module_put(driver->owner);
}
/**
* zpool_has_pool() - Check if the pool driver is available
* @type The type of the zpool to check (e.g. zbud, zsmalloc)
*
* This checks if the @type pool driver is available. This will try to load
* the requested module, if needed, but there is no guarantee the module will
* still be loaded and available immediately after calling. If this returns
* true, the caller should assume the pool is available, but must be prepared
* to handle the @zpool_create_pool() returning failure. However if this
* returns false, the caller should assume the requested pool type is not
* available; either the requested pool type module does not exist, or could
* not be loaded, and calling @zpool_create_pool() with the pool type will
* fail.
*
* The @type string must be null-terminated.
*
* Returns: true if @type pool is available, false if not
*/
bool zpool_has_pool(char *type)
{
struct zpool_driver *driver = zpool_get_driver(type);
if (!driver) {
request_module("zpool-%s", type);
driver = zpool_get_driver(type);
}
if (!driver)
return false;
zpool_put_driver(driver);
return true;
}
EXPORT_SYMBOL(zpool_has_pool);
/**
* zpool_create_pool() - Create a new zpool
* @type The type of the zpool to create (e.g. zbud, zsmalloc)
* @name The name of the zpool (e.g. zram0, zswap)
* @gfp The GFP flags to use when allocating the pool.
* @ops The optional ops callback.
*
* This creates a new zpool of the specified type. The gfp flags will be
* used when allocating memory, if the implementation supports it. If the
* ops param is NULL, then the created zpool will not be shrinkable.
*
* Implementations must guarantee this to be thread-safe.
*
* The @type and @name strings must be null-terminated.
*
* Returns: New zpool on success, NULL on failure.
*/
struct zpool *zpool_create_pool(const char *type, const char *name, gfp_t gfp,
const struct zpool_ops *ops)
{
struct zpool_driver *driver;
struct zpool *zpool;
pr_debug("creating pool type %s\n", type);
driver = zpool_get_driver(type);
if (!driver) {
request_module("zpool-%s", type);
driver = zpool_get_driver(type);
}
if (!driver) {
pr_err("no driver for type %s\n", type);
return NULL;
}
zpool = kmalloc(sizeof(*zpool), gfp);
if (!zpool) {
pr_err("couldn't create zpool - out of memory\n");
zpool_put_driver(driver);
return NULL;
}
zpool->driver = driver;
zpool->pool = driver->create(name, gfp, ops, zpool);
zpool->ops = ops;
if (!zpool->pool) {
pr_err("couldn't create %s pool\n", type);
zpool_put_driver(driver);
kfree(zpool);
return NULL;
}
pr_debug("created pool type %s\n", type);
spin_lock(&pools_lock);
list_add(&zpool->list, &pools_head);
spin_unlock(&pools_lock);
return zpool;
}
/**
* zpool_destroy_pool() - Destroy a zpool
* @pool The zpool to destroy.
*
* Implementations must guarantee this to be thread-safe,
* however only when destroying different pools. The same
* pool should only be destroyed once, and should not be used
* after it is destroyed.
*
* This destroys an existing zpool. The zpool should not be in use.
*/
void zpool_destroy_pool(struct zpool *zpool)
{
pr_debug("destroying pool type %s\n", zpool->driver->type);
spin_lock(&pools_lock);
list_del(&zpool->list);
spin_unlock(&pools_lock);
zpool->driver->destroy(zpool->pool);
zpool_put_driver(zpool->driver);
kfree(zpool);
}
/**
* zpool_get_type() - Get the type of the zpool
* @pool The zpool to check
*
* This returns the type of the pool.
*
* Implementations must guarantee this to be thread-safe.
*
* Returns: The type of zpool.
*/
const char *zpool_get_type(struct zpool *zpool)
{
return zpool->driver->type;
}
/**
* zpool_malloc() - Allocate memory
* @pool The zpool to allocate from.
* @size The amount of memory to allocate.
* @gfp The GFP flags to use when allocating memory.
* @handle Pointer to the handle to set
*
* This allocates the requested amount of memory from the pool.
* The gfp flags will be used when allocating memory, if the
* implementation supports it. The provided @handle will be
* set to the allocated object handle.
*
* Implementations must guarantee this to be thread-safe.
*
* Returns: 0 on success, negative value on error.
*/
int zpool_malloc(struct zpool *zpool, size_t size, gfp_t gfp,
unsigned long *handle)
{
return zpool->driver->malloc(zpool->pool, size, gfp, handle);
}
/**
* zpool_free() - Free previously allocated memory
* @pool The zpool that allocated the memory.
* @handle The handle to the memory to free.
*
* This frees previously allocated memory. This does not guarantee
* that the pool will actually free memory, only that the memory
* in the pool will become available for use by the pool.
*
* Implementations must guarantee this to be thread-safe,
* however only when freeing different handles. The same
* handle should only be freed once, and should not be used
* after freeing.
*/
void zpool_free(struct zpool *zpool, unsigned long handle)
{
zpool->driver->free(zpool->pool, handle);
}
/**
* zpool_shrink() - Shrink the pool size
* @pool The zpool to shrink.
* @pages The number of pages to shrink the pool.
* @reclaimed The number of pages successfully evicted.
*
* This attempts to shrink the actual memory size of the pool
* by evicting currently used handle(s). If the pool was
* created with no zpool_ops, or the evict call fails for any
* of the handles, this will fail. If non-NULL, the @reclaimed
* parameter will be set to the number of pages reclaimed,
* which may be more than the number of pages requested.
*
* Implementations must guarantee this to be thread-safe.
*
* Returns: 0 on success, negative value on error/failure.
*/
int zpool_shrink(struct zpool *zpool, unsigned int pages,
unsigned int *reclaimed)
{
return zpool->driver->shrink(zpool->pool, pages, reclaimed);
}
/**
* zpool_map_handle() - Map a previously allocated handle into memory
* @pool The zpool that the handle was allocated from
* @handle The handle to map
* @mm How the memory should be mapped
*
* This maps a previously allocated handle into memory. The @mm
* param indicates to the implementation how the memory will be
* used, i.e. read-only, write-only, read-write. If the
* implementation does not support it, the memory will be treated
* as read-write.
*
* This may hold locks, disable interrupts, and/or preemption,
* and the zpool_unmap_handle() must be called to undo those
* actions. The code that uses the mapped handle should complete
* its operatons on the mapped handle memory quickly and unmap
* as soon as possible. As the implementation may use per-cpu
* data, multiple handles should not be mapped concurrently on
* any cpu.
*
* Returns: A pointer to the handle's mapped memory area.
*/
void *zpool_map_handle(struct zpool *zpool, unsigned long handle,
enum zpool_mapmode mapmode)
{
return zpool->driver->map(zpool->pool, handle, mapmode);
}
/**
* zpool_unmap_handle() - Unmap a previously mapped handle
* @pool The zpool that the handle was allocated from
* @handle The handle to unmap
*
* This unmaps a previously mapped handle. Any locks or other
* actions that the implementation took in zpool_map_handle()
* will be undone here. The memory area returned from
* zpool_map_handle() should no longer be used after this.
*/
void zpool_unmap_handle(struct zpool *zpool, unsigned long handle)
{
zpool->driver->unmap(zpool->pool, handle);
}
/**
* zpool_get_total_size() - The total size of the pool
* @pool The zpool to check
*
* This returns the total size in bytes of the pool.
*
* Returns: Total size of the zpool in bytes.
*/
u64 zpool_get_total_size(struct zpool *zpool)
{
return zpool->driver->total_size(zpool->pool);
}
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Dan Streetman <ddstreet@ieee.org>");
MODULE_DESCRIPTION("Common API for compressed memory storage");
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...