All of lore.kernel.org
 help / color / mirror / Atom feed
From: Badari Pulavarty <pbadari@us.ibm.com>
To: Blaisorblade <blaisorblade@yahoo.it>
Cc: Jeff Dike <jdike@addtoit.com>, Hugh Dickins <hugh@veritas.com>,
	akpm@osdl.org, andrea@suse.de, dvhltc@us.ibm.com,
	linux-mm <linux-mm@kvack.org>
Subject: Re: [RFC] madvise(MADV_TRUNCATE)
Date: Fri, 28 Oct 2005 09:16:38 -0700	[thread overview]
Message-ID: <43624EE6.8000605@us.ibm.com> (raw)
In-Reply-To: <200510281303.56688.blaisorblade@yahoo.it>

Blaisorblade wrote:
> On Friday 28 October 2005 05:46, Jeff Dike wrote:
> 
>>On Wed, Oct 26, 2005 at 03:49:55PM -0700, Badari Pulavarty wrote:
>>
>>>Basically, I added "truncate_range" inode operation to provide
>>>opportunity for the filesystem to zero the blocks and/or free
>>>them up.
>>>
>>>I also attempted to implement shmem_truncate_range() which
>>>needs lots of testing before I work out bugs :(
>>
>>I added memory hotplug to UML to check this out.  It seems to be freeing
>>pages that are outside the desired range.  I'm doing the simplest possible
>>thing - grabbing a bunch of pages that are most likely not dirty yet,
>>and MADV_TRUNCATEing them one at a time.  Everything in UML goes harwire
>>after that, and the cases that I've looked at involve pages being suddenly
>>zero.
> 
> 
> Thanks for CC'ing me, Jeff.
> 
> I've just read the whole thread, and I'd thank you for this effort. I've also 
> found a couple of bugs I think (see below).
> 
> It seems you completely missed the purpose of vma->vm_pgoff.
> 
> Jeff, I think this is enough to explain the problem in UML. See below.
> 
> On the plan, however, I have a concern: VM_NONLINEAR.
> 
> For now it can be ok to leave madvise(REMOVE) unimplemented for that, but if 
> and when I'll get the time to finish the remap_file_pages changes* for UML to 
> use it, UML will _require_ this to be implemented too.
> 
> However, looking at the patch, the implementation would boil down to something 
> like
> 
> for each page in range {
> 	start = page->index;
> 	end = start + PAGE_SIZE;
> 	call truncate_inode_pages_range(mapping, offset, end);
> 	inode->i_op->truncate_range(inode, offset, end);
> }
> 
> unmap_mapping_range() should be done at once for the whole range.
> 

patch does

for all the pages in the given vma {
	unmap_mapping_range(mapping, offset, end);
	truncate_inode_pages_range(mapping, offset, end);
	inode->op->truncate_range(inode, offset, end)
}

It operates on bunch of pages in the given VMA. Since UML has
one page for VMA, it operates on one page at a time - do you
see anything wrong here ?

> While looking at these, here's what I'd call "strange" in the patch:
> 
> Also, why is unmap_mapping_range done with the inode semaphore held? I don't 
> remember locking rule but conceptually this has no point, IMHO.

I am not sure either, let me look at it. (I thought we should hold it
for truncate()).

> Btw, why I don't see vm_pgoff mentioned in these lines of the patch (nor 
> anywhere else in the patch)?

vm_pgoff - don't remember what that supposed to represent...


> You call truncate_inode_pages_range(mapping, offset, endoff), so I think 
> you're really burned here.
> 
> +offset = (loff_t)(start - vma->vm_start);
> +endoff = (loff_t)(end - vma->vm_start);

"end" here is not end of VMA - its end of the region we want to discard
(in UML case its start + PAGE_SIZE). Anything wrong ?
> 
> * UML uses mmap()/munmap()/mprotect() to implement the virtual "hardware MMU", 
> which means we have one vma per page usually and that we can call hundred of 
> unmaps on process exit. Ingo Molnar implemented time ago remap_file_pages() 
> prot support (see around 2.6.4/2.6.5 -mm trees) and I recovered and completed 
> it (and posted for review) during last summer.

Thanks,
Badari

--
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>

  parent reply	other threads:[~2005-10-28 16:16 UTC|newest]

Thread overview: 114+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-10-26 22:49 [RFC] madvise(MADV_TRUNCATE) Badari Pulavarty
2005-10-27  8:38 ` Andi Kleen
2005-10-27 13:17   ` Andrea Arcangeli
2005-10-27 15:00     ` Badari Pulavarty
2005-10-27 15:11       ` Andrea Arcangeli
2005-10-27 18:20         ` Andrew Morton
2005-10-27 18:35           ` Badari Pulavarty
2005-10-27 18:50             ` Andrew Morton
2005-10-27 19:40               ` Gerrit Huizenga
2005-10-27 19:56                 ` Andi Kleen
2005-10-27 23:21                   ` Darren Hart
2005-10-27 20:05               ` Theodore Ts'o
2005-10-27 20:16                 ` Andrea Arcangeli
2005-10-28  1:42                 ` Badari Pulavarty
2005-10-28 16:33                   ` Theodore Ts'o
2005-10-27 20:22               ` Jeff Dike
2005-10-27 20:04           ` Andrea Arcangeli
2005-10-27 20:50             ` Andrew Morton
2005-10-27 21:37               ` Andrea Arcangeli
2005-10-27 22:23                 ` Andrew Morton
2005-10-27 23:05                   ` Badari Pulavarty
2005-10-27 23:16                     ` Andrew Morton
2005-10-27 23:33                       ` Peter Chubb
2005-10-28  0:22                   ` Andrea Arcangeli
2005-10-28  0:32                     ` Andrew Morton
2005-10-28  1:10                       ` Andrea Arcangeli
2005-10-28  1:27                       ` Badari Pulavarty
2005-10-28  2:00                         ` Andrew Morton
2005-10-27 22:32               ` Badari Pulavarty
2005-10-27 23:28             ` Peter Chubb
2005-10-27 23:49               ` Andrew Morton
2005-10-27 23:56                 ` Nathan Scott
2005-10-28  0:15                   ` Andrea Arcangeli
2005-10-27 23:59                 ` Peter Chubb
2005-10-28  3:46 ` Jeff Dike
2005-10-28 11:03   ` Blaisorblade
2005-10-28 13:29     ` Andrea Arcangeli
2005-10-28 16:56       ` Blaisorblade
2005-10-28 16:16     ` Badari Pulavarty [this message]
2005-10-28 18:40       ` Blaisorblade
2005-10-28 18:56         ` Badari Pulavarty
2005-10-29  0:35         ` Badari Pulavarty
2005-10-28 16:19   ` Badari Pulavarty
2005-10-28 17:10     ` Blaisorblade
2005-10-28 18:28       ` Jeff Dike
2005-10-28 18:44         ` Blaisorblade
2005-10-28 18:42     ` Jeff Dike
2005-10-28 18:54       ` Badari Pulavarty
2005-10-29  0:03       ` Badari Pulavarty
2005-10-29  2:51         ` Jeff Dike
2005-10-31 16:34           ` Badari Pulavarty
2005-10-31 19:15           ` Badari Pulavarty
2005-10-31 19:49           ` [RFC][PATCH] madvise(MADV_TRUNCATE) Badari Pulavarty
2005-11-01  0:05             ` Jeff Dike
2005-11-02  1:15               ` [PATCH] 2.6.14 patch for supporting madvise(MADV_FREE) Badari Pulavarty
2005-11-02  1:43                 ` Andrea Arcangeli
2005-11-02  1:43                   ` Andrea Arcangeli
2005-11-02 15:49                   ` Badari Pulavarty
2005-11-02 15:49                     ` Badari Pulavarty
2005-11-02 16:12                   ` [PATCH] 2.6.14 patch for supporting madvise(MADV_REMOVE) Badari Pulavarty
2005-11-02 19:54                     ` New bug in patch and existing Linux code - race with install_page() (was: Re: [PATCH] 2.6.14 patch for supporting madvise(MADV_REMOVE)) Blaisorblade
2005-11-02 19:54                       ` Blaisorblade
2005-11-02 20:12                       ` Hugh Dickins
2005-11-02 20:12                         ` Hugh Dickins
2005-11-02 20:45                         ` Hugh Dickins
2005-11-02 20:45                           ` Hugh Dickins
2005-11-02 21:36                       ` Badari Pulavarty
2005-11-02 21:36                         ` Badari Pulavarty
2005-11-02 21:55                         ` Hugh Dickins
2005-11-02 21:55                           ` Hugh Dickins
2005-11-02 22:02                           ` Badari Pulavarty
2005-11-02 22:02                             ` Badari Pulavarty
2005-11-12  0:25                     ` [PATCH] 2.6.14 patch for supporting madvise(MADV_REMOVE) Andrew Morton
2005-11-12  0:25                       ` Andrew Morton
2005-11-12  0:34                       ` Badari Pulavarty
2005-11-12  0:34                         ` Badari Pulavarty
2005-11-12  1:43                         ` Andrew Morton
2005-11-12  1:43                           ` Andrew Morton
2005-11-12  4:41                           ` Badari Pulavarty
2005-11-12  4:41                             ` Badari Pulavarty
2006-01-16 13:06                             ` differences between MADV_FREE and MADV_DONTNEED Andrea Arcangeli
2006-01-16 13:06                               ` Andrea Arcangeli
2006-01-16 16:02                               ` Suleiman Souhlal
2006-01-16 16:02                                 ` Suleiman Souhlal
2006-01-16 16:28                                 ` Andrea Arcangeli
2006-01-16 16:28                                   ` Andrea Arcangeli
2006-01-16 17:03                                   ` Suleiman Souhlal
2006-01-16 17:03                                     ` Suleiman Souhlal
2006-01-16 17:24                                     ` Andrea Arcangeli
2006-01-16 17:24                                       ` Andrea Arcangeli
2006-01-16 21:43                                       ` Eric W. Biederman
2006-01-16 21:43                                         ` Eric W. Biederman
2006-01-17  0:24                                         ` Suleiman Souhlal
2006-01-17  0:24                                           ` Suleiman Souhlal
2006-01-17  1:04                                           ` Nicholas Miell
2006-01-17  1:04                                             ` Nicholas Miell
2006-01-17 12:43                                             ` Christoph Hellwig
2006-01-17 12:43                                               ` Christoph Hellwig
2006-01-17 18:23                                               ` Eric W. Biederman
2006-01-17 18:23                                                 ` Eric W. Biederman
2006-01-17 22:55                                                 ` Nicholas Miell
2006-01-17 22:55                                                   ` Nicholas Miell
2007-03-01 18:11                                                 ` Samuel Thibault
2007-03-01 18:11                                                   ` Samuel Thibault
2006-01-17 19:06                                               ` Badari Pulavarty
2006-01-17 19:06                                                 ` Badari Pulavarty
2006-01-17  1:06                               ` Blaisorblade
2006-01-17  1:06                                 ` Blaisorblade
2006-01-17  1:33                                 ` Andrea Arcangeli
2006-01-17  1:33                                   ` Andrea Arcangeli
2005-11-12  0:34                     ` [PATCH] 2.6.14 patch for supporting madvise(MADV_REMOVE) Andrew Morton
2005-11-12  0:34                       ` Andrew Morton
2005-10-28 17:55   ` [RFC] madvise(MADV_TRUNCATE) Blaisorblade
2005-10-28 21:23     ` Theodore Ts'o

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=43624EE6.8000605@us.ibm.com \
    --to=pbadari@us.ibm.com \
    --cc=akpm@osdl.org \
    --cc=andrea@suse.de \
    --cc=blaisorblade@yahoo.it \
    --cc=dvhltc@us.ibm.com \
    --cc=hugh@veritas.com \
    --cc=jdike@addtoit.com \
    --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.