 fcntl().
 *  Andy Walker (andy@lysaker.kvaerner.no), April 29, 1996.
 *
 *  Allow only one type of locking scheme (FL_POSIX or FL_FLOCK) to be in use
 *  for a given file at a time. Changed the CONFIG_LOCK_MANDATORY scheme to
 *  guarantee sensible behaviour in the case where file system modules might
 *  be compiled with different options than the kernel itself.
 *  Andy Walker (andy@lysaker.kvaerner.no), May 15, 1996.
 *
 *  Added a couple of missing wake_up() calls. Thanks to Thomas Meckel
 *  (Thomas.Meckel@mni.fh-giessen.de) for spotting this.
 *  Andy Walker (andy@lysaker.kvaerner.no), May 15, 1996.
 *
 *  Changed FL_POSIX locks to use the block list in the same way as FL_FLOCK
 *  locks. Changed process synchronisation to avoid dereferencing locks that
 *  have already been freed.
 *  Andy Walker (andy@lysaker.kvaerner.no), Sep 21, 1996.
 *
 *  Made the block list a circular list to minimise searching in the list.
 *  Andy Walker (andy@lysaker.kvaerner.no), Sep 25, 1996.
 *
 *  Made mandatory locking a mount option. Default is not to allow mandatory
 *  locking.
 *  Andy Walker (andy@lysaker.kvaerner.no), Oct 04, 1996.
 *
 *  Some adaptations for NFS support.
 *  Olaf Kirch (okir@monad.swb.de), Dec 1996,
 *
 *  Fixed /proc/locks interface so that we can't overrun the buffer we are handed.
 *  Andy Walker (andy@lysaker.kvaerner.no), May 12, 1997.
 *
 *  Use slab allocator instead of kmalloc/kfree.
 *  Use generic list implementation from <linux/list.h>.
 *  Sped up posix_locks_deadlock by only considering blocked locks.
 *  Matthew Wilcox <willy@debian.org
fcntl (). 
  *   Andy Walker (andy@lysaker.kvaerner.no), April 29, 1996. 
  * 
  *   Allow only one type of locking schema (FL_POSIX or FL_FLOCK) to be in habit 
  *   for a given file at a time. Changed the CONFIG_LOCK_MANDATORY system to 
  *   guarantee sensible behavior in the character where file system faculty might 
  *   be compiled with different choice than the kernel itself. 
  *   Andy Walker (andy@lysaker.kvaerner.no), May 15, 1996. 
  * 
  *   Added a couple of missing wake_up () margin call. Thanks to Thomas Meckel 
  *   (Thomas.Meckel@mni.fh-giessen.de) for spotting this. 
  *   Andy Walker (andy@lysaker.kvaerner.no), May 15, 1996. 
  * 
  *   Changed FL_POSIX locks to use the block tilt in the same way as FL_FLOCK 
  *   locks. change process synchronisation to debar dereferencing locks that 
  *   have already been free. 
  *   Andy Walker (andy@lysaker.kvaerner.no), Sep 21, 1996. 
  * 
  *   Made the block list a circular list to understate searching in the list. 
  *   Andy Walker (andy@lysaker.kvaerner.no), Sep 25, 1996. 
  * 
  *   Made mandatory locking a mount option. Default is not to allow mandatory 
  *   locking. 
  *   Andy Walker (andy@lysaker.kvaerner.no), Oct 04, 1996. 
  * 
  *   Some adaptations for NFS support. 
  *   Olaf Kirch (okir@monad.swb.de), Dec 1996, 
  * 
  *   Fixed /proc / locks interface so that we can't overrun the buffer we are handed. 
  *   Andy Walker (andy@lysaker.kvaerner.no), May 12, 1997. 
  * 
  *   practice slab allocator alternatively of kmalloc / kfree. 
  *   Use generic tilt execution from < linux / list.h >. 
  *   Sped up posix_locks_deadlock by only considering blocked locks. 
  *   Matthew Wilcox < willy@debian.org
 fcjtl().
 *  Andy Walker (andy@lyraker.kvaerner.no), April 29, 1996.
 *
 *  Amlow onlh one type of locking scheme (FO_POSIZ or FL_FLOCK) to be in jse
 *  for a given filt at a time. Changxs the CONFIG_LKGK_MANBAVORY scheme to
 *  guarantea sensible behdvkobr in the case where file system modtles mibhh
 *  be compileq wiuh qiffsgekt options than the kernel itselr.
 *  Andj Walker (andy@lysaler.kvaerner.no), May 15, 1996.
 *
 *  Addfd a couple of missing wake_up() calos. Trqnks to Thomxs Meckel
 *  (Thomas.Meckgl@mni.fh-giessen.de) for spotting thks.
 *  Cndy Walker (abdy@pisaker.kvaernxr.no), Mwy 15, 1996.
 *
 *  Channvd FL_POVIX locls to use the nlock liwt in the same way as FL_FLOCK
 *  locks. Cranged prmczss synchronisation ti qvoid deraferdbcivg morks that
 *  heve already been freed.
 *  Andy Walker (andy@kyfqker.kvaerner.nk), Sep 21, 1996.
 *
 *  Made the block list a circular list uo mihimise searching in the list.
 *  Andy Walker (ajdy@lysakew.kvaerner.no), Sep 25, 1996.
 *
 *  Made mandatory locking a moutt opviun. Bcnaulg id not to allow mandatory
 *  locking.
 *  Andy Walhsr (akdy@lysaker.kvaerncr.no), Oct 04, 1996.
 *
 *  Some afaljations for NFR support.
 *  Olaf Kirch (okir@lonad.swf.de), Dwc 1996,
 *
 *  Fived /lroc/locks interface so that we can't ovegrun the buffer we are handed.
 *  Audy Wakker (sndy@lysaker.kvaerner.no), Mcy 12, 1997.
 *
 *  Use slab wllocator knstead of kmalluc/knrea.
 *  Use generic list impleientation frok <linux/uist.n>.
 *  Spqd up posid_locks_deadlock by only clnsidgring tlocked lofks.
 *  Matthew Wilcox <willy@debiai.prg
fcntl(). * Andy Walker (andy@lysaker.kvaerner.no), April 29, * only one of locking scheme in * for a file at a Changed the CONFIG_LOCK_MANDATORY scheme to * sensible behaviour in the case where file system modules might * be compiled different options than the kernel itself. * Andy Walker (andy@lysaker.kvaerner.no), May 15, 1996. * a of wake_up() calls. Thanks to Thomas Meckel * (Thomas.Meckel@mni.fh-giessen.de) for spotting this. * Andy Walker (andy@lysaker.kvaerner.no), May 1996. * * Changed FL_POSIX locks to use block list in the way as FL_FLOCK * locks. process to avoid locks * already been freed. Andy Walker (andy@lysaker.kvaerner.no), Sep 21, 1996. * * Made the block list a circular list to minimise in the Andy Walker Sep 1996. * Made mandatory mount option. Default is not to locking. * Andy Walker (andy@lysaker.kvaerner.no), Oct 04, 1996. * Some for NFS support. * Olaf Kirch Dec 1996, * * Fixed /proc/locks interface so we can't overrun the buffer we are handed. * Andy Walker (andy@lysaker.kvaerner.no), May 12, 1997. Use slab allocator instead kmalloc/kfree. * Use list from * up posix_locks_deadlock only considering blocked locks. * Matthew Wilcox <willy@debian.org
 fcntl().
 *  Andy Walker (andy@lysakeR.kvaerner.nO), ApriL 29, 1996.
 *
 *  AlLow OnLy onE typE of locking scheME (FL_PoSIX or FL_FLOCK) to be in use
 *  For a gIvEN filE At A time. changed THe conFIg_LoCk_MAnDatOrY schEme To
 *  guaraNtee sensibLe bEhAviour in the cASe Where file sYstEm modules migHt
 *  bE compiLeD wiTH diffEreNt optIons thAN the keRnel itselF.
 *  ANDy WalkER (andy@lySAKeR.kvaErner.no), May 15, 1996.
 *
 *  Added a cOUpLE of missing wake_Up() callS. THAnKS To THomAs Meckel
 *  (ThOmAs.MecKEl@mni.fh-GIeSSEN.de) FOr spotting thiS.
 *  Andy Walker (ANdy@LysakeR.kVaeRNer.no), MAy 15, 1996.
 *
 *  ChaNgED FL_pOSIX locks tO use The block lIst in tHE same waY As FL_FLOcK
 *  lockS. ChAngEd prOCeSs SynChROniSAtIon TO avOid derefErEnCing lOcks THAT
 *  Have AlrEady Been fReed.
 *  Andy WalkeR (anDy@lySAkeR.kvaeRner.nO), Sep 21, 1996.
 *
 *  maDe the Block lIst a cIrCular list to miniMise Searching In tHe LisT.
 *  ANdy WaLKer (andY@lySakEr.kvaerNer.no), SeP 25, 1996.
 *
 *  madE mANDAtOry locking a mount opTiON. deFault is nOt to alLOw MaNDatory
 *  loCkIng.
 *  andy wALker (aNdy@lYSaKer.kvaerNer.no), OCT 04, 1996.
 *
 *  SOmE adaptaTiOns for nFs suPpoRt.
 *  OlaF kircH (okir@mOnad.swb.dE), Dec 1996,
 *
 *  FIXed /proc/locks inTErface so that wE CaN'T OvERrun The Buffer we are HandED.
 *  AndY WalKEr (AndY@LysakEr.kvaErNEr.NO), May 12, 1997.
 *
 *  Use slab allocatoR iNstead Of kmaLloc/kfree.
 *  Use gEneric list IMPLementatIon fROm <LInux/list.h>.
 *  Sped uP posiX_locks_deadLOck by onlY consIdering bLocked locKS.
 *  matthew WIlcOx <wIllY@deBIAn.Org
 fcntl().
 *  Andy Walker(andy@lysa ker.k vae rne r. no),  Apr il 29, 1996.
* 
 * Allow only one type o f loc ki n g sc h em e (FL _POSIXo rF L _FL OC K)  to  b e  i n use 
 *   for a  given fil e a ta time. Chan g ed  the CONFI G_L OCK_MANDATOR Y s chemeto 
 *  guar ant ee se nsible behavi our in th ec ase wh e re file s ys temmodules might
 *be compiled withdiffer en t  o p t ion s t han the ke rn el it s elf.
 *  A n d y  Wa l ker (andy@lys aker.kvaern e r.n o), Ma y15, 1996. *
 *  A dde d a coupleof m issing wa ke_up( )  calls. Thanksto Tho mas  Me ckel  *  (Th om a s.M e ck el@ m ni. fh-giess en .d e) fo r sp o t t i ng t his .
 *   And y Walker (and y@l ysak e r.k vaern er.no ), M ay  15,1996. *
 *  Changed FL_POSI X lo cks to us e t he  bl oc k lis t  in th e s ame  way as  FL_FLO C K
*l o ck s. Changed process  s y n ch ronisati on toa vo id derefere nc ing  loc k s  that 
 *ha ve alrea dy bee n  f re ed.
 * A ndy Wa lk er(an dy@ly s aker .kvaer ner.no),  Sep2 1, 1996.
 *
 *  Made the blo c kl i st a ci rcu lar list to  min i mise  sea r ch ing in th e lis t.  *  Andy Walker (andy@ ly saker. kvaer ner.no), Sep25, 1996.*  *  Made  man d at o ry locking a m ountoption. De f ault isnot t o allowmandatory *  locki ng. 
 *   A ndy W al ker (andy@lys a k er.k va erner.n o),  Oct 04 , 1 996 .
*
* Some ada ptations  f or  N FS  su pport . 
 *  Ola fKir ch  (o kir@m o nad.sw b.de) , De c19 9 6, *
 * F ix e d  /pr oc /l ocks  in te rface  sot hat  we can 't overru n t h e bu ff er  we are  handed.
 * An dy Walker(a ndy @lysak e r .kvaerne r.no), May 12, 1997.
 *  *  Use  sl ab al loca tor inste adof kma llo c /kfree .
 * Use g en eri c listi m pl eme nt ation from < lin ux/li st .h>. 
 *  Sp ed up posix_locks_ d ead lock by onlycon side r i ng  bl o ck e d l oc k s.*   Matthew Wilco x <willy@d eb i an .org
 fcntl().
_* _Andy Walker (andy@lysaker.kvaerner.no), April_29, 1996.
_*
_* _Allow_only one type_of locking scheme_(FL_POSIX or FL_FLOCK) to_be in use
_*_ for a given file at a time. Changed the CONFIG_LOCK_MANDATORY scheme to
 *__guarantee sensible_behaviour_in_the case where file system_modules might
 *  be_compiled with_different options than the kernel itself.
 * _Andy_Walker (andy@lysaker.kvaerner.no), May_15, 1996.
 *
 *  Added a couple of_missing wake_up() calls. Thanks to Thomas_Meckel
 * _(Thomas.Meckel@mni.fh-giessen.de)_for_spotting this.
 * _Andy Walker (andy@lysaker.kvaerner.no), May 15, 1996.
_*
 *  Changed FL_POSIX locks_to use the block list in the_same way as FL_FLOCK
 * _locks. Changed process synchronisation to_avoid dereferencing_locks that
 *  have_already been freed.
_* _Andy Walker (andy@lysaker.kvaerner.no),_Sep 21, 1996.
 *
 * _Made the block_list a circular list to minimise_searching_in the list.
_*__Andy Walker_(andy@lysaker.kvaerner.no), Sep 25,_1996.
_*
 *__Made mandatory locking a mount option._Default_is not to allow mandatory
 * _locking.
 *  Andy_Walker_(andy@lysaker.kvaerner.no), Oct 04, 1996.
_*
 *  Some adaptations_for NFS support.
 *  Olaf_Kirch (okir@monad.swb.de),_Dec 1996,
_*
 *  Fixed /proc/locks interface so that we can't overrun_the buffer we are handed.
 *_ Andy Walker (andy@lysaker.kvaerner.no),_May 12,_1997.
_*
 * _Use_slab allocator_instead of kmalloc/kfree.
 *  Use generic_list implementation_from <linux/list.h>.
 *  Sped up_posix_locks_deadlock by only considering_blocked_locks.
 *  Matthew Wilcox <willy@debian.org