flock broken?

Manfred Spraul (manfreds@colorfullife.com)
Sun, 09 May 1999 18:39:14 +0200


This is a multi-part message in MIME format.
--------------57A64FEB3B75260A788A469E
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

I'm trying to benchmark the thundering herds probem with flock(),
but either flock() is broken or I made a stupid mistake.

I use
- kernel 2.2.7, kernel 2.2.3 (compiled by RH)
- ext2 filesystem
- egcs (sorry, I don't have gcc 2.7.2)
- glibc-2.1.1-6 (RH 6.0)

Could someone compile the attached program, and
send me the results?

The attached program creates a small shm segment,
a lock file & uses flock() to synchronize the access to
the memory segment.
The probem is that the synchronization fails:
on UP: "./a.out 1000 10" fails after 5-10 second
on SMP (2*PII): "./a.out 1000 2" fails nearly immediately.

Please Cc, I'm not on the mailing list.

I've checked, sys_flock() is called, it creates a write lock.

Thanks,
Manfred
--------------57A64FEB3B75260A788A469E
Content-Type: application/octet-stream;
name="work.c"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="work.c"

I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzeXMvZmlsZS5oPgojaW5jbHVkZSA8dW5p
c3RkLmg+CiNpbmNsdWRlIDxzeXMvaXBjLmg+CiNpbmNsdWRlIDxzeXMvc2htLmg+CiNpbmNs
dWRlIDxzeXMvdGltZS5oPgoKCiNkZWZpbmUgU0lHTkFUVVJFIDE0ODI5NjAzCgpzdHJ1Y3Qg
U0hNX0RBVEEgewoJaW50IGNvdW50OwoJaW50IHN0YXJ0OwoJc3RydWN0IHRpbWV2YWwgdHZf
c3RhcnQ7CglpbnQgc2lnOwoJaW50IGxvY2FsbG9jazsKfTsKCmludCBjaGlsZGNvdW50ID0g
NTsKaW50IGNvdW50ID0gMTAwMDAwOwoKdm9pZCB3b3JrKGludCBmZCwgc3RydWN0IFNITV9E
QVRBKiBzaGkpCnsKCXdoaWxlKDEpIHsKCQlpZihmbG9jayhmZCxMT0NLX0VYKSE9MCkgewoJ
CQlwZXJyb3IoIndvcmsuZmxvY2soKSIpOwoJCQlyZXR1cm47CgkJfQoJCXNoaS0+bG9jYWxs
b2NrKys7CgkJaWYoc2hpLT5sb2NhbGxvY2sgIT0gMSkKCQkJcHJpbnRmKCJsb2NhbGxvY2sg
ZmFpbGVkIS5cbiIpOwoJCQoJCWlmKHNoaS0+c2lnICE9IFNJR05BVFVSRSkKCQkJcHJpbnRm
KCJzaWduYXR1cmUgd3JvbmcuXG4iKTsKCQlpZihzaGktPnN0YXJ0KQoJCXsKCQkJc2hpLT5j
b3VudC0tOwoJCQlpZigoc2hpLT5jb3VudCA8IDApIHx8IChzaGktPmNvdW50ID49IGNvdW50
KSkKCQkJewoJCQkJcHJpbnRmKCIgY291bnQgZXJyb3I6ICVpXG4iLHNoaS0+Y291bnQpOwoJ
CQkJc2hpLT5jb3VudCA9IGNvdW50OwoJCQl9CgkJCWlmKHNoaS0+Y291bnQgPT0gMCkKCQkJ
ewoJCQkJbG9uZyBsb25nIGFjdHVhbDsKCQkJCWludCB0aW1lOwoJCQkJc3RydWN0IHRpbWV2
YWwgdHY7CgkJCQlnZXR0aW1lb2ZkYXkoJnR2LE5VTEwpOwoJCQkKCQkJCWFjdHVhbCA9IHR2
LnR2X3NlYyoxMDAwKjEwMDArdHYudHZfdXNlYzsKCQkJCWFjdHVhbCAtPSBzaGktPnR2X3N0
YXJ0LnR2X3NlYyoxMDAwKjEwMDArc2hpLT50dl9zdGFydC50dl91c2VjOwoJCQkJdGltZSA9
IGFjdHVhbDsKCQkJCXByaW50ZigiZHVyYXRpb246JWkuXG4iLHRpbWUpOyAJCgkJCQlzaGkt
PnR2X3N0YXJ0ID0gdHY7CgkJCQlzaGktPmNvdW50ID0gY291bnQ7CgkJCX0KCQl9CgkJc2hp
LT5sb2NhbGxvY2stLTsKCQlpZihmbG9jayhmZCxMT0NLX1VOKSE9MCkgewoJCQlwZXJyb3Io
IndvcmsuZmxvY2soVU4pIik7CgkJCXJldHVybjsKCQl9Cgl9Cn0KCmludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKewoJaW50IHNobXNlZzsKCWludCBpOwoJaW50IGZkOwoJc3Ry
dWN0IFNITV9EQVRBKiBzaGk7CgoKCXByaW50ZigiIHdvcmsgPGNvdW50PiA8Y2hpbGRzPlxu
Iik7CglpZihhcmdjICE9IDMpCgkJcmV0dXJuIDE7Cgljb3VudCA9IGF0b2koYXJndlsxXSk7
CgljaGlsZGNvdW50ID0gYXRvaShhcmd2WzJdKTsKCglwcmludGYoIiBjb3VudD0gJWksIGNo
aWxkcz0gJWlcbiIsY291bnQsIGNoaWxkY291bnQpOwoJaWYoY291bnQgPT0gMCB8fCBjaGls
ZGNvdW50ID09IDApCgkJcmV0dXJuIDE7CglzaG1zZWcgPSBzaG1nZXQoSVBDX1BSSVZBVEUs
CgkJCXNpemVvZihTSE1fSU5GTyksCgkJCTA3NzcpOwoJCglzaGkgPSBzaG1hdChzaG1zZWcs
IDAsIDApOwoJaWYoIHNoaSA9PSAweEZGZmZGRmZmKSB7CgkJcGVycm9yKCJzaG1hdCgpIik7
CgkJcmV0dXJuIDE7Cgl9CglzaGktPmNvdW50ID0gY291bnQ7CglmZmx1c2goc3Rkb3V0KTsK
CXNoaS0+c3RhcnQgPSAwOwoJc2hpLT5zaWcgPSBTSUdOQVRVUkU7CgoJZmQgPSBjcmVhdCgi
L3RtcC90ZXN0ZmlsZSIsMDc3Nyk7CglpZihmZCA9PSAtMSkgewoJCXBlcnJvcigiY3JlYXQi
KTsKCQlyZXR1cm47Cgl9CgoJZm9yKGk9MDtpPGNoaWxkY291bnQ7aSsrKQoJewoJCXBpZF90
IGNoaWxkID0gZm9yaygpOwoJCWlmKGNoaWxkPT0wKSB7CgkJCXdvcmsoZmQsc2hpKTsKCQkJ
cmV0dXJuIDA7CgkJfQoJCWlmKGNoaWxkIDwgMCkKCQl7CgkJCXByaW50ZigiZm9yayBmYWls
ZWQuXG4iKTsKCQkJcmV0dXJuIDE7CgkJfQoJfQoKCWlmKGZsb2NrKGZkLCBMT0NLX0VYKSAh
PSAwKSB7CgkJcHJpbnRmKCJmbG9jaygpIGVycm9yLlxuIik7CgkJcmV0dXJuIDE7Cgl9Cgln
ZXR0aW1lb2ZkYXkoJnNoaS0+dHZfc3RhcnQsTlVMTCk7CglzaGktPnN0YXJ0ID0gMTsKCWZs
b2NrKGZkLExPQ0tfVU4pOwoJcHJpbnRmKCJQcmVzcyBDdHJsK0MgdG8gZW5kLiIpOwoJd2hp
bGUoMSkgewoJCWdldGNoYXIoKTsKCQlwcmludGYoImN1cnJlbnQgY291bnQ6ICVpXG4iLHNo
aS0+Y291bnQpOwoJfTsKCXJldHVybiAwOwp9Cg==
--------------57A64FEB3B75260A788A469E--

-
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/