Re: [RESEND PATCH]ext4: bugfix for mmaped pages in mpage_release_unused_pages()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 06, 2016 at 04:49:17PM +0800, wang.guang55@xxxxxxxxxx wrote:
> ext4: bugfix for mmaped pages  in mpage_release_unused_pages()
> 
> Pages clear buffers after ext4 delayed block allocation failed,
> However, it does not clean its pte_dirty flag.
> if the pages unmap ,in cording to the pte_dirty ,
> unmap_page_range may try to call __set_page_dirty,
> 
> which may lead to the bugon at 
> mpage_prepare_extent_to_map:head = page_buffers(page);.
> 
> This patch just call clear_page_dirty_for_io to clean pte_dirty 
> at mpage_release_unused_pages for pages mmaped. 
> 
>  
> Steps to reproduce the bug:
> (1) mmap a file in ext4
> addr = (char *)mmap(NULL, 4096, 
>         PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
>  memset(addr, 'i', 4096);
> (2) return EIO at 
> ext4_writepages->mpage_map_and_submit_extent->mpage_map_one_extent 
> Cause the log:
>                 ext4_msg(sb, KERN_CRIT,
>                         "Delayed block allocation failed for "
>                         "inode %lu at logical offset %llu with"
>                         " max blocks %u with error %d",
>                         inode->i_ino,
>                         (unsigned long long)map->m_lblk,
>                         (unsigned)map->m_len, -err);
> 
> (3)Unmap the addr cause warning at 
> __set_page_dirty:WARN_ON_ONCE(warn && !PageUptodate(page));
> (4) wait for a minute,then bugon happen.
> 
> Signed-off-by: wangguang <wangguang03@xxxxxxx>

Thanks, applied.   Apologies for the delay.

						- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Reiser Filesystem Development]     [Ceph FS]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite National Park]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Media]

  Powered by Linux