struct file_lock { struct file_lock *fl_next;/* singly linked list for this inode */ struct list_head fl_link;/* doubly linked list of all locks */ struct list_head fl_block;/* circular list of blocked processes */
fl_owner_t fl_owner; unsignedchar fl_flags; unsignedchar fl_type; unsignedint fl_pid; struct pid *fl_nspid;
wait_queue_head_t fl_wait; structfile*fl_file;
loff_t fl_start;
loff_t fl_end;
struct fasync_struct * fl_fasync;/* for lease break notifications */ unsignedlong fl_break_time;/* for nonblocking lease breaks */
conststruct file_lock_operations *fl_ops;/* Callbacks for filesystems */ conststruct lock_manager_operations *fl_lmops;/* Callbacks for lockmanagers */ union{ struct nfs_lock_info nfs_fl; struct nfs4_lock_info nfs4_fl; struct{ struct list_head link;/* link in AFS vnode's pending_locks list */ int state;/* state of grant or error if -ve */ } afs; } fl_u; };