]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
btrfs: remove unused btrfs_folio_start_writer_lock()
authorQu Wenruo <wqu@suse.com>
Tue, 8 Oct 2024 23:07:04 +0000 (09:37 +1030)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Feb 2025 12:30:13 +0000 (04:30 -0800)
[ Upstream commit 8511074c42b6255e03eceb09396338572572f1c7 ]

This function is not really suitable to lock a folio, as it lacks the
proper mapping checks, thus the locked folio may not even belong to
btrfs.

And due to the above reason, the last user inside lock_delalloc_folios()
is already removed, and we can remove this function.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Stable-dep-of: 8bf334beb349 ("btrfs: fix double accounting race when extent_writepage_io() failed")
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/btrfs/subpage.c
fs/btrfs/subpage.h

index c4950e04f481a79a94bdac7a5a5c79373ffb2106..99341e98bbcc75f09cde079c6528f35a524eb51d 100644 (file)
@@ -295,26 +295,6 @@ static void btrfs_subpage_clamp_range(struct folio *folio, u64 *start, u32 *len)
                             orig_start + orig_len) - *start;
 }
 
-static void btrfs_subpage_start_writer(const struct btrfs_fs_info *fs_info,
-                                      struct folio *folio, u64 start, u32 len)
-{
-       struct btrfs_subpage *subpage = folio_get_private(folio);
-       const int start_bit = subpage_calc_start_bit(fs_info, folio, locked, start, len);
-       const int nbits = (len >> fs_info->sectorsize_bits);
-       unsigned long flags;
-       int ret;
-
-       btrfs_subpage_assert(fs_info, folio, start, len);
-
-       spin_lock_irqsave(&subpage->lock, flags);
-       ASSERT(atomic_read(&subpage->readers) == 0);
-       ASSERT(bitmap_test_range_all_zero(subpage->bitmaps, start_bit, nbits));
-       bitmap_set(subpage->bitmaps, start_bit, nbits);
-       ret = atomic_add_return(nbits, &subpage->writers);
-       ASSERT(ret == nbits);
-       spin_unlock_irqrestore(&subpage->lock, flags);
-}
-
 static bool btrfs_subpage_end_and_test_writer(const struct btrfs_fs_info *fs_info,
                                              struct folio *folio, u64 start, u32 len)
 {
@@ -351,33 +331,6 @@ static bool btrfs_subpage_end_and_test_writer(const struct btrfs_fs_info *fs_inf
        return last;
 }
 
-/*
- * Lock a folio for delalloc page writeback.
- *
- * Return -EAGAIN if the page is not properly initialized.
- * Return 0 with the page locked, and writer counter updated.
- *
- * Even with 0 returned, the page still need extra check to make sure
- * it's really the correct page, as the caller is using
- * filemap_get_folios_contig(), which can race with page invalidating.
- */
-int btrfs_folio_start_writer_lock(const struct btrfs_fs_info *fs_info,
-                                 struct folio *folio, u64 start, u32 len)
-{
-       if (unlikely(!fs_info) || !btrfs_is_subpage(fs_info, folio->mapping)) {
-               folio_lock(folio);
-               return 0;
-       }
-       folio_lock(folio);
-       if (!folio_test_private(folio) || !folio_get_private(folio)) {
-               folio_unlock(folio);
-               return -EAGAIN;
-       }
-       btrfs_subpage_clamp_range(folio, &start, &len);
-       btrfs_subpage_start_writer(fs_info, folio, start, len);
-       return 0;
-}
-
 /*
  * Handle different locked folios:
  *
index 197ec6c0b07b23fe95af6921c5d234a4d71860ec..6289d6f65b87d6673f49b46159e313031da98134 100644 (file)
@@ -100,8 +100,6 @@ void btrfs_subpage_start_reader(const struct btrfs_fs_info *fs_info,
 void btrfs_subpage_end_reader(const struct btrfs_fs_info *fs_info,
                              struct folio *folio, u64 start, u32 len);
 
-int btrfs_folio_start_writer_lock(const struct btrfs_fs_info *fs_info,
-                                 struct folio *folio, u64 start, u32 len);
 void btrfs_folio_end_writer_lock(const struct btrfs_fs_info *fs_info,
                                 struct folio *folio, u64 start, u32 len);
 void btrfs_folio_set_writer_lock(const struct btrfs_fs_info *fs_info,