Commit efffb803 authored by Qu Wenruo's avatar Qu Wenruo Committed by David Sterba

btrfs: make btrfs_is_subpage() to return false directly for 4K page size

Btrfs only supports sectorsize 4K, 8K, 16K, 32K, 64K for now, thus for
systems with 4K page size, there is no way the fs is subpage (sectorsize
< PAGE_SIZE).

So here we define btrfs_is_subpage() different according to the
PAGE_SIZE:

- PAGE_SIZE > 4K
  We may hit real subpage cases, define btrfs_is_subpage() as a regular
  function and do the usual checks.

- PAGE_SIZE == 4K (no smaller PAGE_SIZE support AFAIK)
  There is no way the fs is subpage, so just define btrfs_is_subpage()
  as an inline function which always return false.

This saves about 7K bytes for x86_64 debug builds:

	   text	   data	    bss	    dec	    hex	filename
Before:	1484452	 168693	  25776	1678921	 199e49	fs/btrfs/btrfs.ko
After:	1476605	 168445	  25776	1670826	 197eaa	fs/btrfs/btrfs.ko
Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 0c749585
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
* This means a slightly higher tree locking latency. * This means a slightly higher tree locking latency.
*/ */
#if PAGE_SIZE > SZ_4K
bool btrfs_is_subpage(const struct btrfs_fs_info *fs_info, struct address_space *mapping) bool btrfs_is_subpage(const struct btrfs_fs_info *fs_info, struct address_space *mapping)
{ {
if (fs_info->sectorsize >= PAGE_SIZE) if (fs_info->sectorsize >= PAGE_SIZE)
...@@ -85,6 +86,7 @@ bool btrfs_is_subpage(const struct btrfs_fs_info *fs_info, struct address_space ...@@ -85,6 +86,7 @@ bool btrfs_is_subpage(const struct btrfs_fs_info *fs_info, struct address_space
return true; return true;
return false; return false;
} }
#endif
void btrfs_init_subpage_info(struct btrfs_subpage_info *subpage_info, u32 sectorsize) void btrfs_init_subpage_info(struct btrfs_subpage_info *subpage_info, u32 sectorsize)
{ {
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/atomic.h> #include <linux/atomic.h>
#include <linux/sizes.h>
struct address_space; struct address_space;
struct folio; struct folio;
...@@ -88,7 +89,15 @@ enum btrfs_subpage_type { ...@@ -88,7 +89,15 @@ enum btrfs_subpage_type {
BTRFS_SUBPAGE_DATA, BTRFS_SUBPAGE_DATA,
}; };
#if PAGE_SIZE > SZ_4K
bool btrfs_is_subpage(const struct btrfs_fs_info *fs_info, struct address_space *mapping); bool btrfs_is_subpage(const struct btrfs_fs_info *fs_info, struct address_space *mapping);
#else
static inline bool btrfs_is_subpage(const struct btrfs_fs_info *fs_info,
struct address_space *mapping)
{
return false;
}
#endif
void btrfs_init_subpage_info(struct btrfs_subpage_info *subpage_info, u32 sectorsize); void btrfs_init_subpage_info(struct btrfs_subpage_info *subpage_info, u32 sectorsize);
int btrfs_attach_subpage(const struct btrfs_fs_info *fs_info, int btrfs_attach_subpage(const struct btrfs_fs_info *fs_info,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment