Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

filelock: add lease_dispose_list() helper

The lease-handling code paths always know they're disposing of leases,
yet locks_dispose_list() checks flags at runtime to determine whether
to call locks_free_lease() or locks_free_lock().

Split out a dedicated lease_dispose_list() helper for lease code paths.
This makes the type handling explicit and prepares for the upcoming
lease_manager enhancements where lease-specific operations are being
consolidated.

Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Link: https://patch.msgid.link/20251204-dir-deleg-ro-v2-1-22d37f92ce2c@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>

authored by

Jeff Layton and committed by
Christian Brauner
392e317a ed61378b

+19 -10
+19 -10
fs/locks.c
··· 369 369 while (!list_empty(dispose)) { 370 370 flc = list_first_entry(dispose, struct file_lock_core, flc_list); 371 371 list_del_init(&flc->flc_list); 372 - if (flc->flc_flags & (FL_LEASE|FL_DELEG|FL_LAYOUT)) 373 - locks_free_lease(file_lease(flc)); 374 - else 375 - locks_free_lock(file_lock(flc)); 372 + locks_free_lock(file_lock(flc)); 373 + } 374 + } 375 + 376 + static void 377 + lease_dispose_list(struct list_head *dispose) 378 + { 379 + struct file_lock_core *flc; 380 + 381 + while (!list_empty(dispose)) { 382 + flc = list_first_entry(dispose, struct file_lock_core, flc_list); 383 + list_del_init(&flc->flc_list); 384 + locks_free_lease(file_lease(flc)); 376 385 } 377 386 } 378 387 ··· 1629 1620 spin_unlock(&ctx->flc_lock); 1630 1621 percpu_up_read(&file_rwsem); 1631 1622 1632 - locks_dispose_list(&dispose); 1623 + lease_dispose_list(&dispose); 1633 1624 error = wait_event_interruptible_timeout(new_fl->c.flc_wait, 1634 1625 list_empty(&new_fl->c.flc_blocked_member), 1635 1626 break_time); ··· 1652 1643 out: 1653 1644 spin_unlock(&ctx->flc_lock); 1654 1645 percpu_up_read(&file_rwsem); 1655 - locks_dispose_list(&dispose); 1646 + lease_dispose_list(&dispose); 1656 1647 free_lock: 1657 1648 locks_free_lease(new_fl); 1658 1649 return error; ··· 1736 1727 spin_unlock(&ctx->flc_lock); 1737 1728 percpu_up_read(&file_rwsem); 1738 1729 1739 - locks_dispose_list(&dispose); 1730 + lease_dispose_list(&dispose); 1740 1731 } 1741 1732 return type; 1742 1733 } ··· 1905 1896 out: 1906 1897 spin_unlock(&ctx->flc_lock); 1907 1898 percpu_up_read(&file_rwsem); 1908 - locks_dispose_list(&dispose); 1899 + lease_dispose_list(&dispose); 1909 1900 if (is_deleg) 1910 1901 inode_unlock(inode); 1911 1902 if (!error && !my_fl) ··· 1941 1932 error = fl->fl_lmops->lm_change(victim, F_UNLCK, &dispose); 1942 1933 spin_unlock(&ctx->flc_lock); 1943 1934 percpu_up_read(&file_rwsem); 1944 - locks_dispose_list(&dispose); 1935 + lease_dispose_list(&dispose); 1945 1936 return error; 1946 1937 } 1947 1938 ··· 2736 2727 spin_unlock(&ctx->flc_lock); 2737 2728 percpu_up_read(&file_rwsem); 2738 2729 2739 - locks_dispose_list(&dispose); 2730 + lease_dispose_list(&dispose); 2740 2731 } 2741 2732 2742 2733 /*