From: Ackerley Tng <ackerleytng@google.com>
To: akpm@linux-foundation.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
mike.kravetz@oracle.com, muchun.song@linux.dev,
willy@infradead.org, sidhartha.kumar@oracle.com,
jhubbard@nvidia.com
Cc: vannapurve@google.com, erdemaktas@google.com,
Ackerley Tng <ackerleytng@google.com>
Subject: [PATCH 0/2] Fix fallocate error in hugetlbfs when fallocating again
Date: Tue, 2 May 2023 23:56:01 +0000 [thread overview]
Message-ID: <cover.1683069252.git.ackerleytng@google.com> (raw)
When fallocate() is used twice on the same offset, it should succeed
and return 0 to userspace. The second fallocate() in
test_multiple_fallocates() in the following code will return -EEXIST
for hugetlbfs, but not tmpfs/shmem.
#define _GNU_SOURCE
#include <fcntl.h>
#include <linux/falloc.h>
#include <linux/memfd.h>
#include <sys/mman.h>
#include <stdio.h>
#include <unistd.h>
void test_multiple_fallocates(unsigned int flags)
{
int fd = memfd_create("foo", flags);
if (fallocate(fd, 0, 0, 0x1000))
printf("error with fallocate %m\n");
if (fallocate(fd, 0, 0, 0x1000))
printf("error with second fallocate %m\n");
}
int main(void) {
printf("Testing tmpfs:\n");
test_multiple_fallocates(0);
printf("Testing hugetlbfs:\n");
test_multiple_fallocates(MFD_HUGETLB | MFD_HUGE_2MB);
}
This patch series replaces page_cache_next_miss(), used to determine a
page cache hit, with a more direct filemap_has_folio() (a new
function).
I hope that this is also the desired refactoring as mentioned in [1].
[1] https://lore.kernel.org/all/Y8oqEOICcNV762IA@casper.infradead.org/
---
Ackerley Tng (2):
mm: filemap: Add filemap_has_folio function
fs: hugetlbfs: Fix logic to skip allocation on hit in page cache
fs/hugetlbfs/inode.c | 6 +-----
include/linux/pagemap.h | 1 +
mm/filemap.c | 17 +++++++++++++++++
3 files changed, 19 insertions(+), 5 deletions(-)
--
2.40.1.495.gc816e09b53d-goog
next reply other threads:[~2023-05-02 23:56 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-02 23:56 Ackerley Tng [this message]
2023-05-02 23:56 ` [PATCH 1/2] mm: filemap: Add filemap_has_folio function Ackerley Tng
2023-05-02 23:56 ` [PATCH 2/2] fs: hugetlbfs: Fix logic to skip allocation on hit in page cache Ackerley Tng
2023-05-03 3:05 ` Mike Kravetz
2023-05-04 0:14 ` Mike Kravetz
2023-05-08 16:29 ` Ackerley Tng
2023-05-08 20:40 ` Ackerley Tng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1683069252.git.ackerleytng@google.com \
--to=ackerleytng@google.com \
--cc=akpm@linux-foundation.org \
--cc=erdemaktas@google.com \
--cc=jhubbard@nvidia.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mike.kravetz@oracle.com \
--cc=muchun.song@linux.dev \
--cc=sidhartha.kumar@oracle.com \
--cc=vannapurve@google.com \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.