From: Jaegeuk Hanse <jaegeuk.hanse@gmail.com>
To: Hugh Dickins <hughd@google.com>
Cc: Dave Jones <davej@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Johannes Weiner <hannes@cmpxchg.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] tmpfs: fix shmem_getpage_gfp VM_BUG_ON
Date: Sun, 18 Nov 2012 09:48:14 +0800 [thread overview]
Message-ID: <50A83E5E.9060300@gmail.com> (raw)
In-Reply-To: <alpine.LNX.2.00.1211162018010.1164@eggly.anvils>
On 11/17/2012 12:48 PM, Hugh Dickins wrote:
> Further offtopic..
Hi Hugh,
- I see you add this in vfs.txt:
+ fallocate: called by the VFS to preallocate blocks or punch a hole.
I want to know if it's necessary to add it to man page since users
still don't know fallocate can punch a hole from man fallocate.
- in function shmem_fallocate:
+ else if (shmem_falloc.nr_unswapped >
shmem_falloc.nr_falloced)
+ error = -ENOMEM;
If this changelog "shmem_fallocate() compare counts and give up once the
reactivated pages have started to coming back to writepage
(approximately: some zones would in fact recycle faster than others)."
describe why need this change? If the answer is yes, I have two questions.
1) how can guarantee it really don't need preallocation if just one or a
few pages always reactivated, in this scene, nr_unswapped maybe grow
bigger enough than shmem_falloc.nr_falloced
2) why return -ENOMEM, it's not really OOM, is it a trick or ...?
Regards,
Jaegeuk
>
> On Fri, 16 Nov 2012, Jaegeuk Hanse wrote:
>> Some questions about your shmem/tmpfs: misc and fallocate patchset.
>>
>> - Since shmem_setattr can truncate tmpfs files, why need add another similar
>> codes in function shmem_fallocate? What's the trick?
> I don't know if I understand you. In general, hole-punching is different
> from truncation. Supporting the hole-punch mode of the fallocate system
> call is different from supporting truncation. They're closely related,
> and share code, but meet different specifications.
>
>> - in tmpfs: support fallocate preallocation patch changelog:
>> "Christoph Hellwig: What for exactly? Please explain why preallocating on
>> tmpfs would make any sense.
>> Kay Sievers: To be able to safely use mmap(), regarding SIGBUS, on files on
>> the /dev/shm filesystem. The glibc fallback loop for -ENOSYS [or
>> -EOPNOTSUPP] on fallocate is just ugly."
>> Could shmem/tmpfs fallocate prevent one process truncate the file which the
>> second process mmap() and get SIGBUS when the second process access mmap but
>> out of current size of file?
> Again, I don't know if I understand you. fallocate does not prevent
> truncation or races or SIGBUS. I believe that Kay meant that without
> using fallocate to allocate the memory in advance, systemd found it hard
> to protect itself from the possibility of getting a SIGBUS, if access to
> a shmem mapping happened to run out of memory/space in the middle.
>
> I never grasped why writing the file in advance was not good enough:
> fallocate happened to be what they hoped to use, and it was hard to
> deny it, given that tmpfs already supported hole-punching, and was
> about to convert to the fallocate interface for that.
>
> Hugh
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
WARNING: multiple messages have this Message-ID (diff)
From: Jaegeuk Hanse <jaegeuk.hanse@gmail.com>
To: Hugh Dickins <hughd@google.com>
Cc: Dave Jones <davej@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Johannes Weiner <hannes@cmpxchg.org>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] tmpfs: fix shmem_getpage_gfp VM_BUG_ON
Date: Sun, 18 Nov 2012 09:48:14 +0800 [thread overview]
Message-ID: <50A83E5E.9060300@gmail.com> (raw)
In-Reply-To: <alpine.LNX.2.00.1211162018010.1164@eggly.anvils>
On 11/17/2012 12:48 PM, Hugh Dickins wrote:
> Further offtopic..
Hi Hugh,
- I see you add this in vfs.txt:
+ fallocate: called by the VFS to preallocate blocks or punch a hole.
I want to know if it's necessary to add it to man page since users
still don't know fallocate can punch a hole from man fallocate.
- in function shmem_fallocate:
+ else if (shmem_falloc.nr_unswapped >
shmem_falloc.nr_falloced)
+ error = -ENOMEM;
If this changelog "shmem_fallocate() compare counts and give up once the
reactivated pages have started to coming back to writepage
(approximately: some zones would in fact recycle faster than others)."
describe why need this change? If the answer is yes, I have two questions.
1) how can guarantee it really don't need preallocation if just one or a
few pages always reactivated, in this scene, nr_unswapped maybe grow
bigger enough than shmem_falloc.nr_falloced
2) why return -ENOMEM, it's not really OOM, is it a trick or ...?
Regards,
Jaegeuk
>
> On Fri, 16 Nov 2012, Jaegeuk Hanse wrote:
>> Some questions about your shmem/tmpfs: misc and fallocate patchset.
>>
>> - Since shmem_setattr can truncate tmpfs files, why need add another similar
>> codes in function shmem_fallocate? What's the trick?
> I don't know if I understand you. In general, hole-punching is different
> from truncation. Supporting the hole-punch mode of the fallocate system
> call is different from supporting truncation. They're closely related,
> and share code, but meet different specifications.
>
>> - in tmpfs: support fallocate preallocation patch changelog:
>> "Christoph Hellwig: What for exactly? Please explain why preallocating on
>> tmpfs would make any sense.
>> Kay Sievers: To be able to safely use mmap(), regarding SIGBUS, on files on
>> the /dev/shm filesystem. The glibc fallback loop for -ENOSYS [or
>> -EOPNOTSUPP] on fallocate is just ugly."
>> Could shmem/tmpfs fallocate prevent one process truncate the file which the
>> second process mmap() and get SIGBUS when the second process access mmap but
>> out of current size of file?
> Again, I don't know if I understand you. fallocate does not prevent
> truncation or races or SIGBUS. I believe that Kay meant that without
> using fallocate to allocate the memory in advance, systemd found it hard
> to protect itself from the possibility of getting a SIGBUS, if access to
> a shmem mapping happened to run out of memory/space in the middle.
>
> I never grasped why writing the file in advance was not good enough:
> fallocate happened to be what they hoped to use, and it was hard to
> deny it, given that tmpfs already supported hole-punching, and was
> about to convert to the fallocate interface for that.
>
> Hugh
next prev parent reply other threads:[~2012-11-18 1:48 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-25 2:37 shmem_getpage_gfp VM_BUG_ON triggered. [3.7rc2] Dave Jones
2012-10-25 2:37 ` Dave Jones
2012-10-25 4:36 ` Hugh Dickins
2012-10-25 4:36 ` Hugh Dickins
2012-10-25 4:50 ` Ni zhan Chen
2012-10-25 4:50 ` Ni zhan Chen
2012-10-25 6:59 ` Hugh Dickins
2012-10-25 6:59 ` Hugh Dickins
2012-10-25 9:53 ` Ni zhan Chen
2012-10-25 10:21 ` Ni zhan Chen
2012-10-25 10:21 ` Ni zhan Chen
2012-10-25 21:27 ` Hugh Dickins
2012-10-25 21:27 ` Hugh Dickins
2012-10-26 1:48 ` Ni zhan Chen
2012-10-26 1:48 ` Ni zhan Chen
2012-10-25 11:14 ` Dave Jones
2012-10-25 11:14 ` Dave Jones
2012-10-25 21:28 ` Hugh Dickins
2012-10-25 21:28 ` Hugh Dickins
2012-10-25 20:52 ` Johannes Weiner
2012-10-25 20:52 ` Johannes Weiner
2012-10-25 21:48 ` Hugh Dickins
2012-10-25 21:48 ` Hugh Dickins
2012-10-26 2:15 ` Ni zhan Chen
2012-10-26 2:15 ` Ni zhan Chen
2012-11-01 19:10 ` Dave Jones
2012-11-01 19:10 ` Dave Jones
2012-11-01 23:03 ` Hugh Dickins
2012-11-01 23:03 ` Hugh Dickins
2012-11-01 23:20 ` Dave Jones
2012-11-01 23:20 ` Dave Jones
2012-11-01 23:48 ` Hugh Dickins
2012-11-01 23:48 ` Hugh Dickins
2012-11-02 1:43 ` Dave Jones
2012-11-02 1:43 ` Dave Jones
2012-11-02 23:26 ` Hugh Dickins
2012-11-02 23:26 ` Hugh Dickins
2012-11-06 1:32 ` [PATCH] tmpfs: fix shmem_getpage_gfp VM_BUG_ON Hugh Dickins
2012-11-06 1:32 ` Hugh Dickins
2012-11-06 13:54 ` Dave Jones
2012-11-06 13:54 ` Dave Jones
2012-11-06 23:48 ` Hugh Dickins
2012-11-06 23:48 ` Hugh Dickins
2012-11-07 22:38 ` Dave Jones
2012-11-07 22:38 ` Dave Jones
2012-11-14 1:36 ` [PATCH] tmpfs: fix shmem_getpage_gfp VM_BUG_ON fix Hugh Dickins
2012-11-14 1:36 ` Hugh Dickins
2012-11-14 3:07 ` [PATCH] tmpfs: fix shmem_getpage_gfp VM_BUG_ON Jaegeuk Hanse
2012-11-14 3:07 ` Jaegeuk Hanse
2012-11-14 3:50 ` Hugh Dickins
2012-11-14 3:50 ` Hugh Dickins
2012-11-14 6:14 ` Dave Jones
2012-11-14 6:14 ` Dave Jones
2012-11-14 10:06 ` Hugh Dickins
2012-11-14 10:06 ` Hugh Dickins
2012-11-15 7:39 ` Jaegeuk Hanse
2012-11-15 7:39 ` Jaegeuk Hanse
2012-11-15 19:56 ` Hugh Dickins
2012-11-15 19:56 ` Hugh Dickins
2012-11-16 0:40 ` Jaegeuk Hanse
2012-11-16 0:40 ` Jaegeuk Hanse
2012-11-16 9:34 ` Jaegeuk Hanse
2012-11-16 9:34 ` Jaegeuk Hanse
2012-11-17 4:48 ` Hugh Dickins
2012-11-17 4:48 ` Hugh Dickins
2012-11-18 0:57 ` Jaegeuk Hanse
2012-11-18 0:57 ` Jaegeuk Hanse
2012-11-18 1:48 ` Jaegeuk Hanse [this message]
2012-11-18 1:48 ` Jaegeuk Hanse
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=50A83E5E.9060300@gmail.com \
--to=jaegeuk.hanse@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=davej@redhat.com \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.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.