Skip to contentSkip to conversation

New: BUGON at fs/ext4/inode.c line :2245

Bug 151511 [email protected] 1 participant 2 messages Aug 5, 2016

lore
Share & tools
lore
#0 lore raw

https://bugzilla.kernel.org/show_bug.cgi?id=151511

            Bug ID: 151511
           Summary: BUGON at fs/ext4/inode.c line :2245
           Product: File System
           Version: 2.5
    Kernel Version: 3.14.74
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: high
          Priority: P1
         Component: ext4
          Assignee: [email protected]
          Reporter: [email protected]
        Regression: No

I hit the BUG_ON after munmap a file.

BUGON at fs/ext4/inode.c line :2245
mpage_prepare_extent_to_map
...
head = page_buffers(page); //bug on at here

when io err happened at ext4_writepages->mpage_map_and_submit_extent,ext4 return err from mpage_map_and_submit_extent->mpage_map_one_extent. Then ext4 set give_up_on_write be true to discard dirty pages to avoid infinite loops.
But in mpage_release_unused_pages(&mpd, give_up_on_write), ext4 didn't clean the pte->dirty.
when page munmaped,unmap_page_range->zap_pud_range->zap_pte_range set_page_dirty again will cause the bugon at fs/ext4/inode.c line :2245.

root/mm/memory.c
zap_pte_range
1145: if (pte_dirty(ptent))
1146: set_page_dirty(page); //set again cause bugon

I clear_page_dirty_for_io in mpage_release_unused_pages can solve the bugon.

                      if (invalidate) {
+                                       if (page_mapped(page)) 
+                                       {
+                                       clear_page_dirty_for_io(page);
+                                       )
                                block_invalidatepage_range(page, 0,
                                                           PAGE_CACHE_SIZE);
                                ClearPageUptodate(page);

but i am not sure the patch is ok.

Signature · 2 lines
You are receiving this mail because:
You are watching the assignee of the bug.