bin/111101: commit references a PR
dfilter at FreeBSD.org
Fri Oct 12 08:00:10 PDT 2007
The following reply was made to PR bin/111101; it has been noted by GNATS.
From: dfilter at FreeBSD.ORG (dfilter service)
To: bug-followup at FreeBSD.org
Subject: Re: bin/111101: commit references a PR
Date: Fri, 12 Oct 2007 14:57:04 +0000 (UTC)
csjp 2007-10-12 14:56:52 UTC
FreeBSD src repository
usr.bin/lockf lockf.1 lockf.c
Revision 1.12 of lockf.c fixed a "thundering herd" scenario when the
lock experienced contention a number of processes would race to acquire
lock when it was released. This problem resulted in a lot of CPU
load as well as locks being picked up out of order.
Unfortunately, a regression snuck in which allowed multiple threads
to pickup the same lock when -k was not used. This could occur when
multiple processes open a file descriptor to inode X (one process
will be blocked) and the file is unlinked on unlock (thereby removing
the directory entry allow another process to create a new directory
entry for the same file name and lock it).
This changes restores the old algorithm of: wait for the lock, then
acquire lock when we want to unlink the file on exit (specifically
when -k is not used) and keeps the new algorithm for when -k is used,
which yields fairness and improved performance.
Also, update the man page to inform users that if lockf(1) is being
used to facilitate concurrency between a number of processes, it
is recommended that -k be used to reduce CPU load and yeld
fairness with regard to lock ordering.
Collaborated with: jdp
MFC after: 1 week
Revision Changes Path
1.19 +13 -1 src/usr.bin/lockf/lockf.1
1.17 +59 -10 src/usr.bin/lockf/lockf.c
cvs-all at freebsd.org mailing list
To unsubscribe, send any mail to "cvs-all-unsubscribe at freebsd.org"
More information about the freebsd-bugs