freebsd-dev/usr.bin
Christian S.J. Peron 6a53f0a52b 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
PR:		bin/114341
PR:		bin/116543
PR:		bin/111101
MFC after:	1 week
2007-10-12 14:56:52 +00:00
..
alias Use the "builtin" shell function to make sure that the requested 2005-10-24 22:32:19 +00:00
apply It's `apply echo *'' that is similar to ls -1'', not `apply echo a*''. 2006-12-13 08:13:14 +00:00
asa Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
at Use NULL instead of 0 for the return value of fopen(). 2007-09-21 01:55:11 +00:00
atm Fix build in the !NOATM case by using the begemot library in place of 2004-09-24 22:10:34 +00:00
awk Increase inputFS buffer. awk will not accept some old scripts 2007-06-08 05:44:12 +00:00
banner o Check that -w width is not above maximum. Use DWIDTH instead of 2006-11-22 21:05:17 +00:00
basename Cross-reference basename(3) and dirname(3). 2006-03-16 17:21:52 +00:00
biff Fix markup. 2006-12-28 04:58:38 +00:00
bluetooth Check return value of listen(). 2007-09-11 01:59:00 +00:00
brandelf Fix markup. 2007-03-09 14:36:18 +00:00
bsdiff Portability fix for non-POSIX operating systems: Open files in binary mode. 2006-12-05 20:22:14 +00:00
bzip2 Update for bzip2 1.0.4 import. 2007-03-28 07:48:03 +00:00
bzip2recover Start the dreaded NOFOO -> NO_FOO conversion. 2004-12-21 08:47:35 +00:00
c89 Reduce diffs with c99(1). 2007-03-10 07:10:01 +00:00
c99 Bump the original revision of c89(1). 2007-03-10 07:11:20 +00:00
calendar Update to calendar/calendars/hr_HR.ISO_8859-2/calendar.praznici 2007-09-21 23:43:03 +00:00
cap_mkdb Add endianness support to cap_mkdb(1), useful for cross builds. 2005-02-22 23:29:54 +00:00
catman Prepare for MACHINE and hw.machine switching to "pc98" on FreeBSD/pc98. 2005-12-05 14:22:12 +00:00
chat
checknr Document input line length limit. 2005-01-25 22:32:48 +00:00
chkey Reimplementation of world/kernel build options. For details, see: 2006-03-17 18:54:44 +00:00
chpass Fix bug introduced in rev 1.23: 2006-09-25 15:06:24 +00:00
cksum Added the EXIT STATUS section where appropriate. 2005-01-17 07:44:44 +00:00
cmp Refine markup and add the EXIT STATUS section where appropriate. 2006-12-19 10:34:14 +00:00
col The variables i and tot don't need to be static. 2006-07-18 07:16:25 +00:00
colcrt Expand *n't contractions. 2005-02-13 22:25:33 +00:00
colldef Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
colrm Added the EXIT STATUS section where appropriate. 2005-01-17 07:44:44 +00:00
column Fix the fix in rev. 1.15 so that we jump to the next column 2006-12-15 17:47:25 +00:00
comm Document input line length limit. 2005-01-25 22:32:48 +00:00
compile_et Style: move .PATH to where it belongs. 2005-10-14 15:50:22 +00:00
compress -mdoc sweep. 2005-11-18 10:36:29 +00:00
csplit Document input line length limit. 2005-01-25 22:32:48 +00:00
csup Update make glue for csup-snap-20060313. 2006-03-14 03:53:50 +00:00
ctags cleanup code: remove unnecessary and useless void cast 2007-02-04 20:07:07 +00:00
cut - Adopt the short description from POSIX as it better matches the 2007-02-28 10:13:32 +00:00
dig Update bmake glue for the BIND 9.4.1 import. 2007-06-02 23:19:58 +00:00
dirname Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
du Significantly reduce the memory leak as noted in BUGS section for 2007-07-04 00:00:41 +00:00
ee Correct insecure temporary file usage in texindex. [06:01] 2006-01-11 08:02:16 +00:00
elf2aout Because optarg and optind are defined in unistd.h, 2006-04-21 09:39:51 +00:00
elfdump s/DT_IA64_PLT_RESERVE/DT_IA_64_PLT_RESERVE/ 2006-01-28 17:58:22 +00:00
enigma Markup nits. 2006-12-24 19:55:38 +00:00
env Significantly reduce the memory leak as noted in BUGS section for 2007-07-04 00:00:41 +00:00
expand Document that unexpand(1)'s -a and -t options are exclusive. 2006-10-13 16:22:25 +00:00
false
fetch Try to preserve ownership and permissions when replacing an existing file. 2006-11-10 22:05:41 +00:00
file Update for the 4.21 import (manuals didn't change). 2007-05-25 09:25:05 +00:00
file2c Add '-s' option and update the manual page. With this option, it prints 2007-03-23 00:00:22 +00:00
find Check in some insignificant fixes obtained as a result of 2007-02-28 10:19:25 +00:00
finger Restore the ".Sh BUGS" line that was accidentally removed 2007-04-12 08:22:49 +00:00
fmt Remove unnecessary SRCS= where could be guessed directly by our 2005-01-27 14:52:47 +00:00
fold Mention what underlining is meant here. 2006-12-15 11:23:59 +00:00
from Improve markup. 2006-12-18 15:36:31 +00:00
fstat KERN_PROC_ALL produces a kinfo_proc for each thread in a process, which 2007-03-09 16:21:40 +00:00
fsync Correct some style nits that I have mistakenly submitted as 2005-01-26 15:17:25 +00:00
ftp Obey MK_INET6_SUPPORT. 2006-07-27 14:20:14 +00:00
gcore Eliminate memory leak from an accidental malloc(). 2007-04-10 17:37:53 +00:00
gencat Our bsd.*.mk only supports 6 WARNS levels and we should not use higher values 2005-06-30 11:56:31 +00:00
getconf o confstr(3) returns 0 on error. Check the return value accordingly. 2006-12-06 12:00:26 +00:00
getent cleanup code: remove superfluous comma at end of enumeration 2007-02-04 20:52:57 +00:00
getopt Expand *n't contractions. 2005-02-13 22:25:33 +00:00
gprof Remove alpha-specific stuff. 2006-08-23 12:12:56 +00:00
gzip - Simulate GNU gzip(1) behavior where full filename is 2007-07-12 01:17:14 +00:00
head Fix build on architectures where off_t is signed by casting to uintmax_t 2007-01-11 20:23:01 +00:00
hesinfo Fixed the misplaced $FreeBSD$. 2005-02-09 18:07:17 +00:00
hexdump Document the -d option. 2006-12-24 14:23:35 +00:00
host Update bmake glue for the BIND 9.4.1 import. 2007-06-02 23:19:58 +00:00
id Fix SUSv3 compliance: Use a single comma instead of comma and space to separate 2006-12-29 12:28:34 +00:00
indent initialize variable (WARNS=6) 2006-09-13 05:06:12 +00:00
ipcrm Spell "id" as "ID". 2007-03-09 12:45:00 +00:00
ipcs o Fix typo in a comment. 2006-05-15 08:20:38 +00:00
join Improve markup and do some minor wordsmithing. 2006-12-21 10:59:48 +00:00
jot Use explicit braces to avoid ambiguous else. 2006-12-09 15:23:20 +00:00
kdump Disconnect netatm from the build as it is not MPSAFE and relies on 2007-07-14 21:49:24 +00:00
keylogin Deal with double whitespace. 2004-07-03 00:24:45 +00:00
keylogout
killall Added the EXIT STATUS section where appropriate. 2005-01-17 07:44:44 +00:00
ktrace Allow the -c -f file options to actually execute. 2007-02-13 00:22:29 +00:00
ktrdump Skip format flags, when parsing ktr_desc. 2006-01-12 22:32:07 +00:00
lam Document that jot(1), rs(1), and lam(1) first appeared in 4.2BSD. 2006-10-20 04:31:01 +00:00
last Expand *n't contractions. 2005-02-13 22:25:33 +00:00
lastcomm Increase precision of time values in the process accounting 2007-05-22 06:51:38 +00:00
ldd Expand documentation of -f option 2007-05-12 12:23:40 +00:00
leave
less Regen. 2007-06-04 01:43:25 +00:00
lessecho Hook lessecho(1) to build. 2006-08-20 15:52:17 +00:00
lesskey
lex Convert NO_PROFILE and NO_LIB32 to new style. 2006-03-18 21:37:05 +00:00
limits Significantly reduce the memory leak as noted in BUGS section for 2007-07-04 00:00:41 +00:00
locale Xref setlocale(3), bump document date. 2005-11-01 19:36:17 +00:00
locate Update the default FILESYSTEMS value in a comment to note that ext2fs is 2007-07-19 21:00:08 +00:00
lock Expand *n't contractions. 2005-02-13 22:25:33 +00:00
lockf Revision 1.12 of lockf.c fixed a "thundering herd" scenario when the 2007-10-12 14:56:52 +00:00
logger Make logmsg take const char * arguments. 2007-05-07 11:28:01 +00:00
login Use NULL instead of 0 for the return value of fopen(). 2007-09-21 01:55:11 +00:00
logins
logname Say "utility", not "function". 2006-12-26 10:37:37 +00:00
look Remove break after return. 2006-07-18 10:19:46 +00:00
lorder Document the NM environment variable. 2006-10-25 09:40:07 +00:00
lsvfs Add security.jail.mount_allowed sysctl, which allows to mount and 2007-04-05 21:03:05 +00:00
m4 Use NULL instead of 0 for the return value of fopen(). 2007-09-21 01:55:11 +00:00
mail o Really commit typo fixes to HEAD. 2007-03-25 18:37:59 +00:00
make Change directory back to ${.CURDIR} when remaking Makefiles. 2007-06-01 04:20:19 +00:00
makewhatis Prepare for MACHINE and hw.machine switching to "pc98" on FreeBSD/pc98. 2005-12-05 14:22:12 +00:00
mesg Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
minigzip Mechanically kill hard sentence breaks. 2004-07-02 22:22:35 +00:00
ministat Improve input parsing: 2006-08-28 08:27:02 +00:00
mkdep Sort sections. 2005-01-18 13:43:56 +00:00
mkfifo Fix markup. 2006-12-15 14:14:17 +00:00
mklocale Use NULL instead of 0 for the return value of fopen(). 2007-09-21 01:55:11 +00:00
mkstr More markup fixes. 2007-03-04 08:24:13 +00:00
mktemp Markup fixes. 2006-09-29 15:20:48 +00:00
mkuzip Support character device as input file. 2007-03-06 17:04:15 +00:00
msgs Cleanup: 2005-01-17 17:45:38 +00:00
mt -mdoc sweep. 2005-11-18 10:36:29 +00:00
nc Fix bugs in the previous commit. 2005-02-07 08:44:34 +00:00
ncal Document incorrect handling of multibyte characters. 2005-10-23 01:37:25 +00:00
ncplist getopt(3) returns -1, not EOF when out of args. 2007-02-05 07:35:23 +00:00
ncplogin getopt(3) returns -1, not EOF when out of args. 2007-02-05 07:35:23 +00:00
netstat - Netstat warning removal for 64 bit aware platforms. 2007-09-09 11:03:56 +00:00
newgrp Added the EXIT STATUS section where appropriate. 2005-01-17 07:44:44 +00:00
newkey Reimplementation of world/kernel build options. For details, see: 2006-03-17 18:54:44 +00:00
nfsstat Fix markup. 2006-12-25 20:30:10 +00:00
nice Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
nl o Really commit typo fixes to HEAD. 2007-03-25 18:37:59 +00:00
nohup Added the EXIT STATUS section where appropriate. 2005-01-17 07:44:44 +00:00
nslookup Update bmake glue for the BIND 9.4.1 import. 2007-06-02 23:19:58 +00:00
nsupdate Update bmake glue for the BIND 9.4.1 import. 2007-06-02 23:19:58 +00:00
objformat Bah. Kris says the default-to-a.out knowledge has migrated into the 2007-01-25 23:12:19 +00:00
opieinfo Introduce the PRECIOUSPROG knob in bsd.prog.mk, similar 2004-11-03 18:01:21 +00:00
opiekey
opiepasswd Introduce the PRECIOUSPROG knob in bsd.prog.mk, similar 2004-11-03 18:01:21 +00:00
pagesize
passwd Fix a typo 2007-04-03 19:14:39 +00:00
paste WARNS=6 chocked on unitialized variable. 2006-09-12 05:08:36 +00:00
pathchk Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
pkill Be more accurate in the description of the -I option: 2006-12-20 11:57:22 +00:00
pr Fix misspelled 'argument' and try to make the sentence into English. 2005-10-26 17:37:54 +00:00
printenv Simplify. 2006-12-26 12:43:12 +00:00
printf Prefer {u,}intmax_t over the deprecated {u_,}quad_t. 2005-08-05 08:18:00 +00:00
quota Use [u]intmax_t to printf unknown integer types. 2007-05-07 12:10:06 +00:00
renice Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
rev o Kill unneeded assignment. 2006-07-30 07:41:28 +00:00
rlogin len and len2 work better as size_t 2005-11-13 21:03:56 +00:00
rpcgen Use POSIX mutex instead of Solaris ones. This makes generation 2007-08-23 09:39:40 +00:00
rpcinfo rpcinfo(1) doesn't depend on INET6 explicitly. 2006-07-27 13:47:02 +00:00
rs Document that jot(1), rs(1), and lam(1) first appeared in 4.2BSD. 2006-10-20 04:31:01 +00:00
rsh - Remove MLINKS to nonexistant manpages 2005-07-14 20:29:08 +00:00
rup Backport markup fixes from a translated version of a manpage. 2007-02-28 10:22:19 +00:00
ruptime - Do not allocate memory to entries in /var/rwho which have been down for 2005-09-02 14:58:26 +00:00
rusers Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
rwall Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
rwho It's actually 11 minutes when the machine is assumed to be down and removed 2005-08-07 11:48:44 +00:00
script Deal with double whitespace. 2004-07-03 00:24:45 +00:00
sed Before doing compile_re() which needs a parameter to identify 2007-07-06 16:34:56 +00:00
setchannel Add support for selecting from multiple tuners. 2007-02-25 01:28:37 +00:00
shar Sort sections. 2005-01-18 13:43:56 +00:00
showmount Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
smbutil Make smbfs capable to use 16bit char set in filenames. 2005-05-04 15:05:46 +00:00
sockstat o Do not warn if the process exits before we get its name. 2007-06-16 20:24:55 +00:00
split Markup fixes. 2006-09-29 15:20:48 +00:00
stat Add some more examples. It always takes me a long time to find the S 2007-04-27 18:23:32 +00:00
su Stop mentioning /usr/X11R6. 2007-07-24 06:41:07 +00:00
systat - Move all of the PS_ flags into either p_flag or td_flags. 2007-09-17 05:31:39 +00:00
tabs Added the EXIT STATUS section where appropriate. 2005-01-17 07:44:44 +00:00
tail Markup revision. 2006-12-24 19:18:52 +00:00
talk Use socklen_t where appropriate. 2005-03-11 14:17:12 +00:00
tar Add --posix as a synonym for --format=pax, for GNU 2007-09-09 00:07:18 +00:00
tcopy Document some details better, making it easier to translate. 2006-12-20 15:34:01 +00:00
tee Added the EXIT STATUS section where appropriate. 2005-01-17 07:44:44 +00:00
telnet Remove the -DFAST_IPSEC from Makefiles again. 2007-07-05 08:56:46 +00:00
tftp Set txrx_error to 1 when we reach abort. This makes the program correctly set the exit code. 2006-09-28 21:22:21 +00:00
time Cast to intmax_t to print tv_sec in struct timeval. 2007-05-07 12:23:23 +00:00
tip Replace rev. 1.9 with patch from OpenBSD. 2007-05-12 23:29:33 +00:00
top - Move all of the PS_ flags into either p_flag or td_flags. 2007-09-17 05:31:39 +00:00
touch Update to match revision 1.23 of touch.c. 2007-04-10 07:24:47 +00:00
tput At least one argument is required. 2006-10-12 21:10:55 +00:00
tr o Remove duplicate includes. 2007-01-20 08:24:02 +00:00
true
truncate The -r option can also cause the files to be extended (not 2006-12-19 11:20:34 +00:00
truss Print integer-typed arguments as integers. This makes sure that 2007-07-28 23:18:39 +00:00
tset Reduce compiler warning: variable might be used uninitialized, by giving 2005-05-29 15:49:53 +00:00
tsort - Remove the ambiguity in the input format description. 2006-12-27 14:56:18 +00:00
tty Fix markup nits, add the EXIT STATUS section. 2006-12-13 20:15:49 +00:00
ul Fix markup. 2007-02-27 12:06:02 +00:00
uname Sort sections. 2005-01-18 13:43:56 +00:00
unexpand Document that unexpand(1)'s -a and -t options are exclusive. 2006-10-13 16:22:25 +00:00
unifdef Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
uniq Fix typo. 2007-05-17 00:19:56 +00:00
units Expand *n't contractions. 2005-02-13 22:25:33 +00:00
unvis
usbhidaction Add support using an alternate table file to usbhidaction(1). 2007-06-30 03:58:01 +00:00
usbhidctl Bump document date. 2006-11-23 05:08:06 +00:00
users
uudecode Start the dreaded NOFOO -> NO_FOO conversion. 2004-12-21 08:47:35 +00:00
uuencode - Remove MLINKS to nonexistant manpages 2005-07-14 20:29:08 +00:00
uuidgen Move uuidgen(1) from /usr/bin/ to /bin/. It will be used in rc.d/hostid 2007-04-09 19:16:48 +00:00
vacation Remove kludges intended to support src trees with partial obj trees. 2005-06-10 06:12:53 +00:00
vgrind Manual page tweaks. 2006-08-29 18:11:20 +00:00
vi Replaced afterinstall: with equivalent FILES and SYMLINKS. 2004-10-18 17:16:01 +00:00
vis Nits. 2006-12-23 19:15:39 +00:00
vmstat Add a counter for the total number of pages cached and support for 2007-07-27 20:01:22 +00:00
w Fix markup. 2006-12-14 19:02:48 +00:00
wall In wall and who, check that the utmp entry isn't stalled, as it is done in w. 2006-02-21 13:01:00 +00:00
wc Prevent a line from being broken on a line boundary. 2006-12-21 22:59:07 +00:00
what Polish markup and wording. 2006-12-14 00:02:44 +00:00
whereis Remove unused variables. 2005-04-09 14:31:41 +00:00
which Refine the previous revision. 2006-12-13 12:09:41 +00:00
who In wall and who, check that the utmp entry isn't stalled, as it is done in w. 2006-02-21 13:01:00 +00:00
whois Use proper type cast for ctype macro 2007-04-14 14:32:48 +00:00
window Fixes for gcc 4.x. 2005-08-25 14:09:35 +00:00
write Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
xargs Markup fixes. 2006-09-29 15:20:48 +00:00
xinstall Markup fixes. 2006-09-29 15:20:48 +00:00
xlint Fix a group of typos: 2006-12-29 13:08:46 +00:00
xstr Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 10:14:11 +00:00
yacc Sort sections. 2005-01-18 13:43:56 +00:00
yes
ypcat Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
ypmatch Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
ypwhich Fix markup nit. 2006-12-28 10:58:06 +00:00
Makefile Tweak the handling of "WITHOUT_LIBPTHREAD". Also remove the accidental 2007-10-09 23:31:11 +00:00
Makefile.inc