]> git.ipfire.org Git - thirdparty/linux.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)
committerDavid Sterba <dsterba@suse.com>
Mon, 11 Nov 2024 13:34:18 +0000 (14:34 +0100)
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>
fs/btrfs/subpage.c
fs/btrfs/subpage.h

index 17bc53a8df01400fa89cdf7dfe521d693389c694..26d4d05dd165aa82e6f51b432a27926c837590ab 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 d16fbddeda68f2797897f0e7e1518478ed8063fa..e4076c5b06bc9702b51cc8b178a0cf0663af167d 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,