Commit 5c87527
VFS/nfsd/ovl: introduce start_renaming() and end_renaming()
start_renaming() combines name lookup and locking to prepare for rename.
It is used when two names need to be looked up as in nfsd and overlayfs -
cases where one or both dentries are already available will be handled
separately.
__start_renaming() avoids the inode_permission check and hash
calculation and is suitable after filename_parentat() in do_renameat2().
It subsumes quite a bit of code from that function.
start_renaming() does calculate the hash and check X permission and is
suitable elsewhere:
- nfsd_rename()
- ovl_rename()
In ovl, ovl_do_rename_rd() is factored out of ovl_do_rename(), which
itself will be gone by the end of the series.
Acked-by: Chuck Lever <chuck.lever@oracle.com> (for nfsd parts)
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: NeilBrown <neil@brown.name>
--
Changes since v3:
- added missig dput() in ovl_rename when "whiteout" is not-NULL.
Changes since v2:
- in __start_renaming() some label have been renamed, and err
is always set before a "goto out_foo" rather than passing the
error in a dentry*.
- ovl_do_rename() changed to call the new ovl_do_rename_rd() rather
than keeping duplicate code
- code around ovl_cleanup() call in ovl_rename() restructured.
Link: https://patch.msgid.link/20251113002050.676694-11-neilb@ownmail.net
Tested-by: syzbot@syzkaller.appspotmail.com
Acked-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>1 parent ff7c4ea commit 5c87527
5 files changed
Lines changed: 218 additions & 152 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3667 | 3667 | | |
3668 | 3668 | | |
3669 | 3669 | | |
| 3670 | + | |
| 3671 | + | |
| 3672 | + | |
| 3673 | + | |
| 3674 | + | |
| 3675 | + | |
| 3676 | + | |
| 3677 | + | |
| 3678 | + | |
| 3679 | + | |
| 3680 | + | |
| 3681 | + | |
| 3682 | + | |
| 3683 | + | |
| 3684 | + | |
| 3685 | + | |
| 3686 | + | |
| 3687 | + | |
| 3688 | + | |
| 3689 | + | |
| 3690 | + | |
| 3691 | + | |
| 3692 | + | |
| 3693 | + | |
| 3694 | + | |
| 3695 | + | |
| 3696 | + | |
| 3697 | + | |
| 3698 | + | |
| 3699 | + | |
| 3700 | + | |
| 3701 | + | |
| 3702 | + | |
| 3703 | + | |
| 3704 | + | |
| 3705 | + | |
| 3706 | + | |
| 3707 | + | |
| 3708 | + | |
| 3709 | + | |
| 3710 | + | |
| 3711 | + | |
| 3712 | + | |
| 3713 | + | |
| 3714 | + | |
| 3715 | + | |
| 3716 | + | |
| 3717 | + | |
| 3718 | + | |
| 3719 | + | |
| 3720 | + | |
| 3721 | + | |
| 3722 | + | |
| 3723 | + | |
| 3724 | + | |
| 3725 | + | |
| 3726 | + | |
| 3727 | + | |
| 3728 | + | |
| 3729 | + | |
| 3730 | + | |
| 3731 | + | |
| 3732 | + | |
| 3733 | + | |
| 3734 | + | |
| 3735 | + | |
| 3736 | + | |
| 3737 | + | |
| 3738 | + | |
| 3739 | + | |
| 3740 | + | |
| 3741 | + | |
| 3742 | + | |
| 3743 | + | |
| 3744 | + | |
| 3745 | + | |
| 3746 | + | |
| 3747 | + | |
| 3748 | + | |
| 3749 | + | |
| 3750 | + | |
| 3751 | + | |
| 3752 | + | |
| 3753 | + | |
| 3754 | + | |
| 3755 | + | |
| 3756 | + | |
| 3757 | + | |
| 3758 | + | |
| 3759 | + | |
| 3760 | + | |
| 3761 | + | |
| 3762 | + | |
| 3763 | + | |
| 3764 | + | |
| 3765 | + | |
| 3766 | + | |
| 3767 | + | |
| 3768 | + | |
| 3769 | + | |
| 3770 | + | |
| 3771 | + | |
| 3772 | + | |
| 3773 | + | |
| 3774 | + | |
| 3775 | + | |
| 3776 | + | |
| 3777 | + | |
| 3778 | + | |
| 3779 | + | |
| 3780 | + | |
| 3781 | + | |
| 3782 | + | |
| 3783 | + | |
| 3784 | + | |
| 3785 | + | |
| 3786 | + | |
| 3787 | + | |
| 3788 | + | |
| 3789 | + | |
| 3790 | + | |
| 3791 | + | |
| 3792 | + | |
3670 | 3793 | | |
3671 | 3794 | | |
3672 | 3795 | | |
| |||
5504 | 5627 | | |
5505 | 5628 | | |
5506 | 5629 | | |
5507 | | - | |
5508 | | - | |
5509 | 5630 | | |
5510 | 5631 | | |
5511 | 5632 | | |
5512 | 5633 | | |
5513 | | - | |
5514 | | - | |
| 5634 | + | |
5515 | 5635 | | |
5516 | 5636 | | |
5517 | 5637 | | |
| |||
5522 | 5642 | | |
5523 | 5643 | | |
5524 | 5644 | | |
5525 | | - | |
5526 | | - | |
5527 | | - | |
5528 | | - | |
5529 | | - | |
5530 | 5645 | | |
5531 | 5646 | | |
5532 | 5647 | | |
| |||
5556 | 5671 | | |
5557 | 5672 | | |
5558 | 5673 | | |
5559 | | - | |
5560 | | - | |
5561 | | - | |
| 5674 | + | |
| 5675 | + | |
| 5676 | + | |
| 5677 | + | |
| 5678 | + | |
| 5679 | + | |
| 5680 | + | |
| 5681 | + | |
5562 | 5682 | | |
5563 | | - | |
5564 | 5683 | | |
5565 | | - | |
5566 | | - | |
5567 | | - | |
5568 | | - | |
5569 | | - | |
5570 | | - | |
5571 | | - | |
5572 | | - | |
5573 | | - | |
5574 | | - | |
5575 | 5684 | | |
5576 | | - | |
| 5685 | + | |
5577 | 5686 | | |
5578 | 5687 | | |
5579 | | - | |
| 5688 | + | |
5580 | 5689 | | |
5581 | 5690 | | |
5582 | 5691 | | |
5583 | | - | |
| 5692 | + | |
5584 | 5693 | | |
5585 | 5694 | | |
5586 | | - | |
| 5695 | + | |
5587 | 5696 | | |
5588 | | - | |
5589 | | - | |
5590 | | - | |
5591 | | - | |
5592 | | - | |
5593 | | - | |
5594 | | - | |
5595 | | - | |
5596 | | - | |
5597 | | - | |
5598 | | - | |
| 5697 | + | |
| 5698 | + | |
5599 | 5699 | | |
5600 | | - | |
5601 | | - | |
| 5700 | + | |
| 5701 | + | |
5602 | 5702 | | |
5603 | | - | |
| 5703 | + | |
5604 | 5704 | | |
5605 | | - | |
5606 | | - | |
5607 | | - | |
5608 | | - | |
5609 | | - | |
5610 | | - | |
5611 | | - | |
5612 | 5705 | | |
5613 | | - | |
5614 | | - | |
5615 | | - | |
5616 | | - | |
5617 | | - | |
5618 | | - | |
| 5706 | + | |
| 5707 | + | |
5619 | 5708 | | |
5620 | 5709 | | |
5621 | 5710 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1885 | 1885 | | |
1886 | 1886 | | |
1887 | 1887 | | |
1888 | | - | |
| 1888 | + | |
1889 | 1889 | | |
| 1890 | + | |
1890 | 1891 | | |
1891 | 1892 | | |
1892 | | - | |
| 1893 | + | |
1893 | 1894 | | |
1894 | 1895 | | |
1895 | 1896 | | |
| |||
1915 | 1916 | | |
1916 | 1917 | | |
1917 | 1918 | | |
| 1919 | + | |
1918 | 1920 | | |
1919 | 1921 | | |
1920 | 1922 | | |
1921 | 1923 | | |
1922 | 1924 | | |
1923 | 1925 | | |
1924 | | - | |
1925 | | - | |
1926 | | - | |
| 1926 | + | |
| 1927 | + | |
| 1928 | + | |
| 1929 | + | |
| 1930 | + | |
| 1931 | + | |
| 1932 | + | |
| 1933 | + | |
| 1934 | + | |
1927 | 1935 | | |
1928 | 1936 | | |
1929 | 1937 | | |
| |||
1933 | 1941 | | |
1934 | 1942 | | |
1935 | 1943 | | |
1936 | | - | |
1937 | | - | |
1938 | | - | |
1939 | | - | |
| 1944 | + | |
| 1945 | + | |
| 1946 | + | |
| 1947 | + | |
1940 | 1948 | | |
1941 | | - | |
1942 | | - | |
1943 | | - | |
1944 | | - | |
1945 | | - | |
1946 | | - | |
1947 | | - | |
1948 | | - | |
1949 | | - | |
1950 | | - | |
1951 | | - | |
1952 | | - | |
1953 | | - | |
1954 | | - | |
1955 | | - | |
1956 | | - | |
1957 | | - | |
1958 | | - | |
1959 | | - | |
1960 | | - | |
1961 | | - | |
1962 | | - | |
| 1949 | + | |
| 1950 | + | |
| 1951 | + | |
| 1952 | + | |
1963 | 1953 | | |
1964 | | - | |
1965 | | - | |
1966 | | - | |
1967 | | - | |
1968 | | - | |
1969 | | - | |
1970 | | - | |
1971 | 1954 | | |
1972 | 1955 | | |
1973 | 1956 | | |
1974 | 1957 | | |
1975 | 1958 | | |
1976 | 1959 | | |
1977 | | - | |
| 1960 | + | |
1978 | 1961 | | |
1979 | 1962 | | |
1980 | 1963 | | |
| |||
1983 | 1966 | | |
1984 | 1967 | | |
1985 | 1968 | | |
1986 | | - | |
1987 | | - | |
1988 | | - | |
1989 | | - | |
1990 | | - | |
1991 | 1969 | | |
1992 | 1970 | | |
1993 | 1971 | | |
| |||
2006 | 1984 | | |
2007 | 1985 | | |
2008 | 1986 | | |
2009 | | - | |
| 1987 | + | |
2010 | 1988 | | |
2011 | 1989 | | |
2012 | 1990 | | |
| |||
2017 | 1995 | | |
2018 | 1996 | | |
2019 | 1997 | | |
2020 | | - | |
2021 | | - | |
2022 | | - | |
| 1998 | + | |
| 1999 | + | |
2023 | 2000 | | |
2024 | 2001 | | |
2025 | 2002 | | |
| |||
0 commit comments