lkml.org 
[lkml]   [2005]   [Mar]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [Ext2-devel] Re: [RFC] ext3/jbd race: releasing in-use journal_heads

    yup, looks like the same issue we hit in wait_on_page_writeback_range
    during AIO work - probably want to break out of the outer loop as well
    when this happens.

    From the old changelog:
    >>
    >> wait_on_page_writeback_range shouldn't wait for pages beyond the
    >> specified range. Ideally, the radix-tree-lookup could accept an
    >> end_index parameter so that it doesn't return the extra pages
    >> in the first place, but for now we just add a few extra checks
    >> to skip such pages.
    >>

    How hard would it be to add an end_index parameter to the radix tree
    lookup, since we seem to be hitting this in multiple places ?

    Regards
    Suparna


    On Mon, Mar 07, 2005 at 03:50:01PM -0800, Andrew Morton wrote:
    > "Stephen C. Tweedie" <sct@redhat.com> wrote:
    > >
    > > In invalidate_inode_pages2_range(), what happens if we lookup a pagevec,
    > > get a bunch of pages back, but all the pages in the vec are beyond the
    > > end of the range we want?
    >
    > hmm, yes. Another one :(
    >
    > > @@ -271,12 +271,13 @@ int invalidate_inode_pages2_range(struct
    > > int was_dirty;
    > >
    > > lock_page(page);
    > > + if (page->mapping == mapping)
    > > + next = page->index + 1;
    > > if (page->mapping != mapping || page->index > end) {
    > > unlock_page(page);
    > > continue;
    > > }
    > > wait_on_page_writeback(page);
    > > - next = page->index + 1;
    > > if (next == 0)
    > > wrapped = 1;
    > > while (page_mapped(page)) {
    >
    > truncate_inode_pages_range() seems to dtrt here. Can we do it in the same
    > manner in invalidate_inode_pages2_range()?
    >
    >
    > Something like:
    >
    >
    > diff -puN mm/truncate.c~invalidate_inode_pages2_range-livelock-fix mm/truncate.c
    > --- 25/mm/truncate.c~invalidate_inode_pages2_range-livelock-fix Mon Mar 7 15:47:25 2005
    > +++ 25-akpm/mm/truncate.c Mon Mar 7 15:49:09 2005
    > @@ -305,15 +305,22 @@ int invalidate_inode_pages2_range(struct
    > min(end - next, (pgoff_t)PAGEVEC_SIZE - 1) + 1)) {
    > for (i = 0; !ret && i < pagevec_count(&pvec); i++) {
    > struct page *page = pvec.pages[i];
    > + pgoff_t page_index;
    > int was_dirty;
    >
    > lock_page(page);
    > - if (page->mapping != mapping || page->index > end) {
    > + page_index = page->index;
    > + if (page_index > end) {
    > + next = page_index;
    > + unlock_page(page);
    > + break;
    > + }
    > + if (page->mapping != mapping) {
    > unlock_page(page);
    > continue;
    > }
    > wait_on_page_writeback(page);
    > - next = page->index + 1;
    > + next = page_index + 1;
    > if (next == 0)
    > wrapped = 1;
    > while (page_mapped(page)) {
    > @@ -323,7 +330,7 @@ int invalidate_inode_pages2_range(struct
    > */
    > unmap_mapping_range(mapping,
    > page->index << PAGE_CACHE_SHIFT,
    > - (end - page->index + 1)
    > + (end - page_index + 1)
    > << PAGE_CACHE_SHIFT,
    > 0);
    > did_range_unmap = 1;
    > @@ -332,7 +339,7 @@ int invalidate_inode_pages2_range(struct
    > * Just zap this page
    > */
    > unmap_mapping_range(mapping,
    > - page->index << PAGE_CACHE_SHIFT,
    > + page_index << PAGE_CACHE_SHIFT,
    > PAGE_CACHE_SIZE, 0);
    > }
    > }
    > _
    >
    >
    >
    > -------------------------------------------------------
    > SF email is sponsored by - The IT Product Guide
    > Read honest & candid reviews on hundreds of IT Products from real users.
    > Discover which products truly live up to the hype. Start reading now.
    > http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
    > _______________________________________________
    > Ext2-devel mailing list
    > Ext2-devel@lists.sourceforge.net
    > https://lists.sourceforge.net/lists/listinfo/ext2-devel

    --
    Suparna Bhattacharya (suparna@in.ibm.com)
    Linux Technology Center
    IBM Software Lab, India

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:10    [W:0.032 / U:0.748 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site