提交 c0e15908 编写于 作者: N NeilBrown 提交者: Jeff Layton

fs/locks: change all *_conflict() functions to return bool.

posix_locks_conflict() and flock_locks_conflict() both return int.
leases_conflict() returns bool.

This inconsistency will cause problems for the next patch if not
fixed.

So change posix_locks_conflict() and flock_locks_conflict() to return
bool.
Also change the locks_conflict() helper.

And convert some
   return (foo);
to
   return foo;
Signed-off-by: NNeilBrown <neilb@suse.com>
Reviewed-by: NJ. Bruce Fields <bfields@redhat.com>
Signed-off-by: NJeff Layton <jlayton@kernel.org>
上级 16306a61
...@@ -816,47 +816,50 @@ locks_delete_lock_ctx(struct file_lock *fl, struct list_head *dispose) ...@@ -816,47 +816,50 @@ locks_delete_lock_ctx(struct file_lock *fl, struct list_head *dispose)
/* Determine if lock sys_fl blocks lock caller_fl. Common functionality /* Determine if lock sys_fl blocks lock caller_fl. Common functionality
* checks for shared/exclusive status of overlapping locks. * checks for shared/exclusive status of overlapping locks.
*/ */
static int locks_conflict(struct file_lock *caller_fl, struct file_lock *sys_fl) static bool locks_conflict(struct file_lock *caller_fl,
struct file_lock *sys_fl)
{ {
if (sys_fl->fl_type == F_WRLCK) if (sys_fl->fl_type == F_WRLCK)
return 1; return true;
if (caller_fl->fl_type == F_WRLCK) if (caller_fl->fl_type == F_WRLCK)
return 1; return true;
return 0; return false;
} }
/* Determine if lock sys_fl blocks lock caller_fl. POSIX specific /* Determine if lock sys_fl blocks lock caller_fl. POSIX specific
* checking before calling the locks_conflict(). * checking before calling the locks_conflict().
*/ */
static int posix_locks_conflict(struct file_lock *caller_fl, struct file_lock *sys_fl) static bool posix_locks_conflict(struct file_lock *caller_fl,
struct file_lock *sys_fl)
{ {
/* POSIX locks owned by the same process do not conflict with /* POSIX locks owned by the same process do not conflict with
* each other. * each other.
*/ */
if (posix_same_owner(caller_fl, sys_fl)) if (posix_same_owner(caller_fl, sys_fl))
return (0); return false;
/* Check whether they overlap */ /* Check whether they overlap */
if (!locks_overlap(caller_fl, sys_fl)) if (!locks_overlap(caller_fl, sys_fl))
return 0; return false;
return (locks_conflict(caller_fl, sys_fl)); return locks_conflict(caller_fl, sys_fl);
} }
/* Determine if lock sys_fl blocks lock caller_fl. FLOCK specific /* Determine if lock sys_fl blocks lock caller_fl. FLOCK specific
* checking before calling the locks_conflict(). * checking before calling the locks_conflict().
*/ */
static int flock_locks_conflict(struct file_lock *caller_fl, struct file_lock *sys_fl) static bool flock_locks_conflict(struct file_lock *caller_fl,
struct file_lock *sys_fl)
{ {
/* FLOCK locks referring to the same filp do not conflict with /* FLOCK locks referring to the same filp do not conflict with
* each other. * each other.
*/ */
if (caller_fl->fl_file == sys_fl->fl_file) if (caller_fl->fl_file == sys_fl->fl_file)
return (0); return false;
if ((caller_fl->fl_type & LOCK_MAND) || (sys_fl->fl_type & LOCK_MAND)) if ((caller_fl->fl_type & LOCK_MAND) || (sys_fl->fl_type & LOCK_MAND))
return 0; return false;
return (locks_conflict(caller_fl, sys_fl)); return locks_conflict(caller_fl, sys_fl);
} }
void void
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册