mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-16 01:04:08 +08:00
huge tmpfs: decide stat.st_blksize by shmem_is_huge()
4.18 commit 89fdcd262f
("mm: shmem: make stat.st_blksize return huge
page size if THP is on") added is_huge_enabled() to decide st_blksize: if
hugeness is to be defined per file, that will need to be replaced by
shmem_is_huge().
This does give a different answer (No) for small files on a
"huge=within_size" mount: but that can be considered a minor bugfix. And
a different answer (No) for default files on a "huge=advise" mount: I'm
reluctant to complicate it, just to reproduce the same debatable answer as
before.
Link: https://lkml.kernel.org/r/af7fb3f9-4415-9e8e-fdac-b1a5253ad21@google.com
Signed-off-by: Hugh Dickins <hughd@google.com>
Reviewed-by: Yang Shi <shy828301@gmail.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Miaohe Lin <linmiaohe@huawei.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Kravetz <mike.kravetz@oracle.com>
Cc: Rik van Riel <riel@surriel.com>
Cc: Shakeel Butt <shakeelb@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
5e6e5a12a4
commit
a7fddc3629
12
mm/shmem.c
12
mm/shmem.c
@ -686,15 +686,6 @@ static unsigned long shmem_unused_huge_shrink(struct shmem_sb_info *sbinfo,
|
||||
}
|
||||
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
|
||||
|
||||
static inline bool is_huge_enabled(struct shmem_sb_info *sbinfo)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) &&
|
||||
(shmem_huge == SHMEM_HUGE_FORCE || sbinfo->huge) &&
|
||||
shmem_huge != SHMEM_HUGE_DENY)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Like add_to_page_cache_locked, but error if expected item has gone.
|
||||
*/
|
||||
@ -1075,7 +1066,6 @@ static int shmem_getattr(struct user_namespace *mnt_userns,
|
||||
{
|
||||
struct inode *inode = path->dentry->d_inode;
|
||||
struct shmem_inode_info *info = SHMEM_I(inode);
|
||||
struct shmem_sb_info *sb_info = SHMEM_SB(inode->i_sb);
|
||||
|
||||
if (info->alloced - info->swapped != inode->i_mapping->nrpages) {
|
||||
spin_lock_irq(&info->lock);
|
||||
@ -1084,7 +1074,7 @@ static int shmem_getattr(struct user_namespace *mnt_userns,
|
||||
}
|
||||
generic_fillattr(&init_user_ns, inode, stat);
|
||||
|
||||
if (is_huge_enabled(sb_info))
|
||||
if (shmem_is_huge(NULL, inode, 0))
|
||||
stat->blksize = HPAGE_PMD_SIZE;
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user