Unverified Commit d209f6e1 authored by Jeff Layton's avatar Jeff Layton Committed by Christian Brauner
Browse files

filelock: add new locks_wake_up_waiter() helper



Currently the function that does this takes a struct file_lock, but
__locks_wake_up_blocks() deals with both locks and leases. Currently
this works because both file_lock and file_lease have the file_lock_core
at the beginning of the struct, but it's fragile to rely on that.

Add a new locks_wake_up_waiter() function and call that from
__locks_wake_up_blocks().

Signed-off-by: default avatarJeff Layton <jlayton@kernel.org>
Link: https://lore.kernel.org/20250602-filelock-6-16-v1-1-7da5b2c930fd@kernel.org


Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent dd765ba8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -712,7 +712,7 @@ static void __locks_wake_up_blocks(struct file_lock_core *blocker)
		    fl->fl_lmops && fl->fl_lmops->lm_notify)
			fl->fl_lmops->lm_notify(fl);
		else
			locks_wake_up(fl);
			locks_wake_up_waiter(waiter);

		/*
		 * The setting of flc_blocker to NULL marks the "done"
+6 −1
Original line number Diff line number Diff line
@@ -175,9 +175,14 @@ static inline bool lock_is_write(struct file_lock *fl)
	return fl->c.flc_type == F_WRLCK;
}

static inline void locks_wake_up_waiter(struct file_lock_core *flc)
{
	wake_up(&flc->flc_wait);
}

static inline void locks_wake_up(struct file_lock *fl)
{
	wake_up(&fl->c.flc_wait);
	locks_wake_up_waiter(&fl->c);
}

static inline bool locks_can_async_lock(const struct file_operations *fops)