• H
    [S390] mm: fix storage key handling · a43a9d93
    Heiko Carstens 提交于
    page_get_storage_key() and page_set_storage_key() expect a page address
    and not its page frame number. This got inconsistent with 2d42552d
    "[S390] merge page_test_dirty and page_clear_dirty".
    
    Result is that we read/write storage keys from random pages and do not
    have a working dirty bit tracking at all.
    E.g. SetPageUpdate() doesn't clear the dirty bit of requested pages, which
    for example ext4 doesn't like very much and panics after a while.
    
    Unable to handle kernel paging request at virtual user address (null)
    Oops: 0004 [#1] PREEMPT SMP DEBUG_PAGEALLOC
    Modules linked in:
    CPU: 1 Not tainted 2.6.39-07551-g139f37f5-dirty #152
    Process flush-94:0 (pid: 1576, task: 000000003eb34538, ksp: 000000003c287b70)
    Krnl PSW : 0704c00180000000 0000000000316b12 (jbd2_journal_file_inode+0x10e/0x138)
               R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 EA:3
    Krnl GPRS: 0000000000000000 0000000000000000 0000000000000000 0700000000000000
               0000000000316a62 000000003eb34cd0 0000000000000025 000000003c287b88
               0000000000000001 000000003c287a70 000000003f1ec678 000000003f1ec000
               0000000000000000 000000003e66ec00 0000000000316a62 000000003c287988
    Krnl Code: 0000000000316b04: f0a0000407f4       srp     4(11,%r0),2036,0
               0000000000316b0a: b9020022           ltgr    %r2,%r2
               0000000000316b0e: a7740015           brc     7,316b38
              >0000000000316b12: e3d0c0000024       stg     %r13,0(%r12)
               0000000000316b18: 4120c010           la      %r2,16(%r12)
               0000000000316b1c: 4130d060           la      %r3,96(%r13)
               0000000000316b20: e340d0600004       lg      %r4,96(%r13)
               0000000000316b26: c0e50002b567       brasl   %r14,36d5f4
    Call Trace:
    ([<0000000000316a62>] jbd2_journal_file_inode+0x5e/0x138)
     [<00000000002da13c>] mpage_da_map_and_submit+0x2e8/0x42c
     [<00000000002daac2>] ext4_da_writepages+0x2da/0x504
     [<00000000002597e8>] writeback_single_inode+0xf8/0x268
     [<0000000000259f06>] writeback_sb_inodes+0xd2/0x18c
     [<000000000025a700>] writeback_inodes_wb+0x80/0x168
     [<000000000025aa92>] wb_writeback+0x2aa/0x324
     [<000000000025abde>] wb_do_writeback+0xd2/0x274
     [<000000000025ae3a>] bdi_writeback_thread+0xba/0x1c4
     [<00000000001737be>] kthread+0xa6/0xb0
     [<000000000056c1da>] kernel_thread_starter+0x6/0xc
     [<000000000056c1d4>] kernel_thread_starter+0x0/0xc
    INFO: lockdep is turned off.
    Last Breaking-Event-Address:
     [<0000000000316a8a>] jbd2_journal_file_inode+0x86/0x138
    Reported-by: NSebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
    a43a9d93
page-flags.h 14.4 KB