linux/fs/locks.c
<<
>>
Prefs
   1/*
   2 *  linux/fs/locks.c
   3 *
   4 *  Provide support for fcntl()'s F_GETLK, F_SETLK, and F_SETLKW calls.
   5 *  Doug Evans (dje@spiff.uucp), August 07, 1992
   6 *
   7 *  Deadlock detection added.
   8 *  FIXME: one thing isn't handled yet:
   9 *      - mandatory locks (requires lots of changes elsewhere)
  10 *  Kelly Carmichael (kelly@[142.24.8.65]), September 17, 1994.
  11 *
  12 *  Miscellaneous edits, and a total rewrite of posix_lock_file() code.
  13 *  Kai Petzke (wpp@marie.physik.tu-berlin.de), 1994
  14 *  
  15 *  Converted file_lock_table to a linked list from an array, which eliminates
  16 *  the limits on how many active file locks are open.
  17 *  Chad Page (pageone@netcom.com), November 27, 1994
  18 * 
  19 *  Removed dependency on file descriptors. dup()'ed file descriptors now
  20 *  get the same locks as the original file descriptors, and a close() on
  21 *  any file descriptor removes ALL the locks on the file for the current
  22 *  process. Since locks still depend on the process id, locks are inherited
  23 *  after an exec() but not after a fork(). This agrees with POSIX, and both
  24 *  BSD and SVR4 practice.
  25 *  Andy Walker (andy@lysaker.kvaerner.no), February 14, 1995
  26 *
  27 *  Scrapped free list which is redundant now that we allocate locks
  28 *  dynamically with kmalloc()/kfree().
  29 *  Andy Walker (andy@lysaker.kvaerner.no), February 21, 1995
  30 *
  31 *  Implemented two lock personalities - FL_FLOCK and FL_POSIX.
  32 *
  33 *  FL_POSIX locks are created with calls to fcntl() and lockf() through the
  34 *  fcntl() system call. They have the semantics described above.
  35 *
  36 *  FL_FLOCK locks are created with calls to flock(), through the flock()
  37 *  system call, which is new. Old C libraries implement flock() via fcntl()
  38 *  and will continue to use the old, broken implementation.
  39 *
  40 *  FL_FLOCK locks follow the 4.4 BSD flock() semantics. They are associated
  41 *  with a file pointer (filp). As a result they can be shared by a parent
  42 *  process and its children after a fork(). They are removed when the last
  43 *  file descriptor referring to the file pointer is closed (unless explicitly
  44 *  unlocked). 
  45 *
  46 *  FL_FLOCK locks never deadlock, an existing lock is always removed before
  47 *  upgrading from shared to exclusive (or vice versa). When this happens
  48 *  any processes blocked by the current lock are woken up and allowed to
  49 *  run before the new lock is applied.
  50 *  Andy Walker (andy@lysaker.kvaerner.no), June 09, 1995
  51 *
  52 *  Removed some race conditions in flock_lock_file(), marked other possible
  53 *  races. Just grep for FIXME to see them. 
  54 *  Dmitry Gorodchanin (pgmdsg@ibi.com), February 09, 1996.
  55 *
  56 *  Addressed Dmitry's concerns. Deadlock checking no longer recursive.
  57 *  Lock allocation changed to GFP_ATOMIC as we can't afford to sleep
  58 *  once we've checked for blocking and deadlocking.
  59 *  Andy Walker (andy@lysaker.kvaerner.no), April 03, 1996.
  60 *
  61 *  Initial implementation of mandatory locks. SunOS turned out to be
  62 *  a rotten model, so I implemented the "obvious" semantics.
  63 *  See 'Documentation/filesystems/mandatory-locking.txt' for details.
  64 *  Andy Walker (andy@lysaker.kvaerner.no), April 06, 1996.
  65 *
  66 *  Don't allow mandatory locks on mmap()'ed files. Added simple functions to
  67 *  check if a file has mandatory locks, used by mmap(), open() and creat() to
  68 *  see if system call should be rejected. Ref. HP-UX/SunOS/Solaris Reference
  69 *  Manual, Section 2.
  70 *  Andy Walker (andy@lysaker.kvaerner.no), April 09, 1996.
  71 *
  72 *  Tidied up block list handling. Added '/proc/locks' interface.
  73 *  Andy Walker (andy@lysaker.kvaerner.no), April 24, 1996.
  74 *
  75 *  Fixed deadlock condition for pathological code that mixes calls to
  76 *  flock() and fcntl().
  77 *  Andy Walker (andy@lysaker.kvaerner.no), April 29, 1996.
  78 *
  79 *  Allow only one type of locking scheme (FL_POSIX or FL_FLOCK) to be in use
  80 *  for a given file at a time. Changed the CONFIG_LOCK_MANDATORY scheme to
  81 *  guarantee sensible behaviour in the case where file system modules might
  82 *  be compiled with different options than the kernel itself.
  83 *  Andy Walker (andy@lysaker.kvaerner.no), May 15, 1996.
  84 *
  85 *  Added a couple of missing wake_up() calls. Thanks to Thomas Meckel
  86 *  (Thomas.Meckel@mni.fh-giessen.de) for spotting this.
  87 *  Andy Walker (andy@lysaker.kvaerner.no), May 15, 1996.
  88 *
  89 *  Changed FL_POSIX locks to use the block list in the same way as FL_FLOCK
  90 *  locks. Changed process synchronisation to avoid dereferencing locks that
  91 *  have already been freed.
  92 *  Andy Walker (andy@lysaker.kvaerner.no), Sep 21, 1996.
  93 *
  94 *  Made the block list a circular list to minimise searching in the list.
  95 *  Andy Walker (andy@lysaker.kvaerner.no), Sep 25, 1996.
  96 *
  97 *  Made mandatory locking a mount option. Default is not to allow mandatory
  98 *  locking.
  99 *  Andy Walker (andy@lysaker.kvaerner.no), Oct 04, 1996.
 100 *
 101 *  Some adaptations for NFS support.
 102 *  Olaf Kirch (okir@monad.swb.de), Dec 1996,
 103 *
 104 *  Fixed /proc/locks interface so that we can't overrun the buffer we are handed.
 105 *  Andy Walker (andy@lysaker.kvaerner.no), May 12, 1997.
 106 *
 107 *  Use slab allocator instead of kmalloc/kfree.
 108 *  Use generic list implementation from <linux/list.h>.
 109 *  Sped up posix_locks_deadlock by only considering blocked locks.
 110 *  Matthew Wilcox <willy@debian.org>, March, 2000.
 111 *
 112 *  Leases and LOCK_MAND
 113 *  Matthew Wilcox <willy@debian.org>, June, 2000.
 114 *  Stephen Rothwell <sfr@canb.auug.org.au>, June, 2000.
 115 */
 116
 117#include <linux/capability.h>
 118#include <linux/file.h>
 119#include <linux/fdtable.h>
 120#include <linux/fs.h>
 121#include <linux/init.h>
 122#include <linux/module.h>
 123#include <linux/security.h>
 124#include <linux/slab.h>
 125#include <linux/syscalls.h>
 126#include <linux/time.h>
 127#include <linux/rcupdate.h>
 128#include <linux/pid_namespace.h>
 129#include <linux/hashtable.h>
 130#include <linux/percpu.h>
 131#include <linux/lglock.h>
 132
 133#include <asm/uaccess.h>
 134
 135#define IS_POSIX(fl)    (fl->fl_flags & FL_POSIX)
 136#define IS_FLOCK(fl)    (fl->fl_flags & FL_FLOCK)
 137#define IS_LEASE(fl)    (fl->fl_flags & FL_LEASE)
 138
 139static bool lease_breaking(struct file_lock *fl)
 140{
 141        return fl->fl_flags & (FL_UNLOCK_PENDING | FL_DOWNGRADE_PENDING);
 142}
 143
 144static int target_leasetype(struct file_lock *fl)
 145{
 146        if (fl->fl_flags & FL_UNLOCK_PENDING)
 147                return F_UNLCK;
 148        if (fl->fl_flags & FL_DOWNGRADE_PENDING)
 149                return F_RDLCK;
 150        return fl->fl_type;
 151}
 152
 153int leases_enable = 1;
 154int lease_break_time = 45;
 155
 156#define for_each_lock(inode, lockp) \
 157        for (lockp = &inode->i_flock; *lockp != NULL; lockp = &(*lockp)->fl_next)
 158
 159/*
 160 * The global file_lock_list is only used for displaying /proc/locks, so we
 161 * keep a list on each CPU, with each list protected by its own spinlock via
 162 * the file_lock_lglock. Note that alterations to the list also require that
 163 * the relevant i_lock is held.
 164 */
 165DEFINE_STATIC_LGLOCK(file_lock_lglock);
 166static DEFINE_PER_CPU(struct hlist_head, file_lock_list);
 167
 168/*
 169 * The blocked_hash is used to find POSIX lock loops for deadlock detection.
 170 * It is protected by blocked_lock_lock.
 171 *
 172 * We hash locks by lockowner in order to optimize searching for the lock a
 173 * particular lockowner is waiting on.
 174 *
 175 * FIXME: make this value scale via some heuristic? We generally will want more
 176 * buckets when we have more lockowners holding locks, but that's a little
 177 * difficult to determine without knowing what the workload will look like.
 178 */
 179#define BLOCKED_HASH_BITS       7
 180static DEFINE_HASHTABLE(blocked_hash, BLOCKED_HASH_BITS);
 181
 182/*
 183 * This lock protects the blocked_hash. Generally, if you're accessing it, you
 184 * want to be holding this lock.
 185 *
 186 * In addition, it also protects the fl->fl_block list, and the fl->fl_next
 187 * pointer for file_lock structures that are acting as lock requests (in
 188 * contrast to those that are acting as records of acquired locks).
 189 *
 190 * Note that when we acquire this lock in order to change the above fields,
 191 * we often hold the i_lock as well. In certain cases, when reading the fields
 192 * protected by this lock, we can skip acquiring it iff we already hold the
 193 * i_lock.
 194 *
 195 * In particular, adding an entry to the fl_block list requires that you hold
 196 * both the i_lock and the blocked_lock_lock (acquired in that order). Deleting
 197 * an entry from the list however only requires the file_lock_lock.
 198 */
 199static DEFINE_SPINLOCK(blocked_lock_lock);
 200
 201static struct kmem_cache *filelock_cache __read_mostly;
 202
 203static void locks_init_lock_heads(struct file_lock *fl)
 204{
 205        INIT_HLIST_NODE(&fl->fl_link);
 206        INIT_LIST_HEAD(&fl->fl_block);
 207        init_waitqueue_head(&fl->fl_wait);
 208}
 209
 210/* Allocate an empty lock structure. */
 211struct file_lock *locks_alloc_lock(void)
 212{
 213        struct file_lock *fl = kmem_cache_zalloc(filelock_cache, GFP_KERNEL);
 214
 215        if (fl)
 216                locks_init_lock_heads(fl);
 217
 218        Pth different options than the I;ve checked for ="L218" class="li2#L1192 id="L208" class="line" name="ptors now<
EXPORT_SYMBOL_GPck_cache, loc="sref">file_lock *

 20> 16codepriv 21k *locks_init_lock_heads(struct file_lock *
 148        if (fl-> 21
 148        if (fl-> 16codepriv 21k * 16codepriv 21a> *fl
 8"> 148        if (fl-> 16codepriv 21k * 16codepriv 21a> *class="sref">locks_init_lock_heads( *<
 8"> 148        if (fl->lockp !=  21
INIT_HLIST_NODE(&fl->lockp != >
>
>
EXPORT_SYMBOL_GPck_cache, loc="sref> 16codepriv 21k * 122
>
/* Allocate an empty lock struc"L134"> 124
 20se se_lock *locks_init_lock_heads(struct file_lock *FL_POSI2)
FL_FLOC2)
, locnit_waitquommev1k *init_waitqueue_head(&fl-> 21)
, INIT_LIST_HEAD(&fl->INBUG_ON, ePU(struct ePIST_NODE" class="sref">INIT_HLIST_NODE(&fl->f2)
 142{
 20> 16codepriv 21k *locks_init_lock_heads();
kmem_cache_zalloc( 12}
 123
EXPORT_SYMBOLk_cache, loc="srefse se_lock * 12)
 142{
 203stat  locks_init_lock_heads(struct file_lock *)
F_UNLC2;
fl->codsesds" class="sref">locks_init_lock_heads(, 0, sizeofclass="sref">locks_init_lock_heads(struct )
IN216                locks_init_lock_heads(F_RDLC2;
fl_typ2;
 152}
EXPORT_SYMBOLk_cache, loc="sref3stat   122
 20copyepriv 21k *locks_init_lock_heads(struct (struct (, lass="sref">locks_init_lock_heads(struct file_lock *2= 45;
 125
 146        if (fl->lockp<2a>) \
 148        if (fl->fl->F_UNLC2)
 8"> 148        if (fl->fl->locks_init_lock_heads(
fl-> 148        if (fl->/*<2span>

 146        if (fl->
fl-> 146        if (fl-> 12span>

 */<2span>
 182);
 127
fl->__"+codecopye="srds" class="sref">locks_init_lock_heads(struct (struct (,  Spet lass="sref">locks_init_lock_heads(struct file_lock */*<2span>
ef">fl-> hre 148        if (ef">fl-> hrea href="+code=fl" class=ck_lock.<2span>
(struct  148        if ((struct 
(struct lockp != 
fl-> 148        if (fl->
fl-> 148        if (fl-> *<2span>
(struct (fl-> 148        if (fl->(struct ((struct  148        if ((struct (struct (fl->lockp !=  12span>
(struct (fl->lockp != /*<2span>
EXPORT_SYMBOLk_cache, loc__"+codecopye="sref">fl->__"+codecopye="srds" );
 121
 20copye="sref">fl->"+codecopye="srds" class="sref">locks_init_lock_heads(struct (struct (, lass="sref">locks_init_lock_heads(struct file_lock */*<2span>
 20> 16codepriv 21k *locnewds(struct ( *<2span>
 *<2span>
fl->__"+codecopye="srds" cline" name="L14newds(struct (, lass="sref">locks_init_lock_heads(
(struct ((struct  148        if ((struct  12span>
(struct (fl-> 148        if (fl->
INnewds(struct (fl-> 146        if (fl-> *<2span>

 20copyepriv 21k *locks_init_lock_heads(


EXPORT_SYMBOLk_cache, loc="srefcopye="sref">fl->"+codecopye="srds"  *<2span>

fl->inef="d="L1154" class="line" na hre_transl 21_cmPU(struct (struct 
cmPU(struct F>(struct 
);
F>(struct 
                return F> & >
  WR            return F>, 
 147                return fl_link3/a>);
fl_block3/a>);
EINVALk_cache, 
 203}
 239

fl->locks_init_locds(struct  = &=ill/a>(, lass="sref">locks_init_lock_heads(struct fl->"+co/a>(,ate an empty lock stru3tad_mostl3void)
(struct {
);
locks_init_lock_heads(struct file_lock *code=F_UNLCK" class="sr3"L214"> 234
(struct (struct fl_link3)
);
 1474tatic int 
 203ed for ="L218" class="li3#L11931id="L149" claclass="sref">INIT_HLIST_NODE(&da href="+code=fl""+code">file_lock *lockp != 
ENOMEMk_cache, 
 148        if ((struct  = &=ill/a>(code=F_UNLCK" class="sr3eP_KERNEL3
 148        if ((struct (struct (struct (code=F_UNLCK" class="sr3eL214"> 23
 148        if (fl->fl_flags &  148        if (fl-> *3
 148        if ((struct  & OFFSET_MAff="+code=F_UNLCK" class="sr3m8l_block3
fl->"+co/a>( 146        if (code=F_UNLCK" class="sr3table.h>
>
 132
fl->locks_init_lock_heads(struct file_lock *,s="ng href="+code=fl"4tatic int >
 134
FL_POSI3)
F                return FL_FLOC3)
F  WR            return )
F                return 
 148        if (fl->f3)
);
EINVALk_cache,  13}
 133
 13)
FL_POSI3{
FL_FLOC3)
 * * Allocate an empty lock stru3f">F_UNLC3;
 * want to be holding t3=;ve chec3)
F_RDLC3;
fl->locks_init_locds(struct  = &=ill/a>(, lass="sref">locks_init_lock_heads(struct file_lock *,ate an empty lock stru3fose() on3;
locks_init_="sref">fl->file_lock/a> * 153}
 132
fl->starsf="+, lass="sref">locenPU(struct 3= 45;
file_lock/a> * * 135
FSEEK_SETk *lockp<3a>) \
fl->starsf="+da 0code=F_UNLCK" class="sr3_">F_UNLC3)
FSEEK_CURk */*<3span>
fl->starsf="+da ile_lock" class=illockp = &=ill/a>( = &=_posf="+code=fl_type" class="sr3s, so we<3span>
FSEEK_EclU(struct  13span>
fl->starsf="+da ile_lock" classi_sizef="+cref">fl->i_sizef="+cds" c class="line" na hreine" ds(struct  = &=ill/a>(c
);
EINVALk_cache,  137

 * -1996 leavntry frn ho"ts thel_lends="l 0 un79" cld;* Allocate an empty lock stru3tection.<3span>
 * -2001 79" clsed me=/* Allocate an empty lock stru3ck_lock.<3span>
fl->starsf="+d+a href="+code=fl""sref">file_lock/a> *fl->fl->starsf="+ds="l 0fate an empty lock stru3e lock a<3span>
EINVALk_cache,  148        if ((struct  & OFFSET_MAff="+code=F_UNLCK" class="sr3ment"> *<3span>
file_lock/a> *fl->
 enPU(struct fl->starsf="+d+ href="+code=fl""sref">file_lock/a> *fl-> 148        if ((struct (struct  13span>
file_lock/a> *fl->
fl->starsf="+d- 1code=F_UNLCK" class="sr3ITS  3    7
 148        if ((struct (struct fl->starsf="+d+a href="+code=fl""sref">file_lock/a> *fl->fl->starsf="+ds="l 0fate an empty lock stru3ment">/*<3span>
EINVALk_cache,  *<3span>
 148        if (fl->fl->starsf="+; lacL67" class="line" nam/* we* contre acquisolute posi86 *<3span>
 146        if ((struct  148        if (fl->
EOVERFLOWU(struct  13span>
IN8"> 148        if (ef">fl-> hreda href="+code=fl"curr nam(struct  = &= hrsf="+code=F_UNLCK" class="sr3ment"> *<3span>
 148        if ((struct (struct (struct (code=F_UNLCK" class="sr3 fields,<3span>
 148        if ((struct  = &=ill/a>(code=F_UNLCK" class="sr3e fields<3span>
 148        if (fl-> * ef">fl->ef""> * /a>(code=F_UNLCK" class="sr3eent">/*<3span>
 148        if (fl->lockp != 
 148        if (fl->lockp !=  *<3span>

 147aa ignss="sref">fl->file_lock *, href="+code=fl""sref">file_lock/a> *fl->


fl->BITS_PER_LONG hre);
fl->locks_init_locds(struct  = &=ill/a>(, lass="sref">locks_init_lock_heads(struct file_lock *,ate an empty lock stru4l1ck_lock4/pan>
locks_init_="srspan>
->file_lock/a> *;

fl->starsf="+a href="+code=fl" class4e4d_mostl4

file_lock/a> * *fl_link4/a>);
FSEEK_SETk *fl_block4/a>);
fl->starsf="+da 0code=F_UNLCK" class="sr4"8l_block4/pan>
 204}
FSEEK_CURk * 249
fl->starsf="+da ile_lock" class=illockp = &=ill/a>( = &=_posf="+code=fl_type" class="sr4ture. */<4span>
FSEEK_EclU(struct {
fl->starsf="+da ile_lock" classi_sizef="+cref">fl->i_sizef="+cds" c class="line" na hreine" ds(struct  = &=ill/a>(c);
fl_link4)
EINVALk_cache, 
 204ed for ="L218" class="li4#L11941id="L149" claclass="sref">INstarsref">fl->starsf="+d+a href="+code=fl""sref">file_lock/a> *fl->fl->starsf="+ds="l 0fate an empty lock stru4lose() on4
EINVALk_cache,  148        if ((struct  & OFFSET_MAff="+code=F_UNLCK" class="sr4inherited4
file_lock/a> *fl->
 148        if ((struct fl->starsf="+d+ href="+code=fl""sref">file_lock/a> *fl-> 24
file_lock/a> *fl->fl_link4
 8"> 148        if ((struct fl->starsf="+d- 1code=F_UNLCK" class="sr4efl_block4
fl->starsf="+d+a href="+code=fl""sref">file_lock/a> *fl->fl->starsf="+ds="l 0fate an empty lock stru4l208"> 204
EINVALk_cache, >
 148        if (fl->fl->starsf="+; lacL67" class="line" nam/* we* contre acquisolute posi86>
 146        if ((struct  148        if (fl-> 142
EOVERFLOWU(struct  244
 148        if (ef">fl-> hreda href="+code=fl"curr nam(struct  = &= hrsf="+code=F_UNLCK" class="sr4">FL_POSI4)
 148        if ((struct (struct (struct (code=F_UNLCK" class="sr4">FL_FLOC4)
 148        if ((struct  = &=ill/a>(code=F_UNLCK" class="sr4"8l_block4)
 148        if (fl-> * ef">fl->ef""> * /a>(code=F_UNLCK" class="sr4";ve chec48
IN8"> 148        if (fl->lockp != f4)
 148        if (fl->lockp != {
);
 147aa ignss="sref">fl->file_lock *, href="+code=fl""sref">file_lock/a> *fl-> 14}
 143
 24)
FL_POSI4{
FL_FLOC4)
fl->"6code=leas_callbasrds" class="sref">locks_init_lock_heads(struct file_lock *fate an empty lock stru4f">F_UNLC4;
)
INkila hasyncsref">file_lockkila hasyncds" ce=fl_ss="line" name=8"> 148        if (file_lockfa hasyncds" , href="+code=fl"SIGIOU(struct fl->POLL_MSGf="+F_RDLC4;
;
 154}
locks_initahre_manager_opera86fl->"hre_manager_opera86fl->"6codemanager_ops hre 142
fl->"me=leas hrefl->"6code=leas_callbasrds" ,ate an empty lock stru4enablefl->fl->"6codemoPifyds" ,ate an empty lock stru4eL214"> 24= 45;
FL_POSI45
lockp<4a>) \
F_UNLC4)

/*<4span>
fl->"6codei_inds" class="sref">locks_init_locds(struct  = &=ill/a>(, ="ng href="+code=fl"4tatic int locks_init_lock_heads(struct file_lock *

fl->file_lock *, href="+code=fl"4tatic int  14span>
EINVALk_cache, 4span>
 148        if (ef">fl-> hreda href="+code=fl"curr nam(struct  = &= hrsf="+code=F_UNLCK" class="sr4ck_lglock4/a>);
 148        if ((struct (struct (struct (code=F_UNLCK" class="sr4lock_list4/a>);
F_UNLC47
 148        if ((struct  = &=ill/a>(code=F_UNLCK" class="sr4";ve chec4span>
IN8"> 148        if (fl->fl->ef"LEASE/a>(code=F_UNLCK" class="sr4tection.<4span>
 148        if (fl-> 148        if ((struct  & OFFSET_MAff="+code=F_UNLCK" class="sr4cock via<4span>
 148        if (fl->lockp != 
 148        if (fl->fl->"6codemanager_ops hrer href="+code=fl" class4es held.<4span>
 *<4span>


 14span>
locks_init_lock_heads(struct fl->"6code=lockds" class="sref">locks_init_locds(struct  = &=ill/a>(, ="ng href="+code=fl"4tatic int 
  4    7
locks_init_lock_heads(struct file_lock *da href="+code=fl""+code">file_lock *fl->erro>a> *da -"" name="L218">ENOMEMk_cache, /*<4span>
lockp != 
 147ERR_PTRk *ef">fl->erro>a> *fcode=F_UNLCK" class="sr4Hent"> *<4span>
 *<4span>
ef">fl->erro>a> *da "line" name="L1"6codei_inef">fl->"6codei_inds" cile_lock" class=illockp = &=ill/a>(, href="+code=fl"4tatic int file_lock *fl->erro>a> *f1212" class="line" name=4 L167"> 14span>
(struct <"+codefreck_heads" cile_lock" class="sref">file_lock * 147ERR_PTRk *ef">fl->erro>a> *fcode=F_UNLCK" class="sr4ment"> *<4span>

 1476"> 146        if (code=F_UNLCK" class="sr4e fields<4span>
/*<4span>

 * want to be holding t4eent"> *<4span>
fl->inef="d="L1154" class="line" n"+codeoverlapds(struct <"+codeoverlapds" class="sref">locks_init_lock_heads(struct locks_init_lock_heads(struct 
(struct  146        2fl->
(struct  146        1f="+fl->
;

mment"> * want to be holding t5e4d_mostl5
ef">fl->posixeslocsont">ds" class="sref">locks_init_lock_heads(struct locks_init_lock_heads(struct fl_link5/a>);
fl_block5/a>);
 146        1f="+fl-> 146        1f="+fl->ef">fl->lm_linparcsont">
 1476"2> 146        2fl-> 146        1f="+fl->
 146        1f="+fl->ef">fl->lm_linparcsont"> 146        1f="+, ile_lock" class="2> 146        2 259
 146        1f="+ef">fl-> hredaa href="+code=fl"6"2> 146        2ef">fl-> hre_ate an empty lock stru5"1ck_lock5span>
{
fl->inef="d="L1ass=ate an empty lock stru5F5d_mostl54
fl->"hredeinsert_globalan clsds" class="sref">locks_init_lock_heads(struct file_lock *fl_link5)
);
fl->"gef="alan clds" ce=fl_ss="line" name=8 href="+_lg_heads(struct 
 148        if (fl-> *da "line" name="L1smp_processor_iPU(struct  205ed for ="L218" class="li5#L11951id="L149" claclass="sref">INhlist_add_h"+cref">fl->hlist_add_h"+cds" ce=fl_ss="line" name=8"> 148        if (fl->(, href="+code=fl"4his_cpu_pt>ef">fl->4his_cpu_pt>ds" ce=fl_ss="line" name=8 href="+_listds(struct fl->"gef="alaunn clds" ce=fl_ss="line" name=8 href="+_lg_heads(struct 

fl->inef="d="L1ass=ate an empty lock stru5eL214"> 25
fl->"hrededelete_globalan clsds" class="sref">locks_init_lock_heads(struct file_lock *fl_link5


 205
>
 * want to be holding t5tose() on5>>
>
fl->hlist_unhashedds" ce=fl_ss="line" name=8"> 148        if (fl->() 152
>
fl->lgef="alan cl_cpuds" ce=fl_ss="line" name=8 href="+_lg_heads(struct file_lock *fl-> *f_ate an empty lock stru5cL214"> 254
fl->hlist_delei_inds" ce=fl_ss="line" name=8"> 148        if (fl->()_ate an empty lock stru5c>fl_link5)
fl->lgef="alaunn cl_cpuds" ce=fl_ss="line" name=8 href="+_lg_heads(struct file_lock *fl-> *f_ate an empty lock stru5cfl_block5)
)

f5)
_keyef">fl->posixeont">_keyds" class="sref">locks_init_lock_heads(struct file_lock *{
);
 148        if (fl-> 148        if (fl->_keyef">fl->lm_ont">_keya> * 15}
 148        if (fl->_keyef">fl->lm_ont">_keya> *cile_lock" class="sref">file_lock * 153
 148        if (ef">fl-> hre_ate an empty lock stru5"L214"> 25)
FL_POSI5{
FL_FLOC5)
fl->inef="d="L1ass=ate an empty lock stru5f">F_UNLC5;
fl->"+codeinsert_globalab"+coedds" class="sref">locks_init_lock_heads(struct ef">fl->wait">a> *)
F_RDLC5;
fl->hash_adda> *cile_lock" classb"+coed_hashef">fl->b"+coed_hashef">fl->wait">a> *fl->(, href="+code=fl"posixeont">_keyef">fl->posixeont">_keyds" cile_lock" classwait">ef">fl->wait">a> *< 155}
 152
fl->inef="d="L1ass=ate an empty lock stru5enablefl->"+codedelete_globalab"+coedds" class="sref">locks_init_lock_heads(struct ef">fl->wait">a> * 25= 45;
FL_POSI55
fl->hash_delds" ce=fl_ss="line" name=wait">ef">fl->wait">a> *fl->(F_UNLC5)

 from b"+coer's b"+co listmment"> * want to be holding t5ment">/*<5span>
 * want to be holding t5mose() on5span>

 * want to be holding t5mL132"> 15span>
(struct <__"+codedelete_b_heads" class="sref">locks_init_lock_heads(struct ef">fl->wait">a> *5span>
);
fl->"+codedelete_globalab"+coedds" cile_lock" classwait">ef">fl->wait">a> *fl->list_delei_inds" ce=fl_ss="line" name=wait">ef">fl->wait">a> *(struct  *F_UNLC57
ef">fl->wait">a> *fl-> *da "line" name="L1ss="sref">lockp != 


locks_init_lock_heads(struct ef">fl->wait">a> *

fl->b"+coed_f="+_l cla> *(struct <__"+codedelete_b_heads" cile_lock" classwait">ef">fl->wait">a> * *<5span>
fl->spinkunn clds" ce=fl_ss="line" name=b"+coed_f="+_l clef">fl->b"+coed_f="+_l cla> *
 15span>
 into b"+coer's b"+co listmment"> * want to be holding t5m;ve chec5span>
 * want to be holding t5ITS  5    7
);
 * want to be holding t5Hock via<51
 * want to be holding t5H lock a<5span>
 * want to be holding t5Hs held.<5span>
nt"> * want to be holding t5Hent"> *<5span>
 * want to be holding t5Hk_lglock5span>
 * want to be holding t5Hock_list5span>
 15span>
(struct <__"+codeinsert_b_heads" class="sref">locks_init_lock_heads(struct fl->b"+coe>a> *,ate an empty lock stru5H;ve chec5span>
locks_init_lock_heads(struct ef">fl->wait">a> * *<5span>

fl->BUG_ONds" c!ss="line" name=list_emptyef">fl->list_emptyds" ce=fl_ss="line" name=wait">ef">fl->wait">a> *(struct  *<ef">fl->wait">a> *fl-> *da "line" name="L1b"+coeref">fl->b"+coe>a> *code=F_UNLCK" class="sr5e lock a<5span>
file_lock/ist_add_tai"ds" ce=fl_ss="line" name=wait">ef">fl->wait">a> *(struct  *, e=fl_ss="line" name=b"+coeref">fl->b"+coe>a> *(struct  * * ef">fl->IS""> * a> *cile_lock" classb"+coeref">fl->b"+coe>a> *) *<5span>
fl->"+codeinsert_globalab"+coedds" cile_lock" classwait">ef">fl->wait">a> *

(struct <"+codeinsert_b_heads" class="sref">locks_init_lock_heads(struct fl->b"+coe>a> *,ate an empty lock stru6lock_lock6/a>);
locks_init_lock_heads(struct ef">fl->wait">a> *
;
fl->b"+coed_f="+_l cla> *(struct <__"+codeinsert_b_heads" cile_lock" classb"+coeref">fl->b"+coe>a> *,aline" name="L20wait">ef">fl->wait">a> *fl->spinkunn clds" ce=fl_ss="line" name=b"+coed_f="+_l clef">fl->b"+coed_f="+_l cla> *fl_link6/a>);
fl_block6/a>);

 * want to be holding t6"9l_block6/pan>
 * want to be holding t6"L209"> 269
 * want to be holding t6"1ck_lock6span>
fl->"hredewake_up_b_heasds" class="sref">locks_init_lock_heads(struct fl->b"+coe>a> *{
);

);
nt"> * want to be holding t6"8l_block67
nt"> * want to be holding t6"9l_block6ed for ="L218" class="li6#L11961id="L189" class="line" name=========* aft"> acquiring  acqb"+coed_f="+_l clmment"> * want to be holding t6ptors now6

fl->list_emptyds" ce=fl_ss="line" name=b"+coeref">fl->b"+coe>a> *(struct  *<

(struct fl->b"+coed_f="+_l cla> * 26
fl->list_emptyds" ce=fl_ss="line" name=b"+coeref">fl->b"+coe>a> *(struct  *<<1212" class="line" name=6e>fl_link6
locks_init_lock_heads(struct ef">fl->wait">a> *code=F_UNLCK" class="sr6efl_block6
ef">fl->wait">a> *da "line" name="L1"ist_first_entryef">fl->list_first_entryds" ce=fl_ss="line" name=b"+coeref">fl->b"+coe>a> *(struct  *,ate an empty lock stru6m208"> 206
locks_init_lock_heads(struct (struct <__"+codedelete_b_heads" cile_lock" classwait">ef">fl->wait">a> *ef">fl->wait">a> *fl->ef">fl->wait">a> *fl->fl->"m_notifya> *>
ef">fl->wait">a> *fl->fl->"m_notifya> *cile_lock" classwait">ef">fl->wait">a> *fl->wake_upds" ce=fl_ss="line" name=wait">ef">fl->wait">a> *fl-> * 264
fl_link6)
fl->spinkunn clds" ce=fl_ss="line" name=b"+coed_f="+_l clef">fl->b"+coed_f="+_l cla> *)

f6)
 * want to be holding t6=ose() on6{
);
}
 163
fl->"+codeinsert_l clds" class="sref">locks_init_lock_heads(struct (struct locks_init_lock_heads(struct file_lock * 26)
FL_POSI6{
 148        if ((struct  *da "line" name="L1getspiPU(struct  *cile_lock" classtask_tgiPU(struct  *cile_lock" classcurr nam(struct FL_FLOC6)
F_UNLC6;
)
IN8"> 148        if (fl-> *da file_lock" classposds(struct F_RDLC6;
(struct  146        if (code=F_UNLCK" class="sr6fose() on6;
 156}
fl->"hredeinsert_globalan clsds" cile_lock" class="sref">file_lock * 26= 45;
FL_POSI65
 * want to be holding t6f>FL_FLOC6a>) \
 * want to be holding t6f">F_UNLC6)
 * want to be holding t6ment">/*<6span>
 * want to be holding t6mose() on6span>

 16span>
fl->"+codedelete_l clds" class="sref">locks_init_lock_heads(struct fl->this; *
6span>
locks_init_lock_heads(struct file_lock *da file_lock" classthis;fl->this; *code=F_UNLCK" class="sr6ck_lglock6/a>);
);
fl->"hrededelete_globalan clsds" cile_lock" class="sref">file_lock *F_UNLC67

fl->this; *da href="+code=fl"8"> 146        if (fl-> *code=F_UNLCK" class="sr6tection.<6span>
 148        if (fl-> *da ef="+code=fl" css="sref">lockp != 

 148        if ((struct  *<1212" class="line" name=6e lock a<6span>
(struct file_lock *(struct  *
 148        if ((struct  *da "line" name="L1ss="sref">lockp != 6span>


fl->"hredewake_up_b_heasds" cile_lock" class="sref">file_lock * 16span>
file_lock *  6    7
);

 * want to be holding t6H lock a<6span>
fl->l+codeconflicnds" class="sref">locks_init_lock_heads(struct (struct locks_init_lock_heads(struct fl->sydefla> * *<6span>

fl->sydefla> *(struct  *daa "line" name="L1F_WRLCKU(struct  *
 16span>
(struct  *daa "line" name="L1F_WRLCKU(struct  *
 *<6span>


 *  specific* Allocate an empty lock stru6 i_lock.<6span>
 * want to be holding t6eent"> *<6span>
fl->posixe"+codeconflicnds" class="sref">locks_init_lock_heads(struct (struct locks_init_lock_heads(struct fl->sydefla> *

 *  "+cos ont"d byn acqsloc process do notaconflicn with* Allocate an empty lock stru6y;ve chec6span>
 * want to be holding t7lock_lock7/a>);

 * ef">fl->IS""> * a> *cile_lock" classsydeflef">fl->sydefla> *< ||="line" name="L1posixeslocsont">ef">fl->posixeslocsont">ds" cile_lock" classc llereflm(struct fl->sydefla> *<;


fl->l+codeoverlapds" cile_lock" classc llereflm(struct fl->sydefla> *<

fl->l+codeconflicnds" cile_lock" classc llereflm(struct fl->sydefla> *< 279

 * want to be holding t7t3d_mostl7{
);
fl->flocke"+codeconflicnds" class="sref">locks_init_lock_heads(struct (struct locks_init_lock_heads(struct fl->sydefla> *
fl_link7)
);
 * want to be holding t7"8l_block77
fl->IS"FLOCKa> *cile_lock" classsydeflef">fl->sydefla> *< ||="line" name="L14c llereflm(struct (struct  *daa "line" name="L1sydeflef">fl->sydefla> *(struct  *<
(struct  *de=fl_ href="+code=fl"LOCK_MANDU(struct  *< ||="line" name="L14sydeflef">fl->sydefla> *(struct  *de=fl_ href="+code=fl"LOCK_MANDU(struct  *<

fl->l+codeconflicnds" cile_lock" classc llereflm(struct fl->sydefla> *< 27
fl_link7


fl->posixetest_l clds" class="sref">locks_init_locds(struct (struct locks_init_lock_heads(struct file_lock * 207
>
locks_init_lock_heads(struct (struct locks_initinamem(struct (struct (struct (struct 
(struct (struct (struct (struct (struct (struct (struct (struct (struct fl-> *<1212" class="line" name=7tL214"> 274
 * ef">fl->IS""> * a> *cile_lock" classcflm(struct fl_link7)
fl->posixe"+codeconflicnds" cile_lock" class="sref">file_lock *, ile_lock" classcflm(struct )
 2078
f7)
{
(struct <_e"+codecopyk_heads" cile_lock" class="sref">file_lock *, ile_lock" classcflm(struct (struct  * 148        if ((struct  *da "line" name="L1piP_vn>ef">fl->piP_vn>a> *cile_lock" classcflm(struct (struct  * 173
 27)
 148        if ((struct  *da "line" name="L1F_UNLCKU(struct FL_POSI7{
fl->spinkunn clds" ce=fl_ss="line" name=inamem(struct (struct FL_FLOC7)
F_UNLC7;
 207)
lockpEXPORT_SYMBO"a> *cile_lock" classposixetest_l clef">fl->posixetest_l clds" F_RDLC7;
;
 157}

 17 = 1;
 27= 45;
 * want to be holding t7f>FL_POSI75
 * want to be holding t7f>FL_FLOC7a>) \
 * want to be holding t7f">F_UNLC7)
 * want to be holding t7f208"> 2078
/*<7span>

 * want to be holding t7lock via<7span>
s  o ensureewerare notaabout  o create ament"> * want to be holding t7lnherited7span>
 * want to be holding t7is held.<7span>
 * want to be holding t7iL214"> 27span>
 * want to be holding t7l>FL_POSI7/a>);
 * want to be holding t7l>FL_FLOC7/a>);
 * want to be holding t7l">F_UNLC77
 * want to be holding t7l208"> 207span>
 * want to be holding t7tection.<7span>
 * want to be holding t7tose() on7span>
 * want to be holding t7cock via<7span>
 * want to be holding t7e lock a<7span>
 a few it">a86 * want to be holding t7ts held.<7span>
fl->MAX_DEADLK_ITERATIONSd="L110ate an empty lock stru7t>FL_FLOC7span>
 17span>
 of the given b"+coefleisab"+coing onm "/* Allocate an empty lock stru7m;ve chec7span>
locks_init_lock_heads(struct _is_waiting_fords(struct _is_waiting_fords" class="sref">locks_init_lock_heads(struct (struct  *);
locks_init_lock_heads(struct file_lock *code=F_UNLCK" class="sr7Hock via<71

(struct  *, ile_lock" class="sref">file_lock *, ile_lock" class(struct  *, ile_lock" classposixeont">_keyef">fl->posixeont">_keya> *cile_lock" classb"+coeflds(struct  *<<1212" class="line" name=7Hs held.<7span>
ef">fl->posixeslocsont">ds" cile_lock" class="sref">file_lock *, ile_lock" classb"+coeflds(struct  *<<12" class="line" name=7Htime7span>
 146        if (fl-> *code=F_UNLCK" class="sr7Hk_lglock7span>

lockp !=  17span>

 *<7span>

fl->posixe"+codedead1clads" class="sref">locks_init_lock_heads(struct (struct 
locks_init_lock_heads(struct (struct  *
 *<7span>

(struct  *da "line" name="L1waatsont">_is_waiting_fords(struct _is_waiting_fords" cile_lock" classb"+coeflds(struct  *<<<1212" class="line" name=7Deleting<7span>
fl->MAX_DEADLK_ITERATIONSd="L 17span>
ef">fl->posixeslocsont">ds" cile_lock" classc llereflm(struct (struct  *<<12" class="line" name=8lock_lock8/a>);
;



 any le hos,ebut beforfrany posix lolasmment"> * want to be holding t8>fl_block8/a>);
 * want to be holding t8"8l_block8/pan>
 * want to be holding t8"9l_block8/pan>
 * want to be holding t8"L209"> 289
 * want to be holding t8"1ck_lock8span>
(struct locks_init_locds(struct (struct locks_init_lock_heads(struct (struct );
locks_init_lock_heads(struct (struct  *da "line" name="L1ss="sref">lockp != 
locks_init_lock_heads(struct (struct )
locks_initinamem(struct locks_initinamem(struct (struct (struct (struct  *da 0code=F_UNLCK" class="sr8"8l_block87
(struct  *da 0code=F_UNLCK" class="sr8"9l_block8ed for ="L218" class="li8#L11981id="L51" class="line" name=8ptors now8
(struct fl->fl->FL_ACCESScode<(struct (struct  *d!a "line" name="L1F_UNLCKU(struct 
(struct <"+code llock_heads" c(struct  *(struct 
 28
fl_link8
(struct (struct (struct (struct fl->fl->FL_ACCESScodefl->f ndeconflicn
>
(struct (struct >
locks_init_lock_heads(struct file_lock *da file_lock" classbeforfds(struct >
 * ef">fl->IS""> * a> *cile_lock" class="sref">file_lock *<fl->IS"LEASEa> *cile_lock" class="sref">file_lock *< 284
 146        if ((struct  *(struct (struct  *daa "line" name="L18"> 148        if ((struct  *(struct f8)
(struct  *da 1code=F_UNLCK" class="sr8=ose() on8{
fl->"+codedelete_l clds" cile_lock" classbeforfds(struct  183
 28)
(struct (struct  *daa "line" name="L1F_UNLCKU(struct FL_POSI8{
(struct fl->fl->FL_EXISTScode<(struct  *FL_FLOC8)
(struct  *da -ss="line" name=ENOENTds(struct ;
(struct )
F_RDLC8;
;
 158}
 * want to be holding t8Lnherited82
 * want to be holding t8LL143"> 18 = 1;
 28= 45;
(struct  *<1212" class="line" name=8f>FL_POSI85
fl->spinkunn clds" ce=fl_ss="line" name=inamem(struct (struct (struct F_UNLC8)
(struct (struct (struct  2088
/*<8span>

fl->f ndeconflicn 158span>
(struct (struct 
locks_init_lock_heads(struct file_lock *da file_lock" classbeforfds(struct 
 * ef">fl->IS""> * a> *cile_lock" class="sref">file_lock *< 28span>
fl->IS"LEASEa> *cile_lock" class="sref">file_lock *<F_UNLC87
fl->flocke"+codeconflicnds" cile_lock" classssquestds(struct file_lock *< 208span>
(struct  *da -ss="line" name=EAGAINds(struct 
(struct fl->fl->FL_SLEEPa> *<(struct 
(struct  *da href="+code=fl"FILE_LOCK_DEFERREDU(struct 
fl->"+codeinsert_b_heaa> *cile_lock" class="sref">file_lock *, ile_lock" classssquestds(struct  28span>
(struct 
FL_FLOC8span>
(struct fl->fl->FL_ACCESScode 18span>
(struct 
 *cile_lock" classneweflds(struct  *, ile_lock" classssquestds(struct   8    7
fl->"+codeinsert_l clds" cile_lock" classbeforfds(struct (struct  *);
(struct  *da "line" name="L1ss="sref">lockp != 

(struct 8span>
fl->spinkunn clds" ce=fl_ss="line" name=inamem(struct (struct fl->"+codefrec__heaa> *cile_lock" classneweflds(struct  * 18span>
 *<8span>

(struct  *class="sref">locks_initinamem(struct (struct locks_init_lock_heads(struct (struct locks_init_lock_heads(struct (struct  *
locks_init_lock_heads(struct file_lock *code=F_UNLCK" class="sr8 i_lock.<8span>
locks_init_lock_heads(struct (struct  *da "line" name="L1ss="sref">lockp !=  *<8span>
locks_init_lock_heads(struct (struct  *da "line" name="L1ss="sref">lockp != 
locks_init_lock_heads(struct fl->lefna> *da "line" name="L1ss="sref">lockp != 
locks_init_lock_heads(struct (struct  *da "line" name="L1ss="sref">lockp !=  18span>
locks_init_lock_heads(struct (struct 
(struct  *r href="+code=fl" class9lock_lock9/a>);



a86 * want to be holding t9l4d_mostl9
 * want to be holding t9l5d_mostl9
 * want to be holding t9l6d_mostl9
nt"> * want to be holding t9l7d_mostl9

(struct fl->fl->FL_ACCESScode<
(struct (struct  *d!a "line" name="L1F_UNLCKU(struct  299
(struct fl-> *d!a 0 ||=ile_lock" classssquestds(struct (struct  *d!a "line" name="L1OFFSET_MA ef">fl->OFFSET_MA a> *<<1212" class="line" name=9"1ck_lock9span>
(struct <"+code llock_heads" c(struct  *da "line" name="L1"+code llock_heads(struct <"+code llock_heads" c);

(struct (struct (struct );
 *  holdi and n ok for conflicns. If* Allocate an empty lock stru9F8l_block97
s and the global b"+coed_hashmment"> * want to be holding t9ptors now9

(struct (struct  *d!a "line" name="L1F_UNLCKU(struct 
(struct (struct (struct 
file_lock *da file_lock" classbeforfds(struct 
 * ef">fl->IS""> * a> *cile_lock" class="sref">file_lock *< 29
fl->posixe"+codeconflicnds" cile_lock" classssquestds(struct file_lock *<(struct  *(struct <_e"+codecopyk_heads" cile_lock" classconflheads(struct  *, ile_lock" class="sref">file_lock *(struct >
(struct fl->fl->FL_SLEEPa> *<(struct 
>
 294
fl_link9)
)
(struct )
(struct (struct  *fl->likelyds" c!ss="line" name=posixe"+codedead1claef">fl->posixe"+codedead1clads" cile_lock" classssquestds(struct file_lock *<<<1212" class="line" name=9="sref">f9)
(struct {
fl->_e"+codeinsert_b_heaa> *cile_lock" class="sref">file_lock *, ile_lock" classssquestds(struct );
}
fl->spinkunn clds" ce=fl_ss="line" name=b"+coed_f="+_l clds(struct  * 193
(struct  29)
fl_link9{
FL_FLOC9)
)
(struct  *da 0code=F_UNLCK" class="sr9f">F_RDLC9;
(struct fl->fl->FL_ACCESScode(struct  159}

 19 = 1;
 asn acqnew holdmment"> * want to be holding t9LL214"> 29= 45;
FL_POSI95
FL_FLOC9a>) \
(struct (struct (struct )

/*<9span>
file_lock *da file_lock" classbeforfds(struct  * ef">fl->IS""> * a> *cile_lock" class="sref">file_lock *< ||ate an empty lock stru9mose() on9span>
ef">fl->posixeslocsont">ds" cile_lock" classssquestds(struct file_lock *<<<1212" class="line" name=9m151"> 159span>
(struct  146        if (fl-> *code=F_UNLCK" class="sr9lnherited9span>

 29span>
);
file_lock *da file_lock" classbeforfds(struct ef">fl->posixeslocsont">ds" cile_lock" classssquestds(struct file_lock *<<1212" class="line" name=9m>FL_FLOC9/a>);

 209span>
(struct (struct  *daa "line" name="L18"> 148        if ((struct  *<1212" class="line" name=9tection.<9span>

Allocate an empty lock stru9t151"> 159span>
 * want to be holding t9e lock a<9span>

 148        if ((struct  *d&lhrsile_lock" classssquestds(struct fl-> *d- 1 29span>
(struct  *code=F_UNLCK" class="sr9eop in po9span>
dsAllocate an empty lock stru9e>FL_FLOC9span>
 * want to be holding t9e8l_block9span>
 209span>
 148        if (fl-> *d- 1 a hrsile_lock" classssquestds(struct (struct  *


 29span>
 * want to be holding t9Hk_lglock9span>

 148        if (fl-> *da hrsile_lock" classssquestds(struct fl-> * 148        if (fl-> *da "line" name="L1ssquestds(struct fl-> *code=F_UNLCK" class="sr9I208"> 209span>
 *<9span>
fl-> *da "line" name="L18"> 148        if (fl-> *code=F_UNLCK" class="sr9mASH_BITS9span>
 148        if ((struct  *d&lhrsile_lock" classssquestds(struct (struct  * 148        if ((struct  *da "line" name="L1ssquestds(struct (struct  *code=F_UNLCK" class="sr9m lock a<9span>
(struct  *da "line" name="L18"> 148        if ((struct  *code=F_UNLCK" class="sr9mL214"> 29span>
(struct  *<1212" class="line" name=9ek_lglock9span>
fl->"+codedelete_l clds" cile_lock" classbeforfds(struct  19span>

 148        if (code=F_UNLCK" class="sr10lock_lock10lock>
10l1d="L149" class="line151" class="line" name=10l2ck_lock10lpan>


 * want to be holding t10l5ck_lock10lpan>

 148        if ((struct  *d&lhrsile_lock" classssquestds(struct fl-> *10l7d="L150" claaaaaaaaaeeeeeeee11111111go o ile_lock" classnexs_l clds(struct  *code=F_UNLCK" class="sr10l8ck_lock10lpan>
 148        if (fl-> *da hrsile_lock" classssquestds(struct (struct  *10lid="L149" class="lineeeeeeeeeeeeeeeeebreakcode=F_UNLCK" class="sr101ock_lock109
(struct (struct  *daa "line" name="L1F_UNLCKU(struct 1091d="L149" class="lineaaaaaaaaeeeeeeeeline" name="L14addePU(struct  *da "line" name="L1trufds(struct 109id="L141" claaaaaaaaaaaaaaaaass="ile_lock" class8"> 148        if (fl-> *dalhrsile_lock" classssquestds(struct fl-> *1093d="L147" class="lineeeeeeeeeeeeeeeeeline" name="L14lefnef">fl->lefna> *da "line" name="L18"> 148        if (code=F_UNLCK" class="sr1014ck_lock10/a>);

 * want to be holding t1096ck_lock10)
);
 148        if ((struct  *d& hrsile_lock" classssquestds(struct (struct  *<1212" class="line" name=1018ck_lock107
(struct  *da "line" name="L18"> 148        if (code=F_UNLCK" class="sr1019ck_lock10ed for ="L218" class="li10ed >109id="L149" class="lineeeeeeeeeeeeeeeeebreakcode=F_UNLCK" class="sr102ock_lock10

 148        if (fl-> *da hra "line" name="L1ssquestds(struct fl-> *<1212" class="line" name=1022ck_lock10//span>

 * want to be holding t1024ck_lock10

(struct  *<1212" class="line" name=10<6ck_lock10
fl->"+codedelete_l clds" cile_lock" classbeforfds(struct 10<7d="L150" claaaaaaaaaeeeeeeee1111111111111111continuecode=F_UNLCK" class="sr10<8ck_lock10

 * want to be holding t103ock_lock10>>
 * want to be holding t1031ck_lock10>>
 * want to be holding t1032ck_lock10>>
 * want to be holding t10>3ck_lock102
>
fl->"+codewake_up_b_heards" cile_lock" class="sref">file_lock *10> href="fs/lock8#L12988888888888888888ile_lock" class8"> 148        if (fl-> *da "line" name="L1ssquestds(struct fl-> *code=F_UNLCK" class="sr10>6ck_lock10)
 148        if ((struct  *da "line" name="L1ssquestds(struct (struct  *code=F_UNLCK" class="sr10>7ck_lock10)
 148        if ((struct  *da "line" name="L1ssquestds(struct (struct  *code=F_UNLCK" class="sr10>8ck_lock10)
(struct file_lock *10>id="L149" class="lineeeeeeeeeeeeeeeee"line" name="L1"+codecopykprivateU(struct file_lock *, ile_lock" classssquestds(struct )
 148        if (code=F_UNLCK" class="sr1041ck_lock10{
>10}

 * want to be holding t1045ck_lock10)
{
(struct  *:51" class="line" name=10<7ck_lock10)
 146        if (fl-> *code=F_UNLCK" class="sr10<8ck_lock10;
)
;
;
dsAllocate an empty lock stru10<2ck_lock10}

 * want to be holding t1054ck_lock10 = 1;
(struct  *da -ss="line" name=ENOLCKU(struct  *cas89" class="line" name/* "no luck" */* Allocate an empty lock stru1056ck_lock105
fl->lefna> *daa "line" name="L1sightds(struct  *de=fl_e=fl_ !ss="line" name=newefl2ds(struct  *)>10<7d="L150" claaaaaaaaago o ile_lock" classoutds(struct )

(struct  *da 0code=F_UNLCK" class="sr106ock_lock10span>
(struct  *<1212" class="line" name=1061ck_lock10span>
(struct (struct  *daa "line" name="L1F_UNLCKU(struct 
(struct fl->fl->FL_EXISTSa> *10s3d="L147" class="lineeeeeeeeeeeeeeeeeline" name="L14errords(struct  *da -ss="line" name=ENOENTU(struct 
(struct 
);
);
(struct  *<1212" class="line" name=1068ck_lock107
(struct  *da -ss="line" name=ENOLCKU(struct  *c12" class="line" name=1069ck_lock10span>
(struct 

fl->"+codecopyk_heads" cile_lock" classneweflds(struct  *, ile_lock" classssquestds(struct 
fl->"+codeinsert_l clds" cile_lock" classbeforfds(struct (struct  *
(struct  *da "line" name="L1ss="sref">lockp != 


fl->lefna> *daa "line" name="L1sightds(struct  *<1212" class="line" name=1077ck_lock10span>
 * want to be holding t1078ck_lock10span>
 * want to be holding t10s9ck_lock10span>
fl->lefna> *da "line" name="L1newefl2ds(struct  *r href="+code=fl" class1081ck_lock10/a>);
lockp != 
fl->"+codecopyk_heads" cile_lock" classlefnef">fl->lefna> *, ile_lock" classsightds(struct  *
fl->"+codeinsert_l clds" cile_lock" classbeforfds(struct fl->lefna> *

(struct  *fl-> *da "line" name="L1ssquestds(struct (struct  *d+ 1r href="+code=fl" class1086ck_lock10span>
fl->"+codewake_up_b_heards" cile_lock" classsightds(struct  *

fl->lefna> *<1212" class="line" name=1089ck_lock10span>
fl->lefna> *(struct  *da "line" name="L1ssquestds(struct fl-> *d- 1r href="+code=fl" class109ock_lock10span>
fl->"+codewake_up_b_heards" cile_lock" classlefnef">fl->lefna> *

(struct 
fl->spinkunn clds" ce=fl_ss="line" name=inamem(struct (struct 10s4d="L150" cla189" class="line" name/** Allocate an empty lock stru1095ck_lock10span>
 * want to be holding t1096ck_lock10span>

(struct  *
fl->"+codefref_l clds" cile_lock" classneweflds(struct  *10s9d="L147" class="ile_lock" classnewefl2ds(struct  *11lod="L149" class="lineline" name="L14"+codefref_l clef">fl->"+codefref_l clds" cile_lock" classnewefl2ds(struct  *11l1d="L149" class="li ss="line" name=errords(struct  *code=F_UNLCK" class="sr11l2ck_lock11lpan>



 * -stylc hold to a f hr* Allocate an empty lock stru11l6ck_lock11lpan>


 * want to be holding t11l9ck_lock11lpan>

 *  stylc hold to a f hrmment"> * want to be holding t1111ck_lock11span>
 * want to be holding t1112ck_lock11void)
 *  holdi arfrsortcd bynont"> task,c acn byn203rsing addressment"> * want to be holding t1113ck_lock11{
);

119" id="L66" class="line" nam=* value for -ENOENTmment"> * want to be holding t1117ck_lock11/a>);

(struct (struct (struct fl->f hr_l clds"  file_lock" classf"sref">file_lock *,ate an empty lock stru1119ck_lock11ed for ="L218" class="li11ed >119id="L149" class="lineeeeeeeeestruca ss="line" name=f hr_l clef">fl->f hr_l clds"  file_lock" classconflheaef">fl->conflheaa> *11
(struct <__posixe"+co_f hrds" cile_lock" classf hr_inamem(struct (struct file_lock *, ile_lock" classconflheaef">fl->conflheaa> *112id="L151" class="line" name=1123ck_lock11
lockpEXPORT_SYMBO"ds" cile_lock" classposixe"+co_f hrds(struct 112id="L214" class="line" name1125ck_lock11

 * -stylc hold to a f hr* Allocate an empty lock stru11<7ck_lock11


>
 *  stylc hold to a f hrmment"> * want to be holding t1131ck_lock11>>
 * want to be holding t1132ck_lock11>>
 *  holdi arfrsortcd bynont"> task,c acn byn203rsing addressment"> * want to be holding t11>3ck_lock112
>
(struct (struct (struct fl->f hr_l clds"  file_lock" classf"sref">file_lock *11> href212" class="line" name=11>6ck_lock11)
(struct  *code=F_UNLCK" class="sr11>7ck_lock11)
(struct 11>8d="L147" clafor (;;<1212" class="line" name=11>9ck_lock118
(struct  *da "line" name="L1posixe"+co_f hrds(struct (struct file_lock *, ile_lock" classss="sref">lockp != 11(struct  *d!a "line" name="L1FILE_LOCK_DEFERREDds(struct  *11<1d="L149" class="lineaaaaaaaabreakcode=F_UNLCK" class="sr1142ck_lock11/a>);
(struct  *da "line" name="L1wait_event_interruptibhrds(struct  146        if ((struct  *, !ss="line" name=8"> 146        if (fl-> *11<3d="L147" class="liness="!ss="line" name=errords(struct  *11<4d="L150" claaaaaaaaaaaaaaaaacontinuecode=F_UNLCK" class="sr1145ck_lock11)
1146d="L141" claaaaaaaaaline" name="L14"+codedelete_bl clef">fl->"+codedelete_bl clds" cile_lock" classf"> 146        if (11<7d="L150" claaaaaaaaabreakcode=F_UNLCK" class="sr1148ck_lock11;
)
(struct  *code=F_UNLCK" class="sr115ock_lock11;
;
lockpEXPORT_SYMBO"ds" cile_lock" classposixe"+co_f hr_waitds(struct 1111<3d="L188" class="line" name/*** Allocate an empty lock stru1154ck_lock11 = 1;

) \
 *  holdi which conflicnmment"> * want to be holding t11<8ck_lock11)
 * want to be holding t11<9ck_lock118

fl->"+codemandatoryk_heacdds" cstruca ss="line" name=inamem(struct (struct 11s1d="L212" class="line" name=1162ck_lock11span>
_sref">fl->_sd="L1ile_lock" classont">ds(struct a> *da "line" name="L1currrntef">fl->currrntif (fl->< hrra> *code=F_UNLCK" class="sr1163ck_lock11span>
fl->f hr_l clds"  file_lock" classf"sref">file_lock *code=F_UNLCK" class="sr1164ck_lock11span>

);
 *  holdimment"> * want to be holding t1167ck_lock11/a>);

fl->spinkl clds" ce=fl_ss="line" name=inamem(struct (struct 11sid="L149" clafor (ile_lock" classf"sref">file_lock *da "line" name="L1inamem(struct fl->ikflheaa> *c ile_lock" class="sref">file_lock *d!a "line" name="L1ss="sref">lockp != file_lock *da "line" name="L18"> 148        if (fl-> *<1212" class="line" name=117ock_lock11span>
 * ref">fl->IS_"> * ds" cile_lock" classf"> 146        if (<11s1d="L149" class="lineaaaaaaaacontinuecode=F_UNLCK" class="sr1172ck_lock11span>
 148        if (ds(struct a> *d!a "line" name="L1ont">ds(struct a> *11s3d="L147" class="lineaaaaaaaabreakcode=F_UNLCK" class="sr11s4ck_lock11span>

fl->spinkunn clds" ce=fl_ss="line" name=inamem(struct (struct 11s6d="L141" class="li ss="line" name=="sref">file_lock *d? -ss="line" name=EAGAINsref">lockpEAGAINa> *d: 0code=F_UNLCK" class="sr1177ck_lock11span>


);







 *  holdi which conflicnmment"> * want to be holding t1189ck_lock11span>

 * want to be holding t1191ck_lock11span>

fl->"+codemandatorykareads" cina ss="line" name=read_writeef">fl->read_write(struct (struct 
(struct (struct fl->hoff_sd="L1ile_lock" classoffsetds(struct 
fl->size_sd="L1ile_lock" classcountef">fl->counta> *119 href212" class="line" name=1196ck_lock11span>
fl->f hr_l clds"  ile_lock" classf"sref">file_lock *code=F_UNLCK" class="sr1197ck_lock11span>
(struct  *code=F_UNLCK" class="sr1198ck_lock11span>

fl->"+codeinit_l clds" ce=fl_ss="line" name=8"> 146        if (12lod="L149" class="line" name=8"> 146        if (.ef="+code=fl" clasont">ds(struct a> *da "line" name="L1currrntef">fl->currrntif (fl->< hrra> *code=F_UNLCK" class="sr12l1ck_lock12lpan>
 146        if (.ef="+code=fl" claspiPU(struct  *da "line" name="L1currrntef">fl->currrntif ((struct  *code=F_UNLCK" class="sr12l2ck_lock12lpan>
 146        if (.ef="+code=fl" clasf hrds(struct 1203d="L147" cla1le_lock" classla> 146        if (.ef="+code=fl" clasflagref">fl-> * ref">fl->FL_"> * d="L1| "line" name="L1FL_ACCESSef">fl->FL_ACCESS1204d="L150" class="ile_lock" class8 hpds(struct (struct fl->< alagrd="L1e=fl_ href="+code=fl"O_NONBLOCKef">fl->O_NONBLOCKif (<120 href="fs/lock8#L1298ile_lock" classla> 146        if (.ef="+code=fl" clasflagref">fl->fl->FL_SLEEP1206d="L150" cla1le_lock" classla> 146        if (.ef="+code=fl" clastypeU(struct  *da "ile_lock" classssad_writeef">fl->read_writefl->FLOCK_VERIFY_WRITEa> *<1? "line" name="L1F_WRLCKU(struct  *d: "line" name="L1F_RDLCKU(struct 1207d="L150" claile_lock" classla> 146        if (.ef="+code=fl" clas203rsref">fl-> *da "line" name="L1offsetds(struct 1208d="L147" claile_lock" classla> 146        if (.ef="+code=fl" clasenPU(struct  *da "line" name="L1offsetds(struct fl->counta> *d- 1r href="+code=fl" class12l9ck_lock12lpan>


(struct <__posixe"+co_f hrds" cile_lock" classinamem(struct  146        if (, ile_lock" classss="sref">lockp != 121id="L141" claaaaaaaaass="ile_lock" classerrords(struct  *d!a "line" name="L1FILE_LOCK_DEFERREDds(struct  *1213d="L147" class="lineaaaaaaaabreakcode=F_UNLCK" class="sr1214ck_lock12/a>);
 146        if (.ef="+code=fl" claswaitds(struct  *, !ss="line" name=8"> 146        if (.ef="+code=fl" clasnexsref">fl-> *121 href="fs/lock8#L1298ss="!ss="line" name=errords(struct  *<1212" class="line" name=1216ck_lock12)
);

 * want to be holding t1219ck_lock12ed for ="L218" class="li12ed >121id="L189" class="line" name=                        */* Allocate an empty lock stru122ock_lock12
(struct <__mandatoryk_heads" cile_lock" classinamem(struct 1221d="L149" class="lineaaaaaaaaeeeeeeeecontinuecode=F_UNLCK" class="sr1222ck_lock12//span>


fl->"+codedelete_bl clds" ce=fl_ss="line" name=8"> 146        if (122 href="fs/lock8#L1298breakcode=F_UNLCK" class="sr12<6ck_lock12


(struct  *code=F_UNLCK" class="sr12<9ck_lock12
>
>
lockpEXPORT_SYMBO"ds" cile_lock" classholdi_mandatorykareaef">fl->"+codemandatorykareads" &g>123id="Lode=F_UNLCK" class="sr12>3ck_lock122
fl->"ease_clear_penPingds" cstruca ss="line" name=f hr_l clef">fl->f hr_l clds"  file_lock" classf"sref">file_lock *,asna ss="line" name=argef">fl->arga> *&g>12>4d="L212" class="line" name=12>5ck_lock124
fl->arga> *<1212" class="line" name=12>6ck_lock12)
7ck_lock12)
file_lock *fl->fl->FL_UNLOCK_PENDINGa> *code=F_UNLCK" class="sr12>8ck_lock12)
9ck_lock128
)
file_lock *fl->fl->FL_DOWNGRADE_PENDINGa> *code=F_UNLCK" class="sr1241ck_lock12{
);
}

)
fl->"ease_modifyds" cstruca ss="line" name=f hr_l clef">fl->f hr_l clds"  ffile_lock" classbeforfds(struct fl->arga> *1246d="L212" class="line" name=1247ck_lock12)
fl->f hr_l clds"  file_lock" classf"sref">file_lock * = file_lock" classbeforfds(struct 12<8d="L147" clasna ss="line" name=errords(struct  *da "line" name="L1a>(ignstypeU(struct (ignstypeds" cile_lock" classf"> 146        if (, ile_lock" classargef">fl->arga> *12;
(struct  *<51" class="line" name=1251ck_lock12;
(struct  *code=F_UNLCK" class="sr12<2ck_lock12}
fl->"ease_clear_penPingds" cile_lock" classf"> 146        if (, ile_lock" classargef">fl->arga> *1253d="L147" cla1le_lock" class"+codewake_up_b_hearef">fl->"+codewake_up_b_heards" cile_lock" class8"> 146        if (1254d="L150" class="ile_lock" classargef">fl->arga> *daa "line" name="L1F_UNLCKU(struct (struct (struct  148        if ((struct 1256d="L href="+code=fl" class1257ck_lock12a>) \
(struct (struct 1258d="L147" class="lineline" name="L148 hpds(struct ds(struct a> *.ef="+code=fl" c(ignumds(struct <(ignum125id="L149" class="liness="line" name=fasync_help">ds(struct ds" c0, ile_lock" class="sref">file_lock *(struct  146        if ((struct 126/d="L150" claaaaaaaaass="ile_lock" class8"> 146        if ((struct lockp != 
fl->prsnalds" cile_lock" classKERN_ERRef">fl->KERN_ERRd="L1"L67" class="stringe>""+codedelete_"+co: fasyncdaa %p\n"* Alloc, ile_lock" class="sref">file_lock *(struct 126id="L141" claaaaaaaaass="liness="line" name=f"> 146        if ((struct lockp != 

fl->"+codedelete__heads" cile_lock" classbeforfds(struct 12s href="fs/loc151" class="line" name=1266ck_lock12a>);
>1267d="L151" class="line" name=1268ck_lock127

lockpEXPORT_SYMBO"ds" cile_lock" classhease_modifyef">fl->"ease_modifyds" )code=F_UNLCK" class="sr127ock_lock12span>

 146      boo"d="L1"line" name="L1past_timfds(struct 

(struct < acna> *<51" class="line" name=1274ck_lock12span>

(struct 
ds(struct ds" cile_lock" classjiffirref">fl->jiffirrif (, ile_lock" class acnds(struct < acna> *


fl->timf_out_"easerds" cstruca ss="line" name=inamem(struct (struct 128/d="L212" class="line" name=1281ck_lock12/a>);
fl->f hr_l clds"  ffile_lock" classbeforfds(struct 
fl->f hr_l clds"  fss="line" name=f"> 146        if (r href="+code=fl" class1283ck_lock12span>

(struct (struct fl->ikflheaa> *c51" class="line" name=1285ck_lock12span>
file_lock *da file_lock" classbeforfds(struct fl->IS_LEASEds" cile_lock" class8"> 146        if (fl->"ease_breakingds" cile_lock" class8"> 146        if (<<1212" class="line" name=1286ck_lock12span>
(struct  146        if ((struct 
fl->"ease_modifyds" cile_lock" classbeforfds(struct 
(struct  146        if ((struct 
fl->"ease_modifyds" cile_lock" classbeforfds(struct 
 146        if (daa file_lock" classbeforfds(struct 
 148        if (fl-> *r href="+code=fl" class1292ck_lock12span>





129id="L188" class="line" name=*      @mame: =ac open mame (read or write)dsAllocate an empty lock stru12s9ck_lock12span>




 * want to be holding t13l4ck_lock13lpan>

fl->_sbreak_"easeds" cstruca ss="line" name=inamem(struct (struct (struct 1306d="L212" class="line" name=13l7ck_lock13lpan>
(struct  *da 0code=F_UNLCK" class="sr13l8ck_lock13lpan>
fl->f hr_l clds"  fss="line" name=new_8"> 148      new_8"code, fss="line" name=f" clef">fl->flheaa> *c51" class="line" name=13l9ck_lock13lpan>
fl->f hr_l clds"  fss="line" name=f"> 146        if (r href="+code=fl" class131ock_lock139

fl->i_have_=aii_"easea> *da 0code=F_UNLCK" class="sr1312ck_lock13void)
fl->want_writea> *da "ile_lock" classmamem(struct fl->O_ACCMODEfl->O_RDONLYif (r href="+code=fl" class1313ck_lock13{
);
 148      new_8"codeda "line" name="L1"ease_allocds(struct <"ease_allocds" cile_lock" classss="sref">lockp != fl->want_writea> *d? "line" name="L1F_WRLCKU(struct  *d: "line" name="L1F_RDLCKU(struct 
fl->IS_ERRds" cile_lock" classnew_8"> 148      new_8"code<<12" class="line" name=1316ck_lock13)
fl->PTR_ERRds" cile_lock" classnew_8"> 148      new_8"code);

fl->spinkl clds" ce=fl_ss="line" name=inamem(struct (struct 
fl->timf_out_"easerds" cile_lock" classinamem(struct 1321d="Lode=F_UNLCK" class="sr13<2ck_lock13//span>
fl->flheaa> *da "line" name="L1inamem(struct fl->ikflheaa> *code=F_UNLCK" class="sr13<3ck_lock13
fl->flheaa> *daa "line" name="L1ss="sref">lockp != fl->IS_LEASEds" cile_lock" class8" clef">fl->flheaa> *<<12" class="line" name=1324ck_lock13
fl->outa> *code=F_UNLCK" class="sr13<5ck_lock13
1326d="L141" class="!ss="line" name="+codeconflicnds(struct <"+codeconflicnds" cile_lock" class8" clef">fl->flheaa> *, "line" name="L1new_8"> 148      new_8"code<<12" class="line" name=1327ck_lock13
fl->outa> *code=F_UNLCK" class="sr13<8ck_lock13

file_lock *da "line" name="L1f" clef">fl->flheaa> *c ss="line" name=="sref">file_lock *de=fl_e=fl_ ile_lock" classIS_LEASEef">fl->IS_LEASEds" cile_lock" class8"> 146        if (file_lock *da "line" name="L18"> 148        if (fl-> *< href="+code=fl" class133ock_lock13>>
 146        if (ds(struct a> *daa "line" name="L1currrntef">fl->currrntif (fl->< hrra> *< href="+code=fl" class1331ck_lock13>>
fl->i_have_=aii_"easea> *da 1r href="+code=fl" class1332ck_lock13>>
1333d="L147" cla1le_lock" classbreak_timfds(struct &g>1334d="L150" class="ile_lock" class"ease_break_timfds(struct <"ease_break_timfa> *de hr 0<1212" class="line" name=13>5ck_lock134
(struct fl->jiffirrif ( +1ile_lock" class"ease_break_timfds(struct <"ease_break_timfa> *d*1ile_lock" classHZds(struct  *code=F_UNLCK" class="sr13>6ck_lock13)
(struct )
(struct 8ck_lock13)
9ck_lock138
)
file_lock *da "line" name="L1f" clef">fl->flheaa> *c ss="line" name=="sref">file_lock *de=fl_e=fl_ ile_lock" classIS_LEASEef">fl->IS_LEASEds" cile_lock" class8"> 146        if (file_lock *da "line" name="L18"> 148        if (fl-> *<1212" class="line" name=1341ck_lock13{
fl->want_writea> *<1212" class="line" name=1342ck_lock13/a>);
 146        if (fl->fl->FL_UNLOCK_PENDINGa> *< href="+code=fl" class1343ck_lock13}
1344d="L150" claaaaaaaaaaaaaaaaaile_lock" class8"> 146        if (fl->fl->FL_UNLOCK_PENDINGa> *code=F_UNLCK" class="sr1345ck_lock13)
 146        if ((struct {
)
fl->"ease_breakingds" cile_lock" class8" clef">fl->flheaa> *<<12" class="line" name=1348ck_lock13;
134id="L149" class="lineeeeeeeeesine" name="L148"> 146        if (fl->fl->FL_DOWNGRADE_PENDINGa> *code=F_UNLCK" class="sr135ock_lock13;
 146        if ((struct ;
}
 146        if (fl->fl->"m_breakds" cile_lock" class8"> 146        if (
fl->i_have_=aii_"easea> *d|| "ile_lock" classmamem(struct fl->O_NONBLOCKif (<<1212" class="line" name=1356ck_lock135
(struct  *da -ss="line" name=EWOULDBLOCKef">fl->EWOULDBLOCKif (r href="+code=fl" class1357ck_lock13a>) \
fl->outa> *code=F_UNLCK" class="sr1358ck_lock13)


fl->re203rsd="L:51" class="line" name=1361ck_lock13span>
(struct fl->flheaa> *(struct 136id="L141" class="ile_lock" classbreak_timfds(struct 
(struct fl->jiffirrif (code=F_UNLCK" class="sr1364ck_lock13span>
(struct 
(struct );
);
fl->"+codeinsert_bl clds" cile_lock" class8" clef">fl->flheaa> *, "line" name="L1new_8"> 148      new_8"code<; href="+code=fl" class1368ck_lock137
fl->spinkunl clds" ce=fl_ss="line" name=inamem(struct (struct 136id="L149" class="line" name=errords(struct  *da "line" name="L1wait_event_interruptibhr_timfoutef">fl->wait_event_interruptibhr_timfoutds" cile_lock" classnew_8"> 148      new_8"code(struct  *,ode=F_UNLCK" class="sr137ock_lock13span>
 148      new_8"codefl-> *, "line" name="L1break_timfds(struct 1371d="L149" class="line" name=spinkl clef">fl->spinkl clds" ce=fl_ss="line" name=inamem(struct (struct 137id="L141" claef="+code=fl" clocodedelete_bl clef">fl->"+codedelete_bl clds" c"line" name="L1new_8"> 148      new_8"code<; href="+code=fl" class1373ck_lock13span>
(struct  *da hr= 0<1212" class="line" name=1374ck_lock13span>
(struct  *daa 0< href="+code=fl" class1375ck_lock13span>
fl->timf_out_"easerds" cile_lock" classinamem(struct 1376d="L141" claaaaaaaaah89" class="line" name/** Allocate an empty lock stru1377ck_lock13span>


fl->flheaa> *da "line" name="L1inamem(struct fl->ikflheaa> *caef="+code=fl" cla clef">fl->flheaa> *de=fl_e=fl_ ile_lock" classIS_LEASEef">fl->IS_LEASEds" cile_lock" class8" clef">fl->flheaa> *>1381d="L149" class="lineaaaaaaaaeeeeeeeeile_lock" classf" clef">fl->flheaa> *da "line" name="L18" clef">fl->flheaa> *fl-> *<1212" class="line" name=1382ck_lock131
(struct <"+codeconflicnds" cile_lock" classnew_8"> 148      new_8"code, ile_lock" class8" clef">fl->flheaa> *<<12" class="line" name=1383ck_lock13span>
fl->re203rsd="Lcode=F_UNLCK" class="sr1384ck_lock13span>

(struct  *da 0code=F_UNLCK" class="sr1386ck_lock13span>


fl->outa> *:51" class="line" name=1389ck_lock13span>
fl->spinkunl clds" ce=fl_ss="line" name=inamem(struct (struct 139od="L149" class="line" name="+codefrefk_heads(struct <"+codefrefk_heads" c"line" name="L1new_8"> 148      new_8"code<; href="+code=fl" class1391ck_lock13span>
(struct  *code=F_UNLCK" class="sr1392ck_lock13span>


lockpEXPORT_SYMBO"ds" cile_lock" class_sbreak_"easeref">fl->_sbreak_"easeds" <; href="+code=fl" class1395ck_lock13span>
139" id="L66" class="line" nam/*** Allocate an empty lock stru1397ck_lock13span>






 * want to be holding t14l4ck_lock14lpan>

(struct <"ease_get_mtimfds" cstruca ss="line" name=inamem(struct (struct fl->timfspeccode file_lock" classtimfds(struct 

fl->f hr_l clds"  file_lock" classf" clef">fl->flheaa> *da "line" name="L1inamem(struct fl->ikflheaa> *c12" class="line" name=14l8ck_lock14lpan>
fl->flheaa> *de=fl_e=fl_ ile_lock" classIS_LEASEef">fl->IS_LEASEds" cile_lock" class8" clef">fl->flheaa> *fl->flheaa> *(struct  *daa ef="+code=fl" cF_WRLCKU(struct  *<<12" class="line" name=14l9ck_lock14lpan>
(struct (struct fl->iksbds" <; href="+code=fl" class141ock_lock149

(struct (struct {
);
lockpEXPORT_SYMBO"ds" cile_lock" classlease_get_mtimfds(struct <"ease_get_mtimfds" <; href="+code=fl" class1415ck_lock144
141" id="L66" class="line" nam/*** Allocate an empty lock stru1417ck_lock14/a>);


142id="L170" class="line" name=*      (ss=no "ease break ii penPing):* Allocate an empty lock stru1422ck_lock14//span>

 * want to be holding t1424ck_lock14
 * want to be holding t1425ck_lock14
 * want to be holding t1426ck_lock14
 * want to be holding t1427ck_lock14
 * want to be holding t1428ck_lock14
 * want to be holding t1429ck_lock14
>
>
>
 * want to be holding t14>3ck_lock142
 * want to be holding t14>4ck_lock14>>
 * want to be holding t14>5ck_lock144
 * want to be holding t14>6ck_lock14)
 * want to be holding t14>7ck_lock14)
 * want to be holding t14>8ck_lock14)
9ck_lock148
(struct (struct (struct )
{
fl->f hr_l clds"  fef="+code=fl" claU(struct );
(struct (struct (struct 1443d="L147" clasna ss="line" name=typeU(struct  *da "line" name="L1F_UNLCKU(struct 144id="L214" class="line" name1445ck_lock14)
fl->spinkl clds" ce=fl_ss="line" name=inamem(struct (struct 1446d="L141" claile_lock" classtimf_out_"easeref">fl->timf_out_"easerds" cile_lock" class8 hr_inamem(struct (struct 1447d="L150" clafor (ile_lock" classf"sref">file_lock *da "line" name="L1f hr_inamem(struct (struct fl->ikflheaa> *caef="+code=fl" clasref">file_lock *de=fl_e=fl_ ile_lock" classIS_LEASEef">fl->IS_LEASEds" cile_lock" class8"> 146        if (1448d="L147" class="lineeeeeeeeeile_lock" classf"sref">file_lock *da "line" name="L1f"> 148        if (fl-> *<1212" class="line" name=1449ck_lock14)
 146        if ((struct  *daa ef="+code=fl" c8 hpds(struct ;
(struct  146        if (1451d="L149" class="lineeeeeeeeebreakrode=F_UNLCK" class="sr1452ck_lock14}

fl->spinkunl clds" ce=fl_ss="line" name=inamem(struct (struct 145 href="fs/locss="li ss="line" name=typeU(struct  *code=F_UNLCK" class="sr1456ck_lock145
) \
)
fl->generic_add_"easeds" cstruca ss="line" name=f hrds(struct (struct fl->f hr_l clds"  ffile_lock" classfhpds(struct 

fl->f hr_l clds"  fef="+code=fl" claU(struct (struct (struct  *da "line" name="L1ss="sref">lockp != fl->"easeds" code=F_UNLCK" class="sr1461ck_lock14span>
fl->dentryds"  fef="+code=fl" cdentryef">fl->dentryds"  a ef="+code=fl" c8 hpds(struct (struct fl->dentryds" code=F_UNLCK" class="sr1462ck_lock14span>
(struct (struct fl->dentryds" (struct 1463d="L147" clasna ss="line" name=errords(struct  *code=F_UNLCK" class="sr1464ck_lock14span>

fl->"easeds" da file_lock" classfhpds(struct )>1466d="Lode=F_UNLCK" class="sr1467ck_lock14/a>);
(struct  *da -ss="line" name=EAGAINsref">lockpEAGAIN1468d="L147" class="cile_lock" classargds(struct (struct (struct (struct fl->ikwritecount
fl->outa> *code=F_UNLCK" class="sr147ock_lock14span>
(struct (struct  *1471d="L149" class="e=fl_e=fl_ ccile_lock" classd_countef">fl->d_countds" cile_lock" classdentryef">fl->dentryds" 147id="L141" claaaaaaaaa|| "ile_lock" classatomic_readds(struct (struct fl->ikcount
fl->outa> *code=F_UNLCK" class="sr1474ck_lock14span>




 * want to be holding t14s9ck_lock14span>
 * want to be holding t148ock_lock14    7
);
 * want to be holding t1482ck_lock141

(struct  *da -ss="line" name=EAGAINsref">lockpEAGAIN1484d="L150" clafor (ile_lock" classbeforfds(struct (struct fl->ikflheaa> *c12" class="line" name=1485ck_lock14span>
file_lock *da file_lock" classbeforfds(struct lockp != fl->IS_LEASEds" cile_lock" class8"> 146        if (1486d="L141" claaaaaaaaa147" cla1le_lock" classbeforfds(struct  148        if (fl-> *<1212" class="line" name=1487ck_lock14span>
 146        if ((struct  *daa ef="+code=fl" c8 hpds(struct 
(struct  *da "line" name="L1beforfds(struct 148id="L149" class="lineeeeeeeeecontinuecode=F_UNLCK" class="sr149ock_lock14span>





(struct (struct  *1496d="L141" claaaaaaaaa147" clagoto ile_lock" classoutef">fl->outa> *code=F_UNLCK" class="sr1497ck_lock14span>




 146        if (fl->fl->FL_UNLOCK_PENDINGa> *< href="+code=fl" class15l2ck_lock15lpan>
fl->outa> *code=F_UNLCK" class="sr15l3ck_lock15lpan>


(struct  *d!a "line" name="L1ss="sref">lockp != 
(struct  *da ss="line" name="easeref">fl->"easeds" fl->fl->"m_ch" geds" cile_lock" classmy_beforfds(struct  *, ile_lock" classargds(struct 1507d="L150" claaaaaaaaass="!ss="line" name=errords(struct  *< href="+code=fl" class15l8ck_lock15lpan>
(struct (struct  *rode=F_UNLCK" class="sr15l9ck_lock15lpan>
fl->outa> *code=F_UNLCK" class="sr151ock_lock159

(struct  *da -ss="line" name=EINVA"sref">lockpEINVA"a> *code=F_UNLCK" class="sr1513ck_lock15{
 *< href="+code=fl" class1514ck_lock15/a>);
fl->outa> *code=F_UNLCK" class="sr1515ck_lock154
1516d="L141" claile_lock" classclasseinsert_lheaef">fl->classeinsert_lheads" cile_lock" classbeforfds(struct fl->"easeds" >1517d="L150" class="li 0code=F_UNLCK" class="sr1518ck_lock157
fl->outa> *:51" class="line" name=152ock_lock15
(struct  *code=F_UNLCK" class="sr1521ck_lock15

1523d="L203tic sna ss="line" name=generic_delete_"easeref">fl->generic_delete_"easeds" cstruca ss="line" name=f hrds(struct (struct fl->f hr_l clds"  ffile_lock" classfhpds(struct 

fl->f hr_l clds"  fef="+code=fl" claU(struct (struct 1526href="fs/locstruca ss="line" name=dentryef">fl->dentryds"  fef="+code=fl" cdentryef">fl->dentryds"  a ef="+code=fl" c8 hpds(struct (struct fl->dentryds" code=F_UNLCK" class="sr1527ck_lock15
(struct (struct fl->dentryds" (struct 1528d="L href="+code=fl" class1529ck_lock15
(struct (struct fl->ikflheaa> *c12" class="line" name=153ock_lock15>>
file_lock *da file_lock" classbeforfds(struct lockp != fl->IS_LEASEds" cile_lock" class8"> 146        if (>
(struct  148        if (fl-> *<1212" class="line" name=1532ck_lock15>>
 146        if ((struct  *d!a "line" name="L1f hpds(struct 3ck_lock152
&g>1534d="L150" claaaaaaaaass="li (file_lock" classfhpds(struct fl->fl->"m_ch" geds" cile_lock" classbeforfds(struct (struct 
6ck_lock15)
lockpEAGAIN153" id=151" class="line" name=15>8ck_lock15)
9ck_lock158
)
{
);
}

 * want to be holding t1545ck_lock15)
{
 * want to be holding t1547ck_lock15)
 * want to be holding t1548ck_lock15;
 * want to be holding t1549ck_lock15)
;
(struct (struct (struct fl->f hr_l clds"  ffile_lock" classfhpds(struct ;
}
fl->dentryds"  fef="+code=fl" cdentryef">fl->dentryds"  a ef="+code=fl" c8 hpds(struct (struct fl->dentryds" code=F_UNLCK" class="sr15<3ck_lock152
(struct (struct fl->dentryds" (struct 1554d="L150" clasna ss="line" name=errords(struct  *code=F_UNLCK" class="sr1555ck_lock15= 45;
1556href="fs/locss="c!ss="line" name=uid_eqds(struct (struct (struct (struct (struct fl->CAP_LEASE)>1557d="L150" claaaaaaaaass="li -ss="line" name=EACCESsref">lockpEACCESa> *code=F_UNLCK" class="sr1558ck_lock15)
fl->S_ISREGds" cile_lock" classinamem(struct (struct 155id="L149" class="liness="li -ss="line" name=EINVA"sref">lockpEINVA"a> *code=F_UNLCK" class="sr156ock_lock15span>
(struct  *da ef="+code=fl" csecurity_f hr_l clef">fl->security_f hr_l clds" cile_lock" class8 hpds(struct 
(struct  *156id="L141" claaaaaaaaass="li ss="line" name=errords(struct  *code=F_UNLCK" class="sr1563ck_lock15span>

fl->timf_out_"easerds" cile_lock" classinamem(struct 156id="Lode=F_UNLCK" class="sr1566ck_lock15a>);
lockpBUG_ONds" c!(file_lock" classfhpds(struct fl->fl->"m_breakcode>156" id=51" class="line" name=1568ck_lock157
(struct 
(struct 
fl->generic_delete_"easeds" cile_lock" class8 hpds(struct 1571d="L149" clacase ile_lock" classF_RDLCKU(struct 
(struct  *:51" class="line" name=1573ck_lock15span>
fl->generic_add_"easeds" cile_lock" class8 hpds(struct 1574d="L150" cladefault:51" class="line" name=1575ck_lock15span>
lockpEINVA"a> *code=F_UNLCK" class="sr1576ck_lock15span>


lockpEXPORT_SYMBO"ds" cile_lock" classgeneric_set"easeU(struct 157id="Lode=F_UNLCK" class="sr158ock_lock15    7
(struct (struct (struct fl->f hr_l clds"  ffile_lock" class"easeref">fl->"easeds" >1581d="L212" class="line" name=1582ck_lock151
(struct (struct (struct (struct (struct 
(struct (struct (struct (struct fl->"easeds" 1584d="L150" claelse href="+code=fl" class1585ck_lock15span>
(struct (struct fl->"easeds" 1586d="L151" class="line" name=1587ck_lock15span>







 * want to be holding t1595ck_lock15span>
 * want to be holding t1596ck_lock15span>
 * want to be holding t1597ck_lock15span>
 * want to be holding t1598ck_lock15span>
 * want to be holding t1599ck_lock15span>
 * want to be holding t16lock_lock16lock>
 * want to be holding t16l1ck_lock16lpan>



 * want to be holding t16l5ck_lock16lpan>
 * want to be holding t16l6ck_lock16lpan>
 * want to be holding t16l7ck_lock16lpan>
 * want to be holding t16l8ck_lock16lpan>
 * want to be holding t16l9ck_lock16lpan>


 * want to be holding t1612ck_lock16void)
 * want to be holding t1613ck_lock16{
);

(struct (struct (struct fl->f hr_l clds"  ffile_lock" class"easeref">fl->"easeds" <12" class="line" name=1616ck_lock16)
);
(struct (struct (struct 1618d="L147" clasna ss="line" name=errords(struct  *code=F_UNLCK" class="sr1619ck_lock16ed for ="L218" class="li16ed >161id="Lode=F_UNLCK" class="sr162ock_lock16
fl->spinkl clds" ce=fl_ss="line" name=inamem(struct (struct 1621d="L147" claef="+code=fl" cerrords(struct  *da ef="+code=fl" c__vfs_set"easeU(struct (struct fl->"easeds" 162id="L141" claef="+code=fl" cspinkunl clef">fl->spinkunl clds" ce=fl_ss="line" name=inamem(struct (struct 1623d="L51" class="line" name=1624ck_lock16
(struct  *code=F_UNLCK" class="sr1625ck_lock16

lockpEXPORT_SYMBO"_GP"ds" cile_lock" classvfs_set"easeU(struct 162" id=51" class="line" name=1628ck_lock16
fl->do_lcntl_delete_"easeds" cstruca ss="line" name=f hrds(struct (struct 
>
fl->f hr_l clds"  "line" name="L1fhds(struct (struct  148        if (code=F_UNLCK" class="sr1631ck_lock16>>
>
fl->"ease_inisds" cile_lock" class8 hpds(struct 1633d="L51" class="line" name=16>4ck_lock16>>
(struct (struct (struct 163 href151" class="line" name=16>6ck_lock16)
163" id=203tic sna ss="line" name=do_lcntl_add_"easeref">fl->do_lcntl_add_"easeds" cunsigned sna ss="line" name=fdds(struct (struct (struct 8ck_lock16)

fl->f hr_l clds"  file_lock" classfhds(struct (struct 164 d="L147" clastruca ss="line" name=inamem(struct (struct (struct 1641d="L149" clastruca ss="line" name=fasync_strucads(struct (struct >164id="L141" clasna ss="line" name=errords(struct  *code=F_UNLCK" class="sr1643ck_lock16}

file_lock *da ef="+code=fl" c"ease_allocref">fl->"ease_allocds" cile_lock" class8 hpds(struct 164 href="fs/locss="ile_lock" classIS_ERRds(struct  146        if (<<12" class="line" name=1646ck_lock16{
(struct  146        if (164" id=51" class="line" name=1648ck_lock16;
(struct fl->8async_allocds" c1649href="fs/locss="!ss="line" name=newds(struct ;
fl->"e" n_frer_l clds" cile_lock" class8"> 146        if (1651d="L149" class="liness="li -ss="line" name=ENOMEMsref">lockpENOMEMa> *code=F_UNLCK" class="sr1652ck_lock16}

(struct  148        if (code=F_UNLCK" class="sr16<4ck_lock16 = 1;
fl->spinkl clds" ce=fl_ss="line" name=inamem(struct (struct 165 href="fs/locss="line" name=errords(struct  *da ef="+code=fl" c__vfs_set"easeU(struct (struct (struct 1656href="fs/locss="ss="line" name=errords(struct  *<1212" class="line" name=1657ck_lock16a>) \
fl->spinkunl clds" ce=fl_ss="line" name=inamem(struct (struct 1658d="L147" class="lineef="+code=fl" c"e" n_frer_l clef">fl->"e" n_frer_l clds" cile_lock" class8"> 146        if (165id="L149" class="linegoto ile_lock" classout_frer_8async> 146      out_frer_8asyncif (code=F_UNLCK" class="sr166ock_lock16span>

(struct  146        if (<51" class="line" name=1662ck_lock16span>
fl->"e" n_frer_l clds" cile_lock" class8"> 146        if (1663d="L51" class="line" name=1664ck_lock16span>

 * want to be holding t1666ck_lock16a>);
 * want to be holding t1667ck_lock16/a>);
 * want to be holding t1668ck_lock167
 * want to be holding t1669ck_lock16span>

fl->8async_insert_entryds" cile_lock" class8dds(struct (struct (struct  146      lasfasynccode, ile_lock" classnewds(struct 
(struct lockp != 167id="Lode=F_UNLCK" class="sr1673ck_lock16span>
(struct  *da ef="+code=fl" c__f_setownU(struct (struct (struct 1674d="L150" claile_lock" classspinkunl clef">fl->spinkunl clds" ce=fl_ss="line" name=inamem(struct (struct 167id="Lode=F_UNLCK" class="sr1676ck_lock16span>
 146      out_frer_8asyncif (:51" class="line" name=1677ck_lock16span>
(struct 
fl->8async_frerds" cile_lock" classnewds(struct 167id="L149" class="li ss="line" name=errords(struct  *code=F_UNLCK" class="sr168ock_lock16    7
);






 * want to be holding t1688ck_lock16span>
 * want to be holding t1689ck_lock16span>
 * want to be holding t169ock_lock16span>
 * want to be holding t1691ck_lock16span>

fl->8cntl_set"easeds" cunsigned sna ss="line" name=fdds(struct (struct (struct 

(struct (struct 
fl->do_lcntl_delete_"easeds" cile_lock" class8 hpds(struct 1696href="fs/locss="li ss="line" name=do_lcntl_add_"easeref">fl->do_lcntl_add_"easeds" cile_lock" class8dds(struct (struct 169" id=151" class="line" name=1698ck_lock16span>






 * want to be holding t17l5ck_lock17lpan>

 146      laheak_hea_f hr_waitds" cstruca ss="line" name=f hrds(struct (struct fl->f hr_l clds"  f"line" name="L1f"> 146        if (<51" class="line" name=17l7ck_lock17lpan>

(struct  *code=F_UNLCK" class="sr17l9ck_lock17lpan>
(struct 171 d="L147" clafor (;;<1212" class="line" name=1711ck_lock17span>
(struct  *da ef="+code=fl" claheak_hea_f hr> 146      laheak_hea_f hrds" cile_lock" class8 hpds(struct  146        if (171id="L141" claaaaaaaaass="ile_lock" classerrords(struct  *d!a "line" name="L1FILE_LOCK_DEFERREDds(struct {
>1714d="L150" claaaaaaaaahle_lock" classerrords(struct  *da ef="+code=fl" cwait_evrnt_interruptibhrds(struct  146        if ( 146      la_waitds" , !ss="line" name=f"> 148        if (fl-> *171 href="fs/loc147" class="!ss="line" name=errords(struct  *1716d="L141" claaaaaaaaaaaaaaaaacontinuecode=F_UNLCK" class="sr1717ck_lock17/a>);

fl->"e" n_delete_bl clds" cile_lock" class8"> 146        if (172 d="L147" cla151" class="line" name=1721ck_lock17
(struct  *code=F_UNLCK" class="sr1722ck_lock17//span>


lockpEXPORT_SYMBO"ds" cile_lock" classflheak_hea_f hr_wait> 146      laheak_hea_f hr_waitds" 172id="Lode=F_UNLCK" class="sr1726ck_lock17

 * want to be holding t1728ck_lock17
 * want to be holding t1729ck_lock17
 * want to be holding t173ock_lock17>>
 * want to be holding t1731ck_lock17>>
 * want to be holding t1732ck_lock17>>
 * want to be holding t1733ck_lock172
4ck_lock17>>
 * want to be holding t17>5ck_lock174
 * want to be holding t17>6ck_lock17)
 * want to be holding t17>7ck_lock17)
 * want to be holding t17>8ck_lock17)
 * want to be holding t17>9ck_lock178
 * want to be holding t174ock_lock17)
 * want to be holding t1741ck_lock17{
 * want to be holding t1742ck_lock17/a>);
 * want to be holding t1743ck_lock17}
 * want to be holding t1744ck_lock173
)
 146      SYSCALL_DEFINE2ds" cile_lock" classflhea> 146      laheads" , unsigned sna, "line" name="L18dds(struct 1746d="L212" class="line" name=1747ck_lock17)
(struct (struct  *da ef="+code=fl" cldgs=ds(struct (struct 1748d="L150" clastruca ss="line" name=f hr_l clef">fl->f hr_l clds"  f"line" name="L1l clef">fl->"e" a> *code=F_UNLCK" class="sr1749ck_lock17)
(struct fl->unl clds" code=F_UNLCK" class="sr175ock_lock17;
(struct  *code=F_UNLCK" class="sr1751ck_lock17;
}
(struct  *da -ss="line" name=EBADFsref">lockpEBADFa> *code=F_UNLCK" class="sr1753ck_lock172
(struct  *.ef="+code=fl" cf hrds(struct 1754d="L150" claaaaaaaaagoto ile_lock" classoutds(struct  *code=F_UNLCK" class="sr1755ck_lock17= 45;
1756d="L141" claile_lock" classcan_sleepds(struct (struct  * e=fl_ ile_lock" classLOCK_NBds(struct )>1757d="L150" claile_lock" classcmdds(struct  * e=fl_= ~ile_lock" classLOCK_NBds(struct 1758d="L150" claile_lock" classunl clef">fl->unl clds" da cile_lock" classcmdds(struct  * =a ef="+code=fl" cLOCK_UNds(struct 175id="Lode=F_UNLCK" class="sr176ock_lock17span>
fl->unl clds" de=fl_e=fl_ !cile_lock" classcmdds(struct  * e=fl_ ile_lock" classLOCK_MANDds(struct 1761d="L149" class="!cile_lock" class8ds(struct  *.ef="+code=fl" cf hrds(struct (struct (struct (struct 
(struct 1763d="L51" class="line" name=1764ck_lock17span>
(struct  *da ef="+code=fl" claheakmakr_l clef">fl->faheakmakr_l clds" cile_lock" class8ds(struct  *.ef="+code=fl" cf hrds(struct fl->"e" a> *, "line" name="L1cmdds(struct  *176 href="fs/locss="ile_lock" classerrords(struct  *)>1766d="L141" claaaaaaaaagoto ile_lock" classout_put8ds(struct >1767d="L147" class="ile_lock" classcan_sleepds(struct 1768d="L147" class="lineef="+code=fl" c"e" ef">fl->"e" a> *fl->176id="Lode=F_UNLCK" class="sr177ock_lock17span>
(struct  *da ef="+code=fl" csecurity_f hr_l clef">fl->security_f hr_l clds" cile_lock" class8ds(struct  *.ef="+code=fl" cf hrds(struct fl->"e" a> *fl-> *1771d="L149" class="ss="line" name=errords(struct  *177id="L141" claaaaaaaaagoto ile_lock" classout_frerref">fl->out_frercodecode=F_UNLCK" class="sr1773ck_lock17span>

(struct  *.ef="+code=fl" cf hrds(struct (struct (struct  *.ef="+code=fl" cf hrds(struct (struct  146      laheads" 177 href="fs/locss="lineile_lock" classerrords(struct  *da ef="+code=fl" clds(struct  *.ef="+code=fl" cf hrds(struct (struct  146      laheads" cile_lock" class8ds(struct  *.ef="+code=fl" cf hrds(struct 1776d="L141" claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"ile_lock" classcan_sleepds(struct (struct (struct 1777d="L150" claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaef="+code=fl" c"e" ef">fl->"e" a> *1778d="L147" claelse href="+code=fl" class1779ck_lock17span>
(struct  *da ef="+code=fl" claheak_hea_f hr_wait> 146      laheak_hea_f hr_waitds" cile_lock" class8ds(struct  *.ef="+code=fl" cf hrds(struct fl->"e" a> *178&d="Lode=F_UNLCK" class="sr1781ck_lock17/a>);
fl->out_frercode:51" class="line" name=1782ck_lock171
fl->"e" n_frer_l clds" cile_lock" class"e" ef">fl->"e" a> *1783d="L51" class="line" name=1784ck_lock17span>
(struct 
(struct <8dputds" cile_lock" class8ds(struct  *178" id= ile_lock" classoutds(struct  *:51" class="line" name=1787ck_lock17span>
(struct  *code=F_UNLCK" class="sr1788ck_lock17span>

179&d="L188" class="line" name/*** Allocate an empty lock stru1791ck_lock17span>
Allocate an empty lock stru1792ck_lock17span>

 * want to be holding t1794ck_lock17span>
 * want to be holding t1795ck_lock17span>
 * want to be holding t1796ck_lock17span>
 * want to be holding t1797ck_lock17span>

(struct (struct (struct fl->f hr_l clds"  f"line" name="L1f"> 146        if (<51" class="line" name=1799ck_lock17span>

(struct (struct (struct (struct fl->"e" a> *<12" class="line" name=18l1ck_lock18lpan>
(struct (struct fl->"e" a> *cile_lock" class8 hpds(struct  146        if (180id="L141" claef="+code=fl" cposix_test_l clds(struct  *cile_lock" class8 hpds(struct  146        if (1803d="L147" class="li 0code=F_UNLCK" class="sr18l4ck_lock18lpan>

lockpEXPORT_SYMBO"_GP"ds" cile_lock" classvfs_test_l clds(struct 1806d="Lode=F_UNLCK" class="sr18l7ck_lock18lpan>
 146      posix__hea_to_laheads" cstruca ss="line" name=fahea> 146      laheads"  f"line" name="L1f"hea> 146      laheads" , struca ss="line" name=f hr_l clef">fl->f hr_l clds"  f"line" name="L1f"> 146        if (<51" class="line" name=18l8ck_lock18lpan>

 146      laheads" (struct  148        if ((struct 181 d="L#ss=ef="+code=fl" cBITS_PER_LONGds(struct 1811d="L149" clai89" class="line" name/** Allocate an empty lock stru1812ck_lock18void)
{
);

 148        if (fl->fl->OFFT_OFFSET_MAXif (<51" class="line" name=1816ck_lock18)
(struct >1817d="L147" class="ile_lock" class8"> 148        if ((struct fl->OFFSET_MAXif (1e=fl_e=fl_ ile_lock" class8"> 148        if ((struct fl->OFFT_OFFSET_MAXif (<51" class="line" name=1818ck_lock187
(struct 182 d="L147" claile_lock" classf"hea> 146      laheads" fl-> 148        if (fl->1821d="L147" claile_lock" classf"hea> 146      laheads" (struct  148        if ((struct fl->OFFSET_MAXif (1? 0 :51" class="line" name=1822ck_lock18//span>
 148        if ((struct  148        if (fl->1823d="L147" cla1le_lock" classf"hea> 146      laheads" (struct <"_whencrd="L1a 0code=F_UNLCK" class="sr1824ck_lock18
 146      laheads" fl->a typea> *1a "line" name="L18"> 148        if (fl-> *code=F_UNLCK" class="sr1825ck_lock18
182" id=151" class="line" name=1827ck_lock18

(struct 182id="L203tic void ss="line" name=posix__hea_to_laheaspan>

 146      laheads" , struca ss="line" name=f hr_l clef">fl->f hr_l clds"  f"line" name="L1f"> 146        if (<51" class="line" name=183ock_lock18>>
>
 146      laheads" (struct  148        if ((struct &g>183id="L141" claef="+code=fl" cf"hea> 146      laheads" fl-> 148        if (fl->1833d="L147" cla1le_lock" classf"hea> 146      laheads" (struct  148        if ((struct fl->OFFSET_MAXif (1? 0 :51" class="line" name=18>4ck_lock18>>
 148        if ((struct  148        if (fl->183 href="fs/locile_lock" class8"hea> 146      laheads" (struct <"_whencrd="L1a 0code=F_UNLCK" class="sr18>6ck_lock18)
 146      laheads" fl->a typea> *1a "line" name="L18"> 148        if (fl-> *code=F_UNLCK" class="sr18>7ck_lock18)
8ck_lock18)
183id="Lode=F_UNLCK" class="sr184ock_lock18)
 * want to be holding t1841ck_lock18{
 * want to be holding t1842ck_lock18/a>);
}
 146      lcntl_getlad="Lcstruca ss="line" name=f hrds(struct (struct  146      laheads"  ss="line" name=__userds(struct <__userds"  file_lock" class"> 148       if (<51" class="line" name=1844ck_lock183
)
fl->f hr_l clds"  ss="line" name=f hr_l clef">fl->f hr_l clds" code=F_UNLCK" class="sr1846ck_lock18{
 146      laheads"  ss="line" name=fahea> 146      laheads" code=F_UNLCK" class="sr1847ck_lock18)
(struct  *code=F_UNLCK" class="sr1848ck_lock18;
)
(struct  *da -ss="line" name=EFAULTds(struct  *code=F_UNLCK" class="sr185ock_lock18;
(struct  146      laheads" , ile_lock" class"> 148       if (, sizeofcile_lock" classflhea> 146      laheads" <<<51" class="line" name=1851ck_lock18;
(struct  *code=F_UNLCK" class="sr1852ck_lock18}
(struct  *da -ss="line" name=EINVA"sref">lockpEINVA"a> *code=F_UNLCK" class="sr1853ck_lock182
 146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *1!a "line" name="L1F_RDLCKU(struct  146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *1!a "line" name="L1F_WRLCKU(struct 1854d="L150" claaaaaaaaagoto ile_lock" classoutds(struct  *code=F_UNLCK" class="sr1855ck_lock18= 45;
1856d="L141" claile_lock" classerrords(struct  *da ef="+code=fl" claheakto_posix__hea> 146      laheakto_posix__head="Lcile_lock" classf hpds(struct fl->f hr_l clds" , e=fl_ss="line" name=flhea> 146      laheads" )>1857d="L147" class="ile_lock" classerrords(struct  *1858d="L147" class="linegoto ile_lock" classoutds(struct  *code=F_UNLCK" class="sr1859ck_lock188
186 d="L147" claile_lock" classerrords(struct  *da ef="+code=fl" cvfs_test_l clds(struct (struct fl->f hr_l clds" 1861d="L149" class="ss="line" name=errords(struct  *186id="L141" claaaaaaaaagoto ile_lock" classoutds(struct  *code=F_UNLCK" class="sr1863ck_lock18span>
1864d="L150" claile_lock" classflhea> 146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *1a ef="+code=fl" cl hr_l clef">fl->f hr_l clds" .ef="+code=fl" cfastypeef">fl-> *code=F_UNLCK" class="sr1865ck_lock18span>
fl->f hr_l clds" .ef="+code=fl" cfastypeef">fl-> *1!a "line" name="L1F_UNLCKU(struct );
(struct  *da ef="+code=fl" cposix__hea_to_lahea> 146      posix__hea_to_laheads" ce=fl_ss="line" name=f"hea> 146      laheads" , e=fl_ss="line" name=f hr_l clef">fl->f hr_l clds" >1867d="L150" claaaaaaaaass="ss="line" name=errords(struct  *1868d="L147" class="lineaaaaaaaagoto ile_lock" classoutds(struct  *code=F_UNLCK" class="sr1869ck_lock18span>

(struct  *da -ss="line" name=EFAULTds(struct  *code=F_UNLCK" class="sr1871ck_lock18span>
(struct  148       if (, e=fl_ss="line" name=f"hea> 146      laheads" , sizeofcile_lock" classflhea> 146      laheads" <<<51" class="line" name=1872ck_lock18span>
(struct  *da 0code=F_UNLCK" class="sr1873ck_lock18span>
(struct  *:51" class="line" name=1874ck_lock18span>
(struct  *code=F_UNLCK" class="sr1875ck_lock18span>

187" id="L67" class="line" nam/*** Allocate an empty lock stru1878ck_lock18span>
Allocate an empty lock stru1879ck_lock18span>
);

 * want to be holding t1883ck_lock18span>


 * want to be holding t1886ck_lock18span>
 * want to be holding t1887ck_lock18span>
 * want to be holding t1888ck_lock18span>

 * want to be holding t189ock_lock18span>
 * want to be holding t1891ck_lock18span>
 * want to be holding t1892ck_lock18span>
 * want to be holding t1893ck_lock18span>

189id="L189" class="line" name=* will only use F_SETLK, not F_SETLKW; =acy will set FL_SLEEPass=(and only if)* Allocate an empty lock stru1896ck_lock18span>
189" id="L67" class="line" nam * it must ss="li FILE_LOCK_DEFERRED, a=d call 
 * want to be holding t1899ck_lock18span>
 * want to be holding t19lock_lock19lock>
 * want to be holding t19l1ck_lock19lpan>
 * want to be holding t19l2ck_lock19lpan>
 * want to be holding t19l3ck_lock19lpan>
 * want to be holding t19l4ck_lock19lpan>

 * want to be holding t19l6ck_lock19lpan>
 * want to be holding t19l7ck_lock19lpan>
 * want to be holding t19l8ck_lock19lpan>
 * want to be holding t19l9ck_lock19lpan>

(struct (struct (struct fl->f hr_l clds"  f"line" name="L1f"> 146        if (, struca ss="line" name=f hr_l clef">fl->f hr_l clds"  f"line" name="L1confds(struct  *1911d="L212" class="line" name=1912ck_lock19void)
(struct (struct (struct (struct fl->"e" a> *<12" class="line" name=1913ck_lock19{
(struct (struct fl->"e" a> *cile_lock" class8 hpds(struct  146        if (>1914d="L147" claelse href="+code=fl" class1915ck_lock194
(struct  *cile_lock" class8 hpds(struct  146        if (, "line" name="L1confds(struct  *191" id=151" class="line" name=1917ck_lock19/a>);
lockpEXPORT_SYMBO"_GP"ds" cile_lock" classvfs__hea_f hrds(struct 1918d="L href="+code=fl" class1919ck_lock19ed for ="L218" class="li19ed >191id="L203tic sna "line" name="L1do__hea_f hr_wait> 146      do__hea_f hr_waitds" cstruca ss="line" name=f hrds(struct (struct 
fl->f hr_l clds"  f"line" name="L1f"> 146        if (<51" class="line" name=1921ck_lock19

(struct  *code=F_UNLCK" class="sr1923ck_lock19

(struct  *da ef="+code=fl" csecurity_f hr_l clef">fl->security_f hr_l clds" cile_lock" class8 hpds(struct  146        if (fl-> *192 href="fs/locss="ile_lock" classerrords(struct  *1926d="L141" claaaaaaaaass="li ss="line" name=errords(struct  *code=F_UNLCK" class="sr1927ck_lock19


(struct  *da ef="+code=fl" cvfs__hea_f hrds(struct (struct  146        if (, "line" name="L1NULL> 146      NULL*  *&g>193 d="L147" claaaaaaaaass="ile_lock" classerrords(struct  *1!a "line" name="L1FILE_LOCK_DEFERREDU(struct &g>1931d="L149" class="lineeeeeeeeebreakcode=F_UNLCK" class="sr1932ck_lock19>>
(struct  *da ile_lock" classwait_event_interruptibhrds(struct  146        if ( 146      la_waitds" , !ss="line" name=8"> 146        if ( 146      la_next*  *1933d="L147" cla147" class="!ss="line" name=errords(struct  *&g>1934d="L150" claaaaaaaaaaaaaaaaacontinuecode=F_UNLCK" class="sr1935ck_lock194
1936d="L141" claaaaaaaaaile_lock" classclass_delete_b"e" ef">fl->"e" s_delete_b"e" ds" cile_lock" class8"> 146        if (1937d="L150" claaaaaaaaabreakcode=F_UNLCK" class="sr1938ck_lock19)
9ck_lock198
194 d="L147" class="li ss="line" name=errords(struct  *code=F_UNLCK" class="sr1941ck_lock19{
);
}
 * want to be holding t1944ck_lock193
 * want to be holding t1945ck_lock19)
{
 146      lcntl_setlad="Lcunsigned sna "line" name="L1fdds(struct  *, struca ss="line" name=f hrds(struct (struct )
 146      laheads"  ss="line" name=__userds(struct <__userds"  file_lock" class"> 148       if (<51" class="line" name=1948ck_lock19;
)
fl->f hr_l clds"  f"line" name="L1f hr_l clef">fl->f hr_l clds"  a ile_lock" class"e" s_al"e"_l clef">fl->"e" s_al"e"_l cld="Lc195 d="L147" clastruca ss="line" name=fahea> 146      laheads"  ss="line" name=fahea> 146      laheads" code=F_UNLCK" class="sr1951ck_lock19;
 146      inameds"  f"line" name="L1iname> 146      inameds" code=F_UNLCK" class="sr1952ck_lock19}
(struct (struct 1953d="L147" clasna ss="line" name=errords(struct  *code=F_UNLCK" class="sr1954ck_lock19 = 1;
195 href="fs/locss="ile_lock" classl hr_l clef">fl->f hr_l clds" d=a ef="+code=fl" cNULL> 146      NULL*  *1956d="L141" claaaaaaaaass="li -ss="line" name=ENOLCKU(struct  *code=F_UNLCK" class="sr1957ck_lock19a>) \
)

 * want to be holding t196ock_lock19span>

(struct  *da -ss="line" name=EFAULTds(struct  *code=F_UNLCK" class="sr1962ck_lock19span>
(struct  146      laheads" , ile_lock" class"> 148       if (, sizeofcile_lock" classflhea> 146      laheads" <<<51" class="line" name=1963ck_lock19span>
(struct  *code=F_UNLCK" class="sr1964ck_lock19span>
196 href="fs/locss="line" name=iname> 146      inameds"  a ef="+code=fl" cl hr_iname> 146      l hr_inameds" cile_lock" class8 hpds(struct )>1966d="Lode=F_UNLCK" class="sr1967ck_lock19/a>);

 * want to be holding t1969ck_lock19span>

fl->mandatory_l clds" cile_lock" classiname> 146      inameds" )1e=fl_e=fl_ ile_lock" classmapping_writabhy_mappedef">fl->mapping_writabhy_mappedds" cile_lock" class8 hpds(struct (struct 
(struct  *da -ss="line" name=EAGAINds(struct  *code=F_UNLCK" class="sr1972ck_lock19span>
(struct  *code=F_UNLCK" class="sr1973ck_lock19span>

197id="L1le_lock" classagainU(struct 
(struct  *da ef="+code=fl" claheakto_posix__hea> 146      laheakto_posix__head="Lcile_lock" classf hpds(struct fl->f hr_l clds" , e=fl_ss="line" name=flhea> 146      laheads" 1977d="L147" class="ile_lock" classerrords(struct  *1978d="L147" class="linegoto ile_lock" classoutds(struct  *code=F_UNLCK" class="sr1979ck_lock19span>
(struct  *d=a ef="+code=fl" cF_SETLKWU(struct fl->f hr_l clds"  146      la_flagsd="L1|a ef="+code=fl" cFL_SLEEPU(struct  *code=F_UNLCK" class="sr1981ck_lock19/a>);


(struct  *da -ss="line" name=EBADFds(struct  *code=F_UNLCK" class="sr1984ck_lock19span>
 146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *)1212" class="line" name=1985ck_lock19span>
(struct 
(struct  146      l_mamed="L1e=fl_ ile_lock" classFMODE_READU(struct 
(struct  *code=F_UNLCK" class="sr1988ck_lock19span>
1989href="fs/loccase ef="+code=fl" cF_WRLCKU(struct 
(struct  146      l_mamed="L1e=fl_ ile_lock" classFMODE_WRITEU(struct 
(struct  *code=F_UNLCK" class="sr1992ck_lock19span>
1993href="fs/loccase ef="+code=fl" cF_UNLCKU(struct 
199 href="fs/locdefaula:51" class="line" name=1996ck_lock19span>
(struct  *da -ss="line" name=EINVA"sref">lockpEINVA"a> *code=F_UNLCK" class="sr1997ck_lock19span>
(struct  *code=F_UNLCK" class="sr1998ck_lock19span>

20lod="L141" claile_lock" classerrords(struct  *da ef="+code=fl" cdo__hea_f hr_wait> 146      do__hea_f hr_waitds" cile_lock" classf hpds(struct (struct  *, "line" name="L1f hr_l clef">fl->f hr_l clds" 
flde=F_UNLCK" class="sr20l1ck_lock20lpan>
20lid="L141" clae89" class="line" name/** Allocate an empty lock stru20l3ck_lock20lpan>

 * want to be holding t20l5ck_lock20lpan>


 * want to be holding t20l8ck_lock20lpan>
 * want to be holding t20l9ck_lock20lpan>
 * want to be holding t201ock_lock209

fl->spin_l cld="Lce=fl_ss="line" name=curr nams(struct fl->f hrsfl->f hr_l clds" (struct (struct (struct  *{
fl->spin_unl cld="Lce=fl_ss="line" name=curr nams(struct fl->f hrsfl->f hr_l clds" );
(struct  *1e=fl_e=fl_ ile_lock" class8ds(struct  146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *1!a "line" name="L1F_UNLCKU(struct 
 146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *1a "line" name="L1F_UNLCKU(struct )
(struct );

(struct  *:51" class="line" name=202ock_lock20
fl->"e" s_frer_l clds" cile_lock" classf hr_l clef">fl->f hr_l clds" 
(struct  *code=F_UNLCK" class="sr20<2ck_lock20//span>


(struct 20 * want to be holding t20<6ck_lock20
 * want to be holding t20<7ck_lock20


(struct (struct 
(struct <__userds"  file_lock" class"> 148       if (<51" class="line" name=20<9ck_lock20
>
fl->f hr_l clds"  ss="line" name=f hr_l clef">fl->f hr_l clds" code=F_UNLCK" class="sr20>1ck_lock20>>

 146      laheads" code=F_UNLCK" class="sr20>2ck_lock20>>
(struct  *code=F_UNLCK" class="sr20>3ck_lock202
>
(struct  *da -ss="line" name=EFAULTds(struct  *code=F_UNLCK" class="sr20>5ck_lock204
(struct  146      laheads" , ile_lock" class"> 148       if (, sizeofcile_lock" classflhea> 146      laheads" <<<51" class="line" name=20>6ck_lock20)
(struct  *code=F_UNLCK" class="sr20>7ck_lock20)
(struct  *da -ss="line" name=EINVA"sref">lockpEINVA"a> *code=F_UNLCK" class="sr20>8ck_lock20)
 146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *1!a "line" name="L1F_RDLCKU(struct  146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *1!a "linecode=fl" cF_WRLCKU(struct 9ck_lock208
(struct  *code=F_UNLCK" class="sr204ock_lock20)
{
(struct  *da ss="line" name=faheaspkto_posix__hea> 146      laheaspkto_posix__heads" cile_lock" classf hpds(struct fl->f hr_l clds" , e=fl_ss="line" name=flhea> 146      laheads" >20(struct  *20<3d="L147" cla147" clagoto ile_lock" classoutds(struct  *code=F_UNLCK" class="sr20<4ck_lock203
20< href="fs/locss="line" name=errords(struct  *da ef="+code=fl" cvfs_test_l clds(struct (struct fl->f hr_l clds" 20<6d="L141" class="ile_lock" classerrords(struct  *20<7d="L150" claaaaaaaaagoto ile_lock" classoutds(struct  *code=F_UNLCK" class="sr20<8ck_lock20;
)
 146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *1a ef="+code=fl" cl hr_l clef">fl->f hr_l clds" .ef="+code=fl" cfastypeef">fl-> *code=F_UNLCK" class="sr205ock_lock20;
fl->f hr_l clds" .ef="+code=fl" cfastypeef">fl-> *1!a "line" name="L1F_UNLCKU(struct 20<1d="L149" class="lineile_lock" classposix__hea_to_laheaspan>
 146      laheads" , e=fl_ss="line" name=f hr_l clef">fl->f hr_l clds" 20
(struct  *da -ss="line" name=EFAULTds(struct  *code=F_UNLCK" class="sr2054ck_lock20 = 1;
(struct  148       if (, e=fl_ss="line" name=f"hea> 146      laheads" , sizeofcile_lock" classflhea> 146      laheads" <<<51" class="line" name=20<5ck_lock20= 45;
(struct  *da 0code=F_UNLCK" class="sr20<6ck_lock205
)>20<7d="Lss="line" name=outds(struct  *:51" class="line" name=2058ck_lock20)
(struct  *code=F_UNLCK" class="sr2059ck_lock208


 * want to be holding t20s2ck_lock20span>
 * want to be holding t20s3ck_lock20span>


(struct (struct 

(struct <__userds"  file_lock" class"> 148       if (<51" class="line" name=2066ck_lock20a>);
);
fl->f hr_l clds"  f"line" name="L1f hr_l clef">fl->f hr_l clds"  a ile_lock" class"e" s_al"e"_l clef">fl->"e" s_al"e"_l cld="Lc20s8d="L150" clastruca ss="line" name=faheaspan>
 146      laheads" code=F_UNLCK" class="sr2069ck_lock20span>
 146      inameds"  f"line" name="L1iname> 146      inameds" code=F_UNLCK" class="sr207ock_lock20span>
(struct (struct 20s1d="L149" clasna ss="line" name=errords(struct  *code=F_UNLCK" class="sr2072ck_lock20span>

fl->f hr_l clds" d=a ef="+code=fl" cNULL> 146      NULL*  *20s4d="L150" claaaaaaaaass="li -ss="line" name=ENOLCKU(struct  *code=F_UNLCK" class="sr20s5ck_lock20span>
20s6d="L141" clae89" class="line" name/** Allocate an empty lock stru2077ck_lock20span>
 * want to be holding t20s8ck_lock20span>

(struct  *da -ss="line" name=EFAULTds(struct  *code=F_UNLCK" class="sr208ock_lock20    7
(struct  146      laheads" , ile_lock" class"> 148       if (, sizeofcile_lock" classflhea> 146      laheads" <<<51" class="line" name=2081ck_lock20/a>);
(struct  *code=F_UNLCK" class="sr2082ck_lock201

 146      inameds"  a ef="+code=fl" cl hr_iname> 146      l hr_inameds" cile_lock" class8 hpds(struct 20 4d="Lode=F_UNLCK" class="sr2085ck_lock20span>

 * want to be holding t20 7ck_lock20span>

fl->mandatory_l clds" cile_lock" classiname> 146      inameds" )1e=fl_e=fl_ ile_lock" classmapping_writabhy_mappedef">fl->mapping_writabhy_mappedds" cile_lock" class8 hpds(struct (struct 
(struct  *da -ss="line" name=EAGAINds(struct  *code=F_UNLCK" class="sr209ock_lock20span>
(struct  *code=F_UNLCK" class="sr2091ck_lock20span>


(struct 
(struct  *da ef="+code=fl" cfaheaspkto_posix__hea> 146      laheaspkto_posix__heads" cile_lock" classf hpds(struct fl->f hr_l clds" , e=fl_ss="line" name=flhea> 146      laheads" 20s href="fs/locss="ile_lock" classerrords(struct  *20s6d="L141" claaaaaaaaagoto ile_lock" classoutds(struct  *code=F_UNLCK" class="sr2097ck_lock20span>
(struct  *d=a ef="+code=fl" cF_SETLKWspan>

fl->f hr_l clds"  146      la_flagsd="L1|a ef="+code=fl" cFL_SLEEPU(struct  *code=F_UNLCK" class="sr20s9ck_lock20span>


(struct  *da -ss="line" name=EBADFds(struct  *code=F_UNLCK" class="sr2102ck_lock21lpan>
 146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *)1212" class="line" name=21l3ck_lock21lpan>
(struct 
(struct  146      l_mamed="L1e=fl_ ile_lock" classFMODE_READU(struct 
(struct  *code=F_UNLCK" class="sr21l6ck_lock21lpan>
2107href="fs/loccase ef="+code=fl" cF_WRLCKU(struct 
(struct  146      l_mamed="L1e=fl_ ile_lock" classFMODE_WRITEU(struct 
(struct  *code=F_UNLCK" class="sr211ock_lock219
2191d="L147" clacase ef="+code=fl" cF_UNLCKU(struct 2193d="L147" cladefaula:51" class="line" name=2194ck_lock21/a>);
(struct  *da -ss="line" name=EINVA"sref">lockpEINVA"a> *code=F_UNLCK" class="sr2195ck_lock214
(struct  *code=F_UNLCK" class="sr2116ck_lock21)
);

(struct  *da ef="+code=fl" cdo__hea_f hr_wait> 146      do__hea_f hr_waitds" cile_lock" classf hpds(struct (struct  *, "line" name="L1f hr_l clef">fl->f hr_l clds" 21

 * want to be holding t2123ck_lock21

fl->spin_l cld="Lce=fl_ss="line" name=curr nams(struct fl->f hrsfl->f hr_l clds" 
(struct (struct (struct  *
fl->spin_unl cld="Lce=fl_ss="line" name=curr nams(struct fl->f hrsfl->f hr_l clds" 
(struct  *1e=fl_e=fl_ ile_lock" class8ds(struct  146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *1!a "line" name="L1F_UNLCKU(struct 
 146      laheads" .ef="+code=fl" c"_typeef">fl->a typea> *1a "line" name="L1F_UNLCKU(struct 
(struct >
1ck_lock21>>
&g>21>id="Lile_lock" classoutds(struct  *:51" class="line" name=21>3ck_lock212
fl->"e" s_frer_l clds" cile_lock" classf hr_l clef">fl->f hr_l clds" >
(struct  *code=F_UNLCK" class="sr21>5ck_lock214
6ck_lock21)
7ck_lock21)
8ck_lock21)
9ck_lock218
)
{
 * want to be holding t21<2ck_lock21/a>);
}
fl->"e" s_remove_posixds" cstruca ss="line" name=f hrds(struct (struct (struct (struct  *21<4d="L212" class="line" name=21<5ck_lock21)
fl->f hr_l clds"  ss="line" name=l clef">fl->"e" a> *code=F_UNLCK" class="sr21<6ck_lock21{
2147d="L150" cla188" class="line" name/** Allocate an empty lock stru21<8ck_lock21;
)
;
;
}
 146      l hr_inameds" cile_lock" class8 hpds(struct (struct  *2153d="L147" cla147" class="licode=F_UNLCK" class="sr2154ck_lock21 = 1;
215 href="fs/locss="line" name=l clef">fl->"e" a> *.ef="+code=fl" cfastypeef">fl-> *1a "line" name="L1F_UNLCKU(struct 
fl->"e" a> *.ef="+code=fl" cfasflags> 146      la_flagsd="L1a ef="+code=fl" cFL_POSIXU(struct (struct ) \
fl->"e" a> *.ef="+code=fl" cfasstartds(struct 2158d="L147" claile_lock" classl clef">fl->"e" a> *.ef="+code=fl" cfasendds(struct (struct 
fl->"e" a> *.ef="+code=fl" cfasownerds(struct (struct  *code an empty lock stru216ock_lock21span>
fl->"e" a> *.ef="+code=fl" cfaspidds(struct (struct (struct  *code an empty lock stru2161ck_lock21span>
fl->"e" a> *.ef="+code=fl" cfasf hrds(struct (struct 
fl->"e" a> *.ef="+code=fl" cfasops> 146      la_opsds" da ef="+code=fl" cNULL> 146      NULL*  *code an empty lock stru2163ck_lock21span>
fl->"e" a> *.ef="+code=fl" cfaslmops> 146      la_lmopsds" da ef="+code=fl" cNULL> 146      NULL*  *code an empty lock stru2164ck_lock21span>
216 href="fs/locss="line" name=vfs__hea_f hr> 146      vfs__hea_f hrds" cile_lock" classf hpds(struct (struct fl->"e" a> *, ile_lock" classNULL> 146      NULL*  *);
>2167d="L147" class="ile_lock" classl clef">fl->"e" a> *.ef="+code=fl" cfasops> 146      la_opsds" de=fl_e=fl_ ile_lock" classl clef">fl->"e" a> *.ef="+code=fl" cfasops> 146      la_opsds" (struct  *2168d="L147" class="liness="line" name=l clef">fl->"e" a> *.ef="+code=fl" cfasops> 146      la_opsds" (struct  *ce=fl_ss="line" name=l clef">fl->"e" a> *


lockpEXPORT_SYMBO"ds" cile_lock" class"e" s_remove_posixef">fl->"e" s_remove_posixds" 




(struct <"e" s_remove_laheads" cstruca ss="line" name=f hrds(struct (struct 21s" id=212" class="line" name=21s8ck_lock21span>
 146      inameds"  fa1le_lock" classiname> 146      inameds"  a ef="+code=fl" cl hr_iname> 146      l hr_inameds" cile_lock" class8 hpds(struct 217id="L149" clastruca ss="line" name=f hr_l clef">fl->f hr_l clds"  f"line" name="L1f"> 148      fl*  *code an empty lock stru218ock_lock21    7
fl->f hr_l clds"  *f"line" name="L1beforeef">fl->before*  *code an empty lock stru2181ck_lock21/a>);
218id="L141" class="!ss="line" name=iname> 146      inameds" (struct  *2183d="L147" cla147" class="licode=F_UNLCK" class="sr21 4ck_lock21span>
21 5d="L141" class="ile_lock" classl hpds(struct (struct (struct (struct  146      laheads" <1212" class="line" name=21 6ck_lock21span>
fl->f hr_l clds"  ss="line" name=f"> 148      fl*  * a 212" class="line" name=21 7ck_lock21span>
(struct (struct (struct  *, href="+code=fl" class2188ck_lock21span>
(struct (struct 
 146      la_flagsd="L1a ef="+code=fl" cFL_FLOCKU(struct 
fl-> *1a "line" name="L1F_UNLCKU(struct 
(struct (struct 
2193d="L147" cla147" claile_lock" classl hpds(struct (struct  146      laheads" cile_lock" classf hpds(struct (struct  148      fl*  *2194d="L150" claaaaaaaaass="ss="line" name=f"> 148      fl*  *.ef="+code=fl" cfasops> 146      la_opsds" de=fl_e=fl_ ile_lock" classf"> 148      fl*  *.ef="+code=fl" cfasops> 146      la_opsds" (struct  *219 href="fs/loc147" cla147" claile_lock" classl"> 148      fl*  *.ef="+code=fl" cfasops> 146      la_opsds" (struct  *ce=fl_ss="line" name=f"> 148      fl*  *2196d="L141" cla151" class="line" name=2197ck_lock21span>

fl->spin_l cld="Lce=fl_ss="line" name=iname> 146      inameds" (struct  *
fl->before*  *1a e=fl_ss="line" name=iname> 146      inameds" (struct  *code an empty lock stru22lock_lock22lock>

 148      fl*  * a f"line" name="L1beforeef">fl->before*  *)1!a "line" name="L1NULL> 146      NULL*  *< 212" class="line" name=2202ck_lock22lpan>
 148      fl*  *(struct (struct 
(struct  148      fl*  *<< 212" class="line" name=2204ck_lock22lpan>
fl->"e" s_delete_l clds" cile_lock" classbeforeef">fl->before*  *)code an empty lock stru22l5ck_lock22lpan>


<3="+code=fl" cfasops> 146(struct  148      fl*  *2194d="L150" claaaaaaaaass="ss="line" name=f"> 148      fl*  *.ef="+cod4ame="y ef">fl->"e" a> *, ile clds" cile_lock" classbeforeef">fl->before*  *)code an empty loc8cks.21spa>lock stru21s9ck_lock21sp2=21092k_lock21lpan>
22a href="fs/locks.22lpay l to a8      fl*  *.e*1a "line" name="L1F_UNLCKU(>(struct k stru22lock_lock22lock>2pan>
2a href="fs/locks.21spa>2191d="(struct 219id="sr21s4ck_lock21span>
(struct 2114d="L150" claaaaaaaaa2le_lo2k" classerrords(staaaaaaaaaaaaaaaaacontinBUe holding t20<6ckUan>
<_lock20span>
lockpEINVA"a> *c2de=F_21aa147" cla147" claile_lock21span>
(struct   class="line" name=22l1ck_lock22lpan>
(strunexde=fl" cOFFSET_MAXUnexde" name="L1beforeef">fl-&e=2117ck_l2ck21/a>);

(struct  21gt;f hr_l clds" 
 146      inameds" (struct  *code26     2do__hea_f hr_waitds" cile2lock"2classf_lock21span>
(struct 2cmda>21>->f hr_l clds" .ef="+cod2fs/lock21<2s>212id="L170" class="lin2" nam21   * f le at =ac sloc time,/*a href="fs/locks.21spa>217id="L2claose/lcn2l racr a=d recover by* Al2ocate22t =aii timemment"> * want to bbbbbbldnun="fs/ahead - stop >211mptyck_ a2ck_loheads217id="L2cLCK" clas2="line" nam 147" cla* ssl2asing2=ac "hea =aat=was just acquir bbbbbb@>211er:12124d0idch50" c>211mpts217id="L2cocks.21/a2me=        */* Allocate a2 empt2 lock stru21<4ck_lock21217id="L2ck stru22l5de=fl" cl hr_l clef">fl->22lock stru21s6ck_lock21span>
(struct 
(struct 2l2>f      inameds" 2178d=  *f"line" name="L1beforeef">fl->before*  *>211erline" name="L1b>211erease_privatrds(struct  146      la2eads"22> 146      l hr_inameds" 2n empty lo2k stru21<9ck_lock2112k_lock21>>
(struct  *:51" 2lass=23 lock stru2161ck_lock21span>="fs/locss="line" name=beforeef">fl->before*  *1a e="fs/ed_"fs/ahead="+code=fl" ci_="fs/ed_"fs/aheads(struct  *code2fs/locks.2222133d="L147" cla1le_l2ck" c23class="ile_loc*  *.ef="+cod4ame=>211erline" name="L1b>211ereasename=IS_FLOCKU(strunexde=fl" cOFFSET_MAXUnexde" n_privatrds(struct (stIS_FLOCKU(s__lock22lpan>

2>211erline" name="L1b>211erease_(struct  *code2fme=EINVA"2="fs/locks.21>&g>21>4d="L250" c2ass="li ss="lielsestruct  *code2fk stru22l5(struct  statu196d="L141" cla1statu1ock22lp"line" name/** AlloEN  laheads" , ile_loEN e" name="L1beforeef">fl-&lock212
 146ty lock stru21<7ck_lock21
(struct  *code2f=fl_ss="li *code2fe_lock" c2"L189" class="line" name=2aTaii23lassf_lock21span>

 * want t/*a href="fs/locks.21spa>217id="L2e an empty2lock stru21<3ck_lock21217id="L2remove_pos2xds" cstruca ss="line" na2e=f h2ds(struct (str24struct 22>fl-&g2;"e" a> *code=F_UNLCK" cl2ss="s24lock stru21s6ck_lock21span>
{
214id="L188" class="lin2" nam24href="fs/locks.20spa>20 8hre(struct  148fl->f hr_l clds"  *f"line" name="L1beforeef">fl->before*  *code an empty lock stru_privatrds(struct 2142d="L189" class="line" nam2=====2===* p      l hr_inameds" 2s.21212
fl->f hr_l clds"  ss="line" name=f"> 148      ty lock stru22l6ck_lockstru_privatrds(struct 212id="L170" class="line" na2ec14725s/locks.21voi>219id="ass="line" name/* BITSaastruca ss="line" name=f hr_l clef">fl->f hr_l clds"  ss="line" name=f"> 148      ty lock stru22l6ck_lockstru"L150" claaaaaaaaass="ss="line" name=f"> 148      fl*  *.eCANCELs="sr2167ck_lock21/CANCELs=> 148      fl*  *21span>
25class="ile_loass="li2l2>"elock21span>

2198d="L147" cla2 ock212<6ck_lock215
(struct       fl*  *CONFIG_PROC_FS="+code=fl" ci_CONFIG_PROC_FS       *aTaii might b"hea, 2di held on2d="L147" claile_lock" cla2sl cl2f">fl<#include &lf"> 148include/ailux/nywa_fs.h"L147" clfl6ck_lilux/nywa_fs.h>fl2142ru21<9ck_lock218
 148include/ailux/seq_lock.h"L147" clfl6ck_lilux/seq_lock.h>fl212ck_lock21span>
(struct  *code 2n emp2y lockf">fl->f hr_l clock2211er cl_ock stru22l6ck_lock2211er cl_lass=      l hr_inameds" 2tru2162ck_2ock21span>
 146li_cpuock stru22l6ck_li_cpuock2(struct  *code2u2163ck_lo2k21span>
21< href="fs/lasff/a163d=" classNULL> 146li_ldnock stru22l6ck_li_ldnock2(struct  *code2uhref="fs/2_lock21span>
(struct2(struct fl-&g2;"e" 2> *, istatic  href="fs/locks.21spa>21_get_statu196d="L141" cla1a>21_get_statu1
->before*  *cspan>
fl->f hr_l clds"  *f"line" name="L1beforeef">fl->before*  *code an empty lock stru 21< href="fs/lasff/a163d=     inameds" 
->before*  *pfllocate an emptypflstru_privatrds(struct  146      la_opsds2  146      l hr_inameds" 2ease_priva2ra> *ce=fl_ss="line" name2l cle2name=iname> 146      inameds"  fock" classfds(struct lockpEXPORT_SYM2O"ds"2e=f hrds(sunsign1fl<2a>->"e" s_remove_posix2s" 
2a href="fs/locks.21spa>212id="L27class="ile_loc*  *.ef="+cod4ame=ass="liness="ss="line" name=IS_FLOCKU(strunsineaaaaaaaa.ef="+codensinestru_privatrds(struct 217" 2d="L67" class="line" nam=2aTaii27" classerrords(stIS_FLOCKU(s="lineaaaaaaaa.ef="+code=fl" cfasf hrds(struc=fl_vn_ock stru22l6ck_=fl_vn_stru"L150" claaaaaaaass="liness="ss="line" name=IS_FLOCKU(strunsineaaaaaaaa.ef="+codensinestru_" cile_lock" classf hpds2shref="fs/2n open f hr.* Allocate an2empty27ss="li ss="lielsestruct  *code289" class=2line" name=*/* Allocate a2 empt2a>20s6d="L141" clae89"IS_FLOCKU(s="lineaaaaaaaa.ef="+code=fl" cfasf hrds(strucass="liness="ss="line" name=IS_FLOCKU(struineaaaaaaaa.ef="+code=fl" cf" cile_lock" classf hpds2sfl_ss="li2ads" cstruca ss="line" na2e=f h2         *aTaii might b"hea, 2p(struct  148 148      fl*  *code ss="liness="ss="line" name=IS_FLOCKU(struct (struct ->f hr_l clds" .ef="+cod2ks.21   >228&d="L150" clastruca ss="2ine" 27="fs/locks.22loc>220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"%lld:%s "ck" cla8      fl*  *an>
      fl*  *code ss="liness="ss="line" ;before*  *)code an empty lostruct  *220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"%6s %s "ck" cla8ore*  *)code an empty losspa>217" 2>2183d="L147" cla147" cla2s="li28" classerrords(staaaaaaaaaaaaa      fl*  *code ss="liness="ss="line" name=IS_FLOCKU(struca>-> *1a "line" nameUNLCK" class="sr211ockL_ACCESS="+code=fl" ci_kL_ACCESSne" ; ?<"fs/locks.20s6 >"ACCESS"ck" cla :<"fs/locks.20s6 >"a href"ck" cla8ore*  *)code an empty loshref="fs/2lass="ile_lock" classl hp2s2struct  >"*NOINODE*"ck" cla :ore*  *)code an empty los9" class=2e=fl_e=fl_ ile_lock" clas2l hpd2822lpa>220 href="fs/loc147" claaaaauct       fl*  *codelass="sr2071ck_lock20span>
 >"MANDATORY"ck" cla :<"fs/locks.20s6 >"ADVISORYf"ck" cla_" cile_lock" classf hpds2ffl_ss="li2l_opds(struct fl->"e" s_delete_l clds" cile_lock" classbeforeef">fl->before*  *)code an empty loef="fs/loc2s.21spa>2187d="L150" claa2aaaaa2aaaaaaaa.ef="+code=fl"d="L147" cla147" class="liness="ss="line" name=IS_FLOCKU(strut 


      fl*  *code span>
 >"ete_l  MSNFSpa>21"ck" cla_" cile_lock" classf hpds2fase_priva2ks.21spa>21 id="L149" cla2s="li2eaaaaaaaa.ef="+code=fl}ielsecfore*  *)code an empty loes.21   >22ef="fs/locks.21spa>21spd=2L149"2class="lineaaaaaaaa.ef="+code=loc>220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"ete_l  ADVISORYf1"ck" cla_" cile_lock" classf hpds2>
2191d="L142" cla2s="lineaaaaaaaa.ef="+c_lock21span>
219id=2L141"2class="line}co}ielseclass"e" s_delete_l cleef">fl->"e" a> *, ile clds" cile_lock" classbeforeef">fl->before*  *)code an empty lofl" cl_opd2(struct  146220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >", ilef1"ck" cla_" cile_lock" classf hpds2>href="fs/2s(struct (sclassslease_privatrd id=5ruct Na> 21< href="fs/la id=5ruct Na> clds" cile_lock" classbeforeef">fl->b cile_lock" classf hpds2>9" class=2ps> 146      la_opsds2  146220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"BREAKINGf1"ck" cla_" cile_lock" classf hpds2>fl_ss="li2ivatra> *ce=fl_ss="line" 2ame=f2> 148      fl*  *(struct f="fs/loc2assspin_l clef">fl-&g2;spin29code=F_UNLCK" class="sr21s4ckloc>220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"ACTIVEs4ck"ck" cla_" cile_lock" classf hpds2>=fl" cfas2nameds"  *code2de an empt2 lock stru21s9ck_lock21sp2n>

220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"BREAKER4ck"ck" cla_" cile_lock" classf hpds2>s.21   >22ck stru22lock_lock22lock>2
      fl*  *code span>
 >"UNKNOWN UNKNOWN k"ck" cla_" cile_lock" classf hpds3"line" nam3=2202ck_lock22lpan>
3(strut 
220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"%s "ck" cla8ore*  *)code an empty l3ck stru22l3ck_lock22lpan>
(strut 
<3="+code=fl" cfasops> 146(strut 
 >"RW4ck"ck" cla :<"fs/locks.20s6 >"READk"ck" cla cile_lock" classf hpds3"6coef="fc3_ssspin_l clef">fl-&g3fl*  3(strut 
 >"WRITf"ck" cla :<"fs/locks.20s6 >"NONEk"ck" cla_" cile_lock" classf hpds3"7coef="fc3_ameds" 
      fl*  *code span>
 >"%s "ck" cla8ore*  *)code an empty l3c9coef="fc3_k stru22lock_lock22lock>3pan>
3a href="fs/locks.21spa>2191d=" 21< href="fs/la id=5ruct Na> clds" cile_lock" classbeforeef">fl->b cile_lock" classf hpds3ss="line" 3ame=2192ck_lock21void)
219id="sr21s4ck(strut  *1a "line" name="L1F_UNLCKU(s?<"fs/locks.20s6 >"NLCKU"ck" cla :<"fs/locks.20s6 >"READk"ck" cla cile_lock" classf hpds3NLCK" clas3="sr2113ck_lock21{
(strut  WRa "line" name="L1F_UWRa ">
 >"WRITf"ck" cla :<"fs/locks.20s6 >"READk"ck" cla_" cile_lock" classf hpds3locks.21/a3>2114d="L150" claaaaaaaaa3le_lo3k" classerrord_lock21span>
lockpEINVA"a> *c3de=F_31aa147" cla147lass147" cla147" cllass="sr2071ck_lock20span>
219 href="fs/loc147" cla3oto i3e_lock#ifdef      fl*  *WE/CAN_BREAK_LSLK_NOW"sr2071ck_lock2WE/CAN_BREAK_LSLK_NOW->f hr_l clds" .ef="+cod3e=2117ck_l3ck21/a>);
220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"%d %s:%ld "ck" cla8      fl*  *truineaaaaaaaa.ef="+code=fl" cf8ore*  *)code an empty l3N=fl_ss="l3asserrords(struct  31code=F_UNLCK" class="sr21s4ckkkkkkkkacode=F_UNLCK" class="sr2071ck_lock20span>
      inameds" 
      inameds"      3do__hea_f hr_waitds" cile3lock"3classf#elsestruct  *code3N8cks.21sp3k" classcmdds(struct 3cmda>31_lock21lpan>
(struct 212id="L170" class="lin3" nam31 href="fs/locks.21spaloc>220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"%d %02x:%02x:%ld "ck" cla8      fl*  *truineaaaaaaaa.ef="+code=fl" cf8ore*  *)code an empty l3claose/lcn3l racr a=d recover by* Al3ocate32s/locks.21voi>219id="sr21s4ck      fl*  *MAJORaaaaaaaa.ef="+cMAJOR      fl*  *codelass="sr2071ck_lock20span>
      inameds" 
      inameds"       fl*  *MINORaaaaaaaa.ef="+cMINOR      fl*  *codelass="sr2071ck_lock20span>
      inameds" 
      inameds" fl->32_lock" classoutds(struct  seq_prck"cspan>
      fl*  *code span>
 >"%d <none/a> :0 "ck" cla8      fl*  *truineaaaaaaaa.ef="+code=fl" cf_" cile_lock" classf hpds3c=2117ck_l3>
211" id=51" _lock21span>
3l32* want to be d="L147" cla147" cl"y "+code=fl" cfasstart"y "+cod      fl*  *code ss="liness="ss="line" ;before*  *)code an empty l3le_lock" c3ass8lhea> 146      la3eads"32n>
(strupan>
(structb cile_lock" classf hpds3n empty lo3k stru21<9ck_lock21
220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"%Ld EOF\n"ck" cla8      fl*  *trs="liness="ss="line" name=IS_FLOCKU(stru"+code=fl" cOFFSET_MAXU(stru_" cile_lock" classf hpds3cs/lock21<3k_lock21>>
 *code3 classoutd3(struct  *:51" 3lass=33s/locks.21voi>219id="sr21s4ckloc>220pd="L51"seq_prck"cspan>
      fl*  *code span>
 >"%Ld %Ld\n"ck" cla8      fl*  *trs="liness="ss="line" name=IS_FLOCKU(stru"+code=fl" cOFFSET_MAXU(stru8      fl*  *trs="liness="ss="line" name=IS_FLOCKU(strupan>
2133d="L147" cla1le_l3ck" c33lass="line}co}ielsecfore*  *)code an empty l3gt;"e" s_f3er_l clds" cile_lock" cla3sf hr33" classerrords(stIS_FLOCKU(sseq_prck"cspan>
      fl*  *code span>
 >"0 EOF\n"ck" cla_" cile_lock" classf hpds3fme=EINVA"3="fs/locks.21>&g>21>4d="L350" c3ass="li ss="li_lock21span>
23>6d="33_lock_lock21span>
313" i33        *aTaii might b"hea, 3f=fl_ss="l321seq_lock96d="L141" cla1seq_lockfl->before*  *cspan>
 146      l hr_inameds" 3le ii bein3 removed* Allocate an emp3y loc33ame=iname> 146      inameds"  flock2211er cl_ock stru22l6ck_lock2211er cl_lass= code=F_UNLCK" cl1erline" name="L1b11ereasee=vfs__hea_f hr> 1hspan>
fl->f hr_l clds"  *f"line" name="L1beforeef">fl->before*  *code an empty lock stru,      fl*  *);
216id="L141" class="line" s="ss="line" name=f"> 148<" class="line" hlistks.tryock stru22l6ck_hlistks.try      fl*  *codevaaaaaaaa.ef="+cvruct8fl->f hr_l clds"  *f"line" name="L1beforeef">fl      fl*  *tru<3cef="fs/locks.21spau<3ce1spa_" cile_lock" classf hpds3remove_pos3xds" cstruca ss="line" na3e=f h34unction ii called on =ac las3rme=EINVA"3+code=fl" clasowner_tds(str34spa>2164d="Lode=F_UNLCK" class="_get_statu196d="L141" cla1a>21_get_statu1

 148      ti_ldnock stru22l6ck_li_ldnock28<"fs/locks.20s6 >""ck" cla_" cile_lock" classf hpds3>fl-&g3;"e" a> *code=F_UNLCK" cl3ss="s34U(struct ock213>2146d="Lode=F_UNLCK" cla3s="sr34 *, ile_lock" classNULL> 146listkfor_eachks.tryock stru22l6ck_listkfor_eachks.try
 14name=IS_FLOCKU(strubhead="+code=fl" ci_trubheadfl      fl*  *trubhead="+code=fl" ci_trubheadfl214id="L188" class="lin3" nam34code=F_UNLCK" class="de=F_UNLCK" class="_get_statu196d="L141" cla1a>21_get_statu1

 148      ti_ldnock stru22l6ck_li_ldnock28<"fs/locks.20s6 >" me=f""ck" cla_" cile_lock" classf hpds3>e_lock" c3=aii f hr, wr don't n3ed to34ads(struct  *2143d="L189" class="line" nam3=====34ame=iname> 14ass="li213213id="L170" class="line" na3ec14735e an empty lock stru2172ck_l3  l hr_ina3eds" cile_lock" class8 hp3s35classstatic  href/a>      fl*  * ref="fs/locks.21spa>21seq_lock96d="L141" cla1seq_lockfl->before*  *cspan>
->before*  *pdnock stru22l6ck_ldnock2b cile_lock" classf hpds33l35spa>2164d="Lo6      inameds"  flock2211er cl_ock stru22l6ck_lock2211er cl_lass= code=F_UNLCK" cl1erline" name="L1b11ereasee=vfs__hea_f hr> 1hspan>
-&g3"line" name="L1F_UNLCKU(str35U(struct 3<6ck_lock215
 146l1erline" name="L1b11ereaseme=f"> 148      ti_ldnock stru22l6ck_li_ldnock248      fl*  *(struct  la_opsds" de=fl_e=fl_foreef">_lg *f"line" name="L1beforeef">_lg *f"1spa_" cile_lock" classf hpds3di held on3d="L147" claile_lock" cla3sl cl357t;f hr_l clds" fl->before*  *1a e="fs/ed_"fs/ahead="+code=fl" ci_="fs/ed_"fs/aheads(struct  *code3d212143ru21<9ck_lock218
21seq_hlistks+cod_percpuock stru22l6ck_seq_hlistks+cod_percpu la_opsds" de=fl_e=fl_foreef">_listline" name="L1beforeef">_liststru  la_opsds" de=fl_e=fll1erline" name="L1b11ereaseme=f"> 148      ti_cpuock stru22l6ck_li_cpuock2,      fl*  * *code3d.21213ck_lock21span>
(struct  *code 3n emp36e an empty lock stru2172ck_l3tru2162ck_3ock21span>
 ref="fs/locks.21spa>21seq_lock96d="L141" cla1seq_lockfl->before*  *cspan>
      fl*  *21< href="fs/lasff/a163d=>->before*  *pdnock stru22l6ck_ldnock2b cile_lock" classf hpds3u2163ck_lo3k21span>
2164d="Lo6      inameds"  flock2211er cl_ock stru22l6ck_lock2211er cl_lass= code=F_UNLCK" cl1erline" name="L1b11ereasee=vfs__hea_f hr> 1hspan>
(struct3(struct fl-&g3;"e" 36 *, ile_lock"++ classNULL> 146l1erline" name="L1b11ereaseme=f"> 148      ti_ldnock stru22l6ck_li_ldnock2" cile_lock" classf hpds3/locks.21<3e=fl_e=fl_ ile_lock" clas3l cle36code=F_UNLCK"ass="li/locks.21spa>21seq_hlistknexd_percpuock stru22l6ck_seq_hlistknexd_percpu      fl*  *codevaaaaaaaa.ef="+cvruct8_listline" name="L1beforeef">_liststru  la_opsds" de=fl_e=fll1erline" name="L1b11ereaseme=f"> 148      ti_cpuock stru22l6ck_li_cpuock2,      fl*  * *code3e=fl" cfas3ps> 146      la_opsds3 
->f hr_l clds" .ef="+cod3PORT_SYMBO3sref">lockpEXPORT_SYM3O"ds"3e=f hrstatic  href="fs/locks.21spa>2122s+ hr_l clds"  ss="a>2122s+ h ref="fs/locks.21spa>21seq_lock96d="L141" cla1seq_lockfl->before*  *cspan>
fl<3a>->"e" s_remove_posix3s"       l hr_inameds" 3ck21span>
3a href="fs/locks.21spa>213id="L37a>216id="L141" class="line" ty lock stru21<7ck_lock21
(struct  *code31spa>217" 3d="L67" class="line" nam=3aTaii372163d="L147" cla1le_lock" clag_globalack stru21<7ck_lock21 la_opsds" de=fl_e=fl_foreef">_lg *f"line" name="L1beforeef">_lg *f"1spa_" cile_lock" classf hpds3shref="fs/3n open f hr.* Allocate an3empty37ss="l_lock21span>
(struct       inameds"  fseq_oper cions96d="L141" cla1seq_oper cions163d=="fs/locks.21spa>2122seq_oper cions96d="L141" cla1a>2122seq_oper cionseasee=v      l hr_inameds" 3clocks.21<3_UNLCK" class="sr2177ck_l3ck21s3 * want to be ref="fs/locks.21s+code=fl" cOFFSET_Ms+cod e=vfs__hea_f hr> 1aock22s+code=fl" cOFFSET_Maock22s+cod8ore*  *)code an empty l3p=fl" cfas3eds"  a ef="+code=fl" cl 3r_ina37line" name=f"ref="fs/locks.21nexde=fl" cOFFSET_Mnexd  e=vfs__hea_f hr> 1aock22nexde=fl" cOFFSET_Maock22nexd8ore*  *)code an empty l3pase_priva3lass8 hpds(struct 8ore*  *)code an empty l3f="fs/lock3.21/a>>2181d="Lode=F_UNLC3" cla3s="sr2>      laheads" cile_lock3struct  *217" 3>2183d="L147" cla147" cla3s="li38" clastatic ck" classl hr_l clelock22open 21< href="fs/laock22open ref="fs/locks.21spa>21ock" classfds(struct fl->f hr_l clds"line" name="L1beforfl->before*  *cfl*  *<< 212" class="line"      laheads" cile_lock3shref="fs/3lass="ile_lock" classl hp3s3struct      l hr_inameds" 3s9" class=3e=fl_e=fl_ ile_lock" clas3l hpd3822lpa>220 hreass="li/locks.21spa>21seq_open_ 1482122seq_oper cions96d="L141" cla1a>2122seq_oper cionsease8ore*  *)code an empty l3ffl_ss="li3l_opds(struct 
<3="+code=fl" cfassssssssssssssssssssssssssizeof ref="fs/locks.21spa>21lock2211er cl_ock stru22l6ck_lock2211er cl_lass)_" cile_lock" classf hpds3ef="fs/loc3s.21spa>2187d="L150" claa3aaaaa3aaaaaa_lock21span>
(struct  *21 id="L149" cla3s="li3eaaaaastatic consto6      inameds"  feforeoper cions96d="L141" cla1eforeoper cions163d=="fs/locks.21spnywa_aock22oper cions96d="L141" cla1nywa_aock22oper cionseasee=v      l hr_inameds" 3es.21   >23ef="fs/locks.21spa>21spd=3L149"38="fs/locks.22ref="fs/locks.21open 21< href="fs/lopensssssssssss=vfs__hea_f hr> 1aock22open 21< href="fs/laock22open8ore*  *)code an empty l3>
2191d="L143" cla3s="lineaaaaaaaref="fs/locks.21rean>
8ore*  *)code an empty l3>truct 219id=3L141"3class="line}coref="fs/locks.21llseeru21<7ck_lock21sssssssss=vfs__hea_f hr> 1seq_lseeru21<7ck_lock218ore*  *)code an empty l3>spa>217" 3(struct  1seq_rea id=5(struct 2>      laheads" cile_lock3>9" class=3ps> 146      la_opsds3 (struct fl_ss="li3ivatra> *ce=fl_ss="line" 3ame=f395 clastatic ck" classl hr_l cle__inide=fl" cOFFSET_M__inid163d=="fs/locks.21spnywa_aock22inide=fl" cOFFSET_Mnywa_aock22inid
f="fs/loc3assspin_l clef">fl-&g3;spin39code=      l hr_inameds" 3>=fl" cfas3nameds"  >"_inam"ck" cla8<0,      fl*  *< daa ef="+code=fl" cl hpds<8
 14ass="lis.21   >23ck stru22lock_lock22lock>3 ide=fl" cOFFSET_Mmodu1f"> id

4
_may_rean - che217 thatfalcnreglockis freekof a>217 href="fs/locks.21spa>217id="L4c5 stru22l4cvatra> *ce=fl_ss="line" 4ck22l40s(struct  rean217id="L4c6 stru22l4cssspin_l clef">fl-&g4fl*  40href="fs/locks.20spa>20 8hre<      @s+cod:falcnfirstobyte to rean217id="L4c7 stru22l4cameds" 20 8hre<      @len:falcnnumberkof bytes to rean217id="L4c8 stru22l4clock stru21s9ck_lock21sp4=21094k_lockstru21s6ck_lock21span>
{
4pan>
4a href"fs/locks.20spa>20 8hre<      Emulates Windows a>21Na> require20 8s.  Whole-eforfl>{
 * want te<      mand cl_y a>217 (share modes)u21n nywhibit a rean ann217id="L4NLCK" clas4="sr2113ck_lock21{
21<3d="Lvoiiiiiibyte-range a hrefa>217 21n nywhibit a rean iffalcy overlap.217id="L4Nlass="lin4>2114d="L150" claaaaaaaaa4le_lo41s(struct lockpEINVA"a> *c4de=F_41struct 24Nk stru22l4>219 href="fs/loc147" cla4oto i41lock stru21s6ck_lock21span>
 14from knfsn ann ownershipkof a>217kis never 2he21ed.217id="L4N5 stru22l4ck21/a>);
(struct (struct  41code=ck" classl hr_l clelock_may_rean 21< href="fs/laock_may_rean ref="fs/locks.21spa>21ock" classfds(struct ,sunsign1 a>      fl*  *     4do__hea_f hr_waitds" cile4lock"41> 146      l hr_inameds" 4N8cks.21sp4k" classcmdds(struct 4cmda>41ame=iname> 146      inameds"  flds"  *f"line" name="L1beforeef">fl->before*  *code an empty lock stru" cile_lock" classf hpds4fs/lock21<4s>212id="L170" class="lin4" nam41 href="fs/locck" classl hr_l cleresulde=fl" cOFFSET_Mresuldeasee=v1" cile_lock" classf hpds4claose/lcn4l racr a=d recover by* Al4ocate42e an empty lock stru2172ck_l4cLCK" clas4="line" nam 147" cla* ssl4asing42a>216id="L141" class="line" ty lo stru21<7ck_lock21 la_opsds" de=fl_e=fllass="sr2071ck_lock20span>
      inameds" (struct  *code4cocks.21/a4me=        */* Allocate a4 empt42de=fl" claheaforss147" cla147" class="liness="ss="line" a=vfs__hea_f hr> 1lass="sr2071ck_lock20span>
      inameds" (strucass="liness="ss="line" name=IS_FLOCKU(strunexde=fl" cOFFSET_Mtrunexdsv      l hr_inameds" 4cme=EINVA"4=fl_ss="line" name=curr n4ms(sclassslease_privatr"y "+code=fl" cfasstart"y "+cod      fl*  *code ss="liness="ss="line" ;before*  *)code an empty l4ck stru22l4de=fl" cl hr_l clef">fl->42_lock" classoutdsWU(sclassslease_privatrass="liness="ss="line" name=IS_FLOCKU(strut  RDa "line" name="L1F_URDa "      laheads" cile_lock4c=2117ck_l4>

<3="+code=fl" cfassssssssssssssssscontinue(struct  *code4c=fl_ss="l4"+code=fl" cl hr_l clef">4l42code=F_UNLCK" class="WU(sclass147" cla147" class="liness="ss="line" name=IS_FLOCKU(strupan>
) ||assslease_privatrass="liness="ss="line" name=IS_FLOCKU(stru"+code=fl" cOFFSET_MAXU(stru ame=assslease_privatrs+code=fl" cOFFSET_Ms+cod + a>      fl*  * 146      la4eads"42n>
fl->"e" s_delete_l clds" cile_lock" classbeforeef">fl->before*  *)code an empty l4cs/lock21<4k_lock21>>
(sclas!s147" cla147" class="liness="ss="line" name=IS_FLOCKU(strut 
(struct  *:51" 4lass=43s/locks.21voi>219id="sr21s4cksssssssscontinue(struct  *code4fs/locks.2422133d="L147" cla1le_l4ck" c43lass="line}code=F_UNLCK" claslass147" cla147" class="liness="ss="line" name=IS_FLOCKU(strut (stsr21s4cksssssssscontinue(struct  *code4fme=EINVA"4="fs/locks.21>&g>21>4d="L450" c43 classF_SETLKWU(s}aelsestruct  *code4fk stru22l4WU(scontinue(struct  *code4f=2117ck_l4

<3="+code=fl" cfasloc>220pd="L51"resulde=fl" cOFFSET_Mresuldeasee=v 14" class="line" ty lock stru21<7ck_lock21
(struct  *code4fs/lock21<4" name=* from =ac task"i fd43me=f hr_l cleass="li/locks.21spa>21resulde=fl" cOFFSET_Mresuldease(struct  *code44id="L170"4class="line" namec* arr d4leted44e an }OFFSET_MAXif (code an e4e an empty4lock stru21<3ck_lock2121EXPORT_SYMBOa ef="+code=fl" EXPORT_SYMBOa clds" cile_lock" cllock_may_rean 21< href="fs/laock_may_rean>(struct  *code4rme=EINVA"4+code=fl" clasowner_tds(str44spa>2struct  *code4rk stru22l4;"e" a> *code=F_UNLCK" cl4ss="s44lock stru21s6ck_lock21span>/*a href="fs/locks.21spa>217id="L4>ock214>2146d="Lode=F_UNLCK" cla4s="sr44s(struct 217 href="fs/locks.21spa>217id="L4/locks.21<4a>214id="L188" class="lin4" nam44href="fs/locks.20spa>20 8hre<      @0span:falcn0span thatfis beNa> written217id="L4/e_lock" c4=aii f hr, wr don't n4ed to44line""fs/locks.20spa>20 8hre<      @s+cod:falcnfirstobyte to write217id="L4/8cks.21sp4d="L189" class="line" nam4=====44_lockstru21s6ck_lock21span>
<      @len:falcnnumberkof bytes to write217id="L4/s/lock21<420 8hre<217id="L4s.21214id="L170" class="line" na4ec14745t =aii timemment"> * want te<      Emulates Windows a>21Na> require20 8s.  Whole-eforfl>{
45ef="fs/locks.2121<3d="Lvoiiiiiimand cl_y a>217 (share modes)u21n nywhibit a write ann217id="L4217id="L4 href="fs/4ocss="line" name=l clef">4l45struct 217id="L4 k stru22l4"line" name="L1F_UNLCKU(str45lock stru21s6ck_lock21span>
 14N.B.=aii* functlockis only ever 21ll1{
217kis never 2he21ed.217id="L4 locks.21<4CLOSEU(struct (struct 21ock" classfds(struct ,sunsign1 a>      fl*  *214ck_lock21span>
fl->f hr_l clds"  *f"line" name="L1beforeef">fl->before*  *code an empty lock stru(struct  *code4l" ctgidds4/a>(struct  *code 4n emp46s/locks.21voick" classl hr_l cleresulde=fl" cOFFSET_Mresuldeasee=v1" cile_lock" classf hpds4tru2162ck_4ock21span>

 la_opsds" de=fl_e=fllass="sr2071ck_lock20span>
      inameds" (struct  *code4uhref="fs/4_lock21span>
 1lass="sr2071ck_lock20span>
      inameds"  1ass="liness="ss="line" name=IS_FLOCKU(strunexde=fl" cOFFSET_Mtrunexdsv      l hr_inameds" 4/a>(struct4classslease_privatr"y "+code=fl" cfasstart"y "+cod      fl*  *code ss="liness="ss="line" ;before*  *)code an empty l4=fl_ss="li4e" name="e" ef">fl-&g4;"e" 46n>
<3="+code=fl" cfasssssssssclass147" cla147" class="liness="ss="line" name=IS_FLOCKU(strupan>
) ||assslease_privatrass="liness="ss="line" name=IS_FLOCKU(stru"+code=fl" cOFFSET_MAXU(stru ame=assslease_privatrs+code=fl" cOFFSET_Ms+cod + a>      fl*  * 146      la_opsds4 
fl->"e" s_delete_l clds" cile_lock" classbeforeef">fl->before*  *)code an empty l4ease_priva4ra> *ce=fl_ss="line" name4l cle46_lock21lpan>
(strut 
lockpEXPORT_SYM4O"ds"46 href="fs/locks.21spa>2191d=" *code4sixef">fl<4a>->"e" s_remove_posix4s" 219id="sr21s4cklass147" cla147" class="liness="ss="line" name=IS_FLOCKU(strut 
 *code4sru2162ck_4a href="fs/locks.21spa>214id="L47lass="line}code=F_UNLCK" claskkkkkkk *code4s2163ck_lo4d="L67" class="line" nam=4aTaii47" classerrords(st}aelsestruct  *code4shref="fs/4n open f hr.* Allocate an4empty47 classF_SETLKWU(skkkkkkk *code4sa>(struct4line" name=*/* Allocate a4 empt47_lock" classoutds(struct  resulde=fl" cOFFSET_Mresuldeasee=v
<3="+code=fl" cfasruct aOFFSET_MAXif (code an e4clocks.21<4_UNLCK" class="sr2177ck_l4ck21s4 * want to be }OFFSET_MAXif (code an e4p=fl" cfas4eds"  a ef="+code=fl" cl 4r_ina477t;f hr_l clds" 2127d="lass="sr2071ck_lock20span>
      inameds" (struct  *code4pase_priva4lass8 hpds(struct  14ass="li/locks.21spa>21resulde=fl" cOFFSET_Mresuldease(struct  *code4pORT_SYMBO48&d="L150" clastruca ss="4ine" 47ile_lock" class"e" s_remove_p4f="fs/lock4.21/a>>2181d="Lode=F_UNLC4" cla48e an empty lock stru2172ck_l4struct  *2183d="L147" cla147" cla4s="li48unction ii called on =ac las4shref="fs/4lass="ile_lock" classl hp4s4structstatic ck" classl hr_l cle__inide=fl" cOFFSET_M__inid163d=="fs/locks.21speforaock_inide=fl" cOFFSET_Meforaock_inid clds hre      laheads" cile_lock4s9" class=4e=fl_e=fl_ ile_lock" clas4l hpd4822lpafore*  *)code an empty l4ffl_ss="li4l_opds(struct 
<3="+code=ck" classl hr_l cleiu21<7ck_lock21 *code4ef="fs/loc4s.21spa>2187d="L150" claa4aaaaa4aaaaaastruct  *code4e=fl" cfas4="+code=fl" class2188ck_l4ck21s487t;f hr_l clds"  1kmem_cachl_creaef="fs/locks.21spkmem_cachl_creaef clds"fs/locks.20s6 >"eforeef">_cachl"ck" cla8ore*  *)code an empty l4fase_priva4ks.21spa>21 id="L149" cla4s="li48_lock21lpan>
fl      fl*  *(struct  *code4sORT_SYMBO4ef="fs/locks.21spa>21spd=4L149"48="fs/struct  *code4>
2191d="L144" cla4s="lineaaaaaaa" cile_lock" cllg_aock_inide=fl" cOFFSET_Mlg_aock_inidref="fs/lock212127d="_foreef">_lg *f"line" name="L1beforeef">_lg *f"1spa8<"fs/locks.20s6 >"eforeef">_lg *f""ck" cla_" cile_lock" classf hpds4>truct 219id=4L141"49lass=     laheads" cile_lock4>spa>217" 4(struct href="fs/4s(struct (s"e" s_delete_l cNIT_HLIST_HEADasendd="L1a ef=cNIT_HLIST_HEAD clds" cile_lock" clperecpu_pt_ock stru22l6ck_perecpu_pt_ref="fs/lock212127d="_foreef">_listline" name="L1beforeef">_liststru  " cile_lock" cliu21<7ck_lock219" class=4ps> 146      la_opsds4 (struct fl_ss="li4ivatra> *ce=fl_ss="line" 4ame=f49n>
<3="+code=ass="lif="fs/loc4assspin_l clef">fl-&g4;spin49aaaaa_lock21span>
 *
 id21llu21<7ck_lock21 id21ll clds" cile_lock" claforaock_inide=fl" cOFFSET_Meforaock_inid cld_" cile_lock" classf hpds4>ORT_SYMBO4ck stru22lock_lock22lock>4


The original LXR software byfalcncile_lockhttp://sourceforge.net/project clxrl>LXR pa>2unidystru aii* experi20 8al verslockbyfcile_lockmailto:lxr@ck_ux.no_Mlxr@ck_ux.nostru.
lxr.ck_ux.no kindly hostedkbyfcile_lockhttp://www.redpill-ck_pro.no_MRedpill Lk_pro ASstru providerkof Lk_ux consuldNa> ann oper cions services since 1995.