Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d34ac19 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

locks: make posix_test_lock() interface more consistent



Since posix_test_lock(), like fcntl() and ->lock(), indicates absence or
presence of a conflict lock by setting fl_type to, respectively, F_UNLCK
or something other than F_UNLCK, the return value is no longer needed.

Signed-off-by: default avatar"J. Bruce Fields" <bfields@citi.umich.edu>
parent 370f6599
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -659,7 +659,7 @@ static int locks_block_on_timeout(struct file_lock *blocker, struct file_lock *w
	return result;
}

int
void
posix_test_lock(struct file *filp, struct file_lock *fl)
{
	struct file_lock *cfl;
@@ -671,14 +671,12 @@ posix_test_lock(struct file *filp, struct file_lock *fl)
		if (posix_locks_conflict(cfl, fl))
			break;
	}
	if (cfl) {
	if (cfl)
		__locks_copy_lock(fl, cfl);
		unlock_kernel();
		return 1;
	} else
	else
		fl->fl_type = F_UNLCK;
	unlock_kernel();
	return 0;
	return;
}

EXPORT_SYMBOL(posix_test_lock);
+3 −1
Original line number Diff line number Diff line
@@ -402,7 +402,9 @@ static int do_getlk(struct file *filp, int cmd, struct file_lock *fl)

	lock_kernel();
	/* Try local locking first */
	if (posix_test_lock(filp, fl)) {
	posix_test_lock(filp, fl);
	if (fl->fl_type != F_UNLCK) {
		/* found a conflict */
		goto out;
	}

+1 −1
Original line number Diff line number Diff line
@@ -862,7 +862,7 @@ extern void locks_init_lock(struct file_lock *);
extern void locks_copy_lock(struct file_lock *, struct file_lock *);
extern void locks_remove_posix(struct file *, fl_owner_t);
extern void locks_remove_flock(struct file *);
extern int posix_test_lock(struct file *, struct file_lock *);
extern void posix_test_lock(struct file *, struct file_lock *);
extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *);
extern int posix_lock_file_wait(struct file *, struct file_lock *);
extern int posix_unblock_lock(struct file *, struct file_lock *);