file_lock
int (*lock)(struct file *, int, struct file_lock *);
int (*flock)(struct file *, int, struct file_lock *);
int (*setlease)(struct file *, long, struct file_lock **);
struct file_lock;
lockr_t file_lock(SCR *, char *, int, int);
lock_hwlock(struct file_lock *fl)
unlock_hwlock(const struct file_lock *fl)
test_hwlock(const struct file_lock *fl __unused,
struct file_lock **conflicting_fl __unused)
duplicate_block(struct file_lock *fl)
struct file_lock *ifl;
add_blockingfilelock(struct file_lock *fl)
remove_blockingfilelock(struct file_lock *fl)
struct file_lock *ifl,*nfl;
struct file_lock *ifl, *nfl; /* Iterator */
lock_partialfilelock(struct file_lock *fl)
unlock_partialfilelock(const struct file_lock *fl)
struct file_lock *lfl,*rfl,*releasedfl,*selffl;
enum partialfilelock_status lock_partialfilelock(struct file_lock *fl);
void send_granted(struct file_lock *fl, int opcode);
struct file_lock *ifl, *nfl;
struct file_lock * allocate_file_lock(const netobj *lockowner,
test_partialfilelock(const struct file_lock *fl,
struct file_lock **conflicting_fl)
void deallocate_file_lock(struct file_lock *fl);
void fill_file_lock(struct file_lock *fl, const fhandle_t *fh,
do_test(struct file_lock *fl, struct file_lock **conflicting_fl)
do_lock(struct file_lock *fl)
int same_filelock_identity(const struct file_lock *fl0,
const struct file_lock *fl2);
do_unlock(struct file_lock *fl)
void dump_filelock(const struct file_lock *fl);
struct file_lock test_fl, *conflicting_fl;
struct file_lock * get_lock_matching_unlock(const struct file_lock *fl);
enum nfslock_status test_nfslock(const struct file_lock *fl,
struct file_lock **conflicting_fl);
struct file_lock *newfl;
enum nfslock_status lock_nfslock(struct file_lock *fl);
enum nfslock_status delete_nfslock(struct file_lock *fl);
enum nfslock_status unlock_nfslock(const struct file_lock *fl,
struct file_lock **released_lock, struct file_lock **left_lock,
struct file_lock **right_lock);
enum hwlock_status lock_hwlock(struct file_lock *fl);
enum split_status split_nfslock(const struct file_lock *exist_lock,
struct file_lock fl;
const struct file_lock *unlock_lock, struct file_lock **left_lock,
bzero(&fl,sizeof(struct file_lock));
struct file_lock **right_lock);
int duplicate_block(struct file_lock *fl);
void add_blockingfilelock(struct file_lock *fl);
enum hwlock_status unlock_hwlock(const struct file_lock *fl);
enum hwlock_status test_hwlock(const struct file_lock *fl,
struct file_lock **conflicting_fl);
void remove_blockingfilelock(struct file_lock *fl);
const struct file_lock *fl);
const struct file_lock *fl, struct file_lock **conflicting_fl);
enum nlm_stats do_test(struct file_lock *fl,
struct file_lock **conflicting_fl);
enum nlm_stats do_unlock(struct file_lock *fl);
enum nlm_stats do_lock(struct file_lock *fl);
send_granted(struct file_lock *fl, int opcode __unused)
dump_filelock(const struct file_lock *fl)
struct file_lock *
struct file_lock *newfl;
fill_file_lock(struct file_lock *fl, const fhandle_t *fh,
deallocate_file_lock(struct file_lock *fl)
same_filelock_identity(const struct file_lock *fl0, const struct file_lock *fl1)
struct file_lock *
get_lock_matching_unlock(const struct file_lock *fl)
struct file_lock *ifl; /* Iterator */
test_nfslock(const struct file_lock *fl, struct file_lock **conflicting_fl)
LIST_ENTRY(file_lock) nfslocklist;
struct file_lock *ifl; /* Iterator */
lock_nfslock(struct file_lock *fl)
struct file_lock *dummy_fl;
delete_nfslock(struct file_lock *fl)
LIST_HEAD(nfslocklist_head, file_lock);
split_nfslock(const struct file_lock *exist_lock,
const struct file_lock *unlock_lock, struct file_lock **left_lock,
struct file_lock **right_lock)
LIST_HEAD(blockedlocklist_head, file_lock);
unlock_nfslock(const struct file_lock *fl, struct file_lock **released_lock,
struct file_lock **left_lock, struct file_lock **right_lock)
struct file_lock *mfl; /* Matching file lock */