Re: mkswap for large swap partitions?

Stephen C. Tweedie (sct@redhat.com)
Mon, 12 Oct 1998 15:14:43 +0100


--SXX8cxWM2f
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hi,

On Thu, 8 Oct 1998 23:12:16 -0600 (MDT), Colin Plumb <colin@nyx.net>
said:

> Since large swap support is now in the kernel, I'd like to use it. But
> I'm unclear on how to properly set up a swap partition. I have tried
> both mkswap implementations from Sylvain Pion's web page
> (http://www.inria.fr/prisme/personnel/pion/progs/linux/) and neither
> seems to be recognized by the kernel.

> I suppose a Real Hacker would reverse-engineer the format from the kernel
> source and write mkswap.c from that, but I'm a lazy and can't believe
> that somebody hasn't done this already.

> Any pointers? (Kernel 2.1.124.)

See below for my mkbigswap.c. There will probably be a new util-linux
with this code quite soon.

--Stephen

--SXX8cxWM2f
Content-Type: application/octet-stream
Content-Description: mkbigswap.c
Content-Disposition: attachment;
filename="mkbigswap.c"
Content-Transfer-Encoding: base64

LyoKICogbWtzd2FwLmMgLSBzZXQgdXAgYSBsaW51eCBzd2FwIGRldmljZQogKgogKiAoQykg
MTk5MSBMaW51cyBUb3J2YWxkcy4gVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIGFz
IHBlcgogKiB0aGUgTGludXggY29weXJpZ2h0LgogKi8KCi8qCiAqIDIwLjEyLjkxICAtCXRp
bWUgYmVnYW4uIEdvdCBWTSB3b3JraW5nIHllc3RlcmRheSBieSBkb2luZyB0aGlzIGJ5IGhh
bmQuCiAqCiAqIFVzdWFnZTogbWtzd2FwIFstY10gZGV2aWNlIFtzaXplLWluLWJsb2Nrc10K
ICoKICoJLWMgZm9yIHJlYWRhYmxpbGl0eSBjaGVja2luZyAodXNlIGl0IHVubGVzcyB5b3Ug
YXJlIFNVUkUhKQogKgogKiBUaGUgZGV2aWNlIG1heSBiZSBhIGJsb2NrIGRldmljZSBvciBh
IGltYWdlIG9mIG9uZSwgYnV0IHRoaXMgaXNuJ3QKICogZW5mb3JjZWQgKGJ1dCBpdCdzIG5v
dCBtdWNoIGZ1biBvbiBhIGNoYXJhY3RlciBkZXZpY2UgOi0pLgogKgogKiBQYXRjaGVzIGZy
b20gamFnZ3lAcHVycGxldC5kZW1vbi5jby51ayAoTWlrZSBKYWdkaXMpIHRvIG1ha2UgdGhl
CiAqIHNpemUtaW4tYmxvY2tzIHBhcmFtZXRlciBvcHRpb25hbCBhZGRlZCBXZWQgRmViICA4
IDEwOjMzOjQzIDE5OTUuCiAqCiAqIENoYW5nZXMgZnJvbSBxdWlubGFuQHRyYW5zbWV0YS5j
b20gKERhbmllbCBRdWlubGFuKSB0byBzdXBwb3J0CiAqIGxhcmdlIHN3YXAgZmlsZXMgb24g
VHVlIEZlYiAyNCAwMjo1Mjo0OCAxOTk4LgogKi8KCiNpbmNsdWRlIDxzdGRpby5oPgojaW5j
bHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGZjbnRsLmg+
CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgojaW5jbHVkZSA8
c3lzL3N0YXQuaD4KI2luY2x1ZGUgPGFzbS9wYWdlLmg+CgojZGVmaW5lIEJMS0dFVFNJWkUg
MHgxMjYwCgojaWZuZGVmIF9fbGludXhfXwojIGRlZmluZSB2b2xhdGlsZQojZW5kaWYKCiNk
ZWZpbmUgVEVTVF9CVUZGRVJfUEFHRVMgOAojZGVmaW5lIE1BR0lDX1NUUklORyAiU1dBUFNQ
QUNFMiIKI2RlZmluZSBWRVJTSU9OIDEKCnN0YXRpYyBjaGFyICogcHJvZ3JhbV9uYW1lID0g
Im1rc3dhcCI7CnN0YXRpYyBjaGFyICogZGV2aWNlX25hbWUgPSBOVUxMOwpzdGF0aWMgaW50
IERFViA9IC0xOwpzdGF0aWMgbG9uZyBQQUdFUyA9IDA7CnN0YXRpYyBpbnQgY2hlY2sgPSAw
OwkJLyogY2hlY2sgZm9yIGJhZCBibG9ja3MgKi8Kc3RhdGljIGludCBiYWRwYWdlcyA9IDA7
CgovKiBzd2FwX2hlYWRlciBsZW5ndGggaXMgUEFHRV9TSVpFIGJ5dGVzICovCnVuaW9uIHN3
YXBfaGVhZGVyIHsKCXN0cnVjdCBtYWdpYyAKCXsKCQljaGFyIHJlc2VydmVkW1BBR0VfU0la
RSAtIDEwXTsKCQljaGFyIG1hZ2ljWzEwXTsKCX0gbWFnaWM7CglzdHJ1Y3QgaW5mbyAKCXsK
CQljaGFyCSAgICAgYm9vdGJpdHNbMTAyNF07CS8qIFNwYWNlIGZvciBkaXNrbGFiZWwgZXRj
LiAqLwoJCXVuc2lnbmVkIGludCB2ZXJzaW9uOwoJCXVuc2lnbmVkIGludCBsYXN0X3BhZ2U7
CgkJdW5zaWduZWQgaW50IG5yX2JhZHBhZ2VzOwoJCXVuc2lnbmVkIGludCBwYWRkaW5nWzEy
NV07CgkJdW5zaWduZWQgaW50IGJhZHBhZ2VzWzFdOwoJfSBpbmZvOwp9OwoKc3RhdGljIHVu
aW9uIHN3YXBfaGVhZGVyIGZpcnN0X3BhZ2U7CgovKgogKiBWb2xhdGlsZSB0byBsZXQgZ2Nj
IGtub3cgdGhhdCB0aGlzIGRvZXNuJ3QgcmV0dXJuLiBXaGVuIHRyeWluZwogKiB0byBjb21w
aWxlIHRoaXMgdW5kZXIgbWluaXgsIHZvbGF0aWxlIGdpdmVzIGEgd2FybmluZywgYXMKICog
ZXhpdCgpIGlzbid0IGRlZmluZWQgYXMgdm9sYXRpbGUgdW5kZXIgbWluaXguCiAqLwp2b2xh
dGlsZSB2b2lkIGZhdGFsX2Vycm9yKGNvbnN0IGNoYXIgKiBmbXRfc3RyaW5nKQp7CglmcHJp
bnRmKHN0ZGVycixmbXRfc3RyaW5nLHByb2dyYW1fbmFtZSxkZXZpY2VfbmFtZSk7CglleGl0
KDEpOwp9CgojZGVmaW5lIHVzYWdlKCkgZmF0YWxfZXJyb3IoIlVzYWdlOiAlcyBbLWNdIC9k
ZXYvbmFtZSBbYmxvY2tzXVxuIikKI2RlZmluZSBkaWUoc3RyKSBmYXRhbF9lcnJvcigiJXM6
ICIgc3RyICJcbiIpCgp2b2lkIGNoZWNrX2Jsb2Nrcyh2b2lkKQp7Cgl1bnNpZ25lZCBpbnQg
Y3VycmVudF9wYWdlOwoJaW50IGRvX3NlZWsgPSAxOwoJc3RhdGljIGNoYXIgYnVmZmVyW1BB
R0VfU0laRV07CgoJY3VycmVudF9wYWdlID0gMDsKCWlmICghY2hlY2spIHsKCQlyZXR1cm47
Cgl9Cgl3aGlsZSAoY3VycmVudF9wYWdlIDwgUEFHRVMpIHsKCQlpZiAoZG9fc2VlayAmJiBs
c2VlayhERVYsY3VycmVudF9wYWdlKlBBR0VfU0laRSxTRUVLX1NFVCkgIT0KCQljdXJyZW50
X3BhZ2UqUEFHRV9TSVpFKQoJCQlkaWUoInNlZWsgZmFpbGVkIGluIGNoZWNrX2Jsb2NrcyIp
OwoJCWlmICgoZG9fc2VlayA9IChQQUdFX1NJWkUgIT0gcmVhZChERVYsIGJ1ZmZlciwgUEFH
RV9TSVpFKSkpKSB7CgkJCWlmICgodm9pZCAqKSAmZmlyc3RfcGFnZS5pbmZvLmJhZHBhZ2Vz
W2JhZHBhZ2VzKzFdID4KCQkJICAgICh2b2lkICopIGZpcnN0X3BhZ2UubWFnaWMubWFnaWMp
IAoJCQkJZGllKCJ0b28gbWFueSBiYWQgYmxvY2tzIik7CgkJCWlmICghY3VycmVudF9wYWdl
KQoJCQkJZGllKCJmaXJzdCBibG9jayB1bnJlYWRhYmxlIik7CgkJCWZpcnN0X3BhZ2UuaW5m
by5iYWRwYWdlc1tiYWRwYWdlcysrXSA9IGN1cnJlbnRfcGFnZTsKCQkJYmFkcGFnZXMrKzsK
CQl9CgkJY3VycmVudF9wYWdlKys7Cgl9CglpZiAoYmFkcGFnZXMpCgkJcHJpbnRmKCIlZCBi
YWQgcGFnZSVzXG4iLGJhZHBhZ2VzLChiYWRwYWdlcz4xKT8icyI6IiIpOwoJZmlyc3RfcGFn
ZS5pbmZvLm5yX2JhZHBhZ2VzID0gYmFkcGFnZXM7Cn0KCnN0YXRpYyBsb25nIHZhbGlkX29m
ZnNldCAoaW50IGZkLCBpbnQgb2Zmc2V0KQp7CgljaGFyIGNoOwoKCWlmIChsc2VlayAoZmQs
IG9mZnNldCwgMCkgPCAwKQoJCXJldHVybiAwOwoJaWYgKHJlYWQgKGZkLCAmY2gsIDEpIDwg
MSkKCQlyZXR1cm4gMDsKCXJldHVybiAxOwp9CgpzdGF0aWMgaW50IGNvdW50X2Jsb2NrcyAo
aW50IGZkKQp7CglpbnQgaGlnaCwgbG93OwoKCWxvdyA9IDA7Cglmb3IgKGhpZ2ggPSAxOyB2
YWxpZF9vZmZzZXQgKGZkLCBoaWdoKTsgaGlnaCAqPSAyKQoJCWxvdyA9IGhpZ2g7Cgl3aGls
ZSAobG93IDwgaGlnaCAtIDEpCgl7CgkJY29uc3QgaW50IG1pZCA9IChsb3cgKyBoaWdoKSAv
IDI7CgoJCWlmICh2YWxpZF9vZmZzZXQgKGZkLCBtaWQpKQoJCQlsb3cgPSBtaWQ7CgkJZWxz
ZQoJCQloaWdoID0gbWlkOwoJfQoJdmFsaWRfb2Zmc2V0IChmZCwgMCk7CglyZXR1cm4gKGxv
dyArIDEpOwp9CgpzdGF0aWMgaW50IGdldF9zaXplKGNvbnN0IGNoYXIgICpmaWxlKQp7Cglp
bnQJZmQ7CglpbnQJc2l6ZTsKCglmZCA9IG9wZW4oZmlsZSwgT19SRFdSKTsKCWlmIChmZCA8
IDApIHsKCQlwZXJyb3IoZmlsZSk7CgkJZXhpdCgxKTsKCX0KCWlmIChpb2N0bChmZCwgQkxL
R0VUU0laRSwgJnNpemUpID49IDApIHsKCQljbG9zZShmZCk7CgkJcmV0dXJuIChzaXplICog
NTEyKTsKCX0KCQkKCXNpemUgPSBjb3VudF9ibG9ja3MoZmQpOwoJY2xvc2UoZmQpOwoJcmV0
dXJuIHNpemU7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpCnsKCWNoYXIg
KiB0bXA7CglzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwoJaW50IGdvb2RwYWdlczsKCglpZiAoc2l6
ZW9mKGZpcnN0X3BhZ2UpICE9IFBBR0VfU0laRSkKCQlkaWUgKCJBbGlnbm1lbnQgdHJvdWJs
ZSIpOwoJCglpZiAoYXJnYyAmJiAqYXJndikKCQlwcm9ncmFtX25hbWUgPSAqYXJndjsKCXdo
aWxlIChhcmdjLS0gPiAxKSB7CgkJYXJndisrOwoJCWlmIChhcmd2WzBdWzBdICE9ICctJykK
CQkJaWYgKGRldmljZV9uYW1lKSB7CgkJCQlQQUdFUyA9IHN0cnRvbChhcmd2WzBdLCZ0bXAs
MCk+PihQQUdFX1NISUZULTEwKTsKCQkJCWlmICgqdG1wKQoJCQkJCXVzYWdlKCk7CgkJCX0g
ZWxzZQoJCQkJZGV2aWNlX25hbWUgPSBhcmd2WzBdOwoJCWVsc2Ugd2hpbGUgKCorK2FyZ3Zb
MF0pCgkJCXN3aXRjaCAoYXJndlswXVswXSkgewoJCQkJY2FzZSAnYyc6IGNoZWNrPTE7IGJy
ZWFrOwoJCQkJZGVmYXVsdDogdXNhZ2UoKTsKCQkJfQoJfQoJaWYgKGRldmljZV9uYW1lICYm
ICFQQUdFUykgewoJCVBBR0VTID0gZ2V0X3NpemUoZGV2aWNlX25hbWUpIC8gUEFHRV9TSVpF
OwoJfQoJaWYgKCFkZXZpY2VfbmFtZSkgewoJCWZwcmludGYoc3RkZXJyLAoJCQkiJXM6IGVy
cm9yOiBOb3doZXJlIHRvIHNldCB1cCBzd2FwIG9uP1xuIiwKCQkJcHJvZ3JhbV9uYW1lKTsK
CQl1c2FnZSgpOwoJfQoJaWYgKFBBR0VTIDwgMTApIHsKCQlmcHJpbnRmKHN0ZGVyciwKCQkJ
IiVzOiBlcnJvcjogc3dhcCBhcmVhIG5lZWRzIHRvIGJlIGF0IGxlYXN0ICVsZGtCXG4iLAoJ
CQlwcm9ncmFtX25hbWUsIDEwICogUEFHRV9TSVpFIC8gMTAyNCk7CgkJdXNhZ2UoKTsKCX0K
CWlmIChQQUdFUyA+ICgweDdGRkZGRkZGTCAvIFBBR0VfU0laRSkpIHsKCSAgICAgICAgUEFH
RVMgPSAoMHg3RkZGRkZGRkwgLyBQQUdFX1NJWkUpOwoJCWZwcmludGYoc3RkZXJyLCAiJXM6
IHdhcm5pbmc6IHRydW5jYXRpbmcgc3dhcCBhcmVhIHRvICVsZGtCXG4iLAoJCQlwcm9ncmFt
X25hbWUsIFBBR0VTICogUEFHRV9TSVpFIC8gMTAyNCk7Cgl9CglERVYgPSBvcGVuKGRldmlj
ZV9uYW1lLE9fUkRXUik7CglpZiAoREVWIDwgMCB8fCBmc3RhdChERVYsICZzdGF0YnVmKSA8
IDApIHsKCQlwZXJyb3IoZGV2aWNlX25hbWUpOwoJCWV4aXQoMSk7Cgl9CglpZiAoIVNfSVNC
TEsoc3RhdGJ1Zi5zdF9tb2RlKSkKCQljaGVjaz0wOwoJZWxzZSBpZiAoc3RhdGJ1Zi5zdF9y
ZGV2ID09IDB4MDMwMCB8fCBzdGF0YnVmLnN0X3JkZXYgPT0gMHgwMzQwKQoJCWRpZSgiV2ls
bCBub3QgdHJ5IHRvIG1ha2Ugc3dhcGRldmljZSBvbiAnJXMnIik7CgoJLyogY2hlY2sgZm9y
IGJhZCBibG9ja3MgKi8KCWNoZWNrX2Jsb2NrcygpOwoKCS8qIGNhbGN1bGF0ZSBnb29kIHBh
Z2VzICovCglnb29kcGFnZXMgPSBQQUdFUyAtIGJhZHBhZ2VzIC0gMTsKCWlmIChnb29kcGFn
ZXMgPD0gMCkKCQlkaWUoIlVuYWJsZSB0byBzZXQgdXAgc3dhcC1zcGFjZTogdW5yZWFkYWJs
ZSIpOwoJcHJpbnRmKCJTZXR0aW5nIHVwIHN3YXBzcGFjZSwgc2l6ZSA9ICVsZCBieXRlc1xu
IiwKCSAgICAgICBnb29kcGFnZXMqUEFHRV9TSVpFKTsKCgkvKiBzZXQgdXAgaGVhZGVyICov
CglpZiAobHNlZWsoREVWLCAwLCBTRUVLX1NFVCkpCgkJZGllKCJ1bmFibGUgdG8gcmV3aW5k
IHN3YXAtZGV2aWNlIik7CglpZiAoMTAyNCAhPSByZWFkKERFViwgJmZpcnN0X3BhZ2UsIDEw
MjQpKQoJCWRpZSgidW5hYmxlIHRvIHJlYWQgc3dhcCAgaGVhZGVyIik7CglzdHJuY3B5KGZp
cnN0X3BhZ2UubWFnaWMubWFnaWMsIE1BR0lDX1NUUklORywgMTApOwoJZmlyc3RfcGFnZS5p
bmZvLnZlcnNpb24gPSBWRVJTSU9OOwoJZmlyc3RfcGFnZS5pbmZvLmxhc3RfcGFnZSA9IFBB
R0VTOwoKCS8qIHdyaXRlIGhlYWRlciAqLwoJaWYgKGxzZWVrKERFViwgMCwgU0VFS19TRVQp
KQoJCWRpZSgidW5hYmxlIHRvIHJld2luZCBzd2FwLWRldmljZSIpOwoJaWYgKFBBR0VfU0la
RSAhPSB3cml0ZShERVYsICZmaXJzdF9wYWdlLCBQQUdFX1NJWkUpKQoJCWRpZSgidW5hYmxl
IHRvIHdyaXRlIGhlYWRlciBwYWdlIik7CglyZXR1cm4gMDsKfQo=

--SXX8cxWM2f--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/