Skip to content

Cleanup unnecessary get_extent parameters

David Sterba linux-btrfs 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest10 patches 2 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/10btrfs: sink get_extent parameter to extent_writepagesfs/btrfs/extent_io.c fs/btrfs/extent_io.h fs/btrfs/inode.c+2 -40 replies
2/10btrfs: sink get_extent parameter to extent_write_locked_rangefs/btrfs/extent_io.c fs/btrfs/extent_io.h fs/btrfs/inode.c+3 -60 replies
3/10btrfs: sink get_extent parameter to extent_write_full_pagefs/btrfs/extent_io.c fs/btrfs/extent_io.h fs/btrfs/inode.c+2 -40 replies
4/10btrfs: drop get_extent from extent_page_datafs/btrfs/extent_io.c+1 -60 replies
5/10btrfs: sink get_extent parameter to extent_fiemapfs/btrfs/extent_io.c fs/btrfs/extent_io.h fs/btrfs/inode.c+5 -50 replies
6/10btrfs: sink get_extent parameter to get_extent_skip_holesfs/btrfs/extent_io.c+5 -80 replies
7/10btrfs: sink get_extent parameter to extent_readpagesfs/btrfs/extent_io.c fs/btrfs/extent_io.h fs/btrfs/inode.c+7 -100 replies
8/10btrfs: sink get_extent parameter to __extent_readpagesfs/btrfs/extent_io.c+8 -70 replies
9/10btrfs: sink get_extent parameter to __do_contiguous_readpagesfs/btrfs/extent_io.c+4 -60 replies
10/10btrfs: sink get_extent parameter to read_extent_buffer_pagesfs/btrfs/disk-io.c fs/btrfs/disk-io.h fs/btrfs/extent_io.c +1 more+11 -80 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 00/10] Cleanup unnecessary get_extent parameters

There are several functions that take a generic get_extent parameter, but not all of them use it to distinguish between btree_get_exnent (for metadata) and btrfs_get_extent (for data). This is namely extent_read_full_page and __do_readpage.

The rest can be cleaned up so that the desired get_extent callback is used directly. The patchset does that incrementally so each change is clear.

The difference in binary code size is not that impressive:
text data bss dec hex filename

985353   75124   18560 1079037  1076fd pre/btrfs.ko
985193   75124   18560 1078877  10765d post/btrfs.ko

but the estimated stack consumption savings are about 64 bytes, and it could be more if we calculate cummulative effect when more than one reduced function is in the callchain:

-extent_io.c:btree_write_cache_pages                      288 static
+extent_io.c:btree_write_cache_pages                      280 static
-extent_io.c:extent_fiemap                                264 dynamic,bounded
+extent_io.c:extent_fiemap                                256 dynamic,bounded
-extent_io.c:extent_readpages                             264 dynamic,bounded
+extent_io.c:extent_readpages                             248 dynamic,bounded
-extent_io.c:extent_write_full_page                       56 static
+extent_io.c:extent_write_full_page                       48 static
-extent_io.c:extent_write_locked_range                    200 static
+extent_io.c:extent_write_locked_range                    192 static
-extent_io.c:extent_writepages                            56 static
+extent_io.c:extent_writepages                            48 static
-extent_io.c:get_extent_skip_holes                        64 static
+extent_io.c:get_extent_skip_holes                        56 static

(calculated with gcc -fstack-usage)

David Sterba (10):

btrfs: sink get_extent parameter to extent_writepages
btrfs: sink get_extent parameter to extent_write_locked_range
btrfs: sink get_extent parameter to extent_write_full_page
btrfs: drop get_extent from extent_page_data
btrfs: sink get_extent parameter to extent_fiemap
btrfs: sink get_extent parameter to get_extent_skip_holes
btrfs: sink get_extent parameter to extent_readpages
btrfs: sink get_extent parameter to __extent_readpages
btrfs: sink get_extent parameter to __do_contiguous_readpages
btrfs: sink get_extent parameter to read_extent_buffer_pages

 fs/btrfs/disk-io.c   |  8 ++++----
 fs/btrfs/disk-io.h   |  3 +++
 fs/btrfs/extent_io.c | 55 ++++++++++++++++++++--------------------------------
 fs/btrfs/extent_io.h | 12 ++++--------
 fs/btrfs/inode.c     | 10 ++++------
 5 files changed, 36 insertions(+), 52 deletions(-)
Signature · 1 line
2.14.3