Re: [fsdax xfs] Regression panic at inode_switch_wbs_work_fn

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

 



On Sat, Jul 17, 2021 at 10:17:13AM -0700, Darrick J. Wong wrote:
> I experience the same problem that Murphy does, and I tracked it down
> to this chunk of inode_do_switch_wbs:
> 
> 	/*
> 	 * Count and transfer stats.  Note that PAGECACHE_TAG_DIRTY points
> 	 * to possibly dirty pages while PAGECACHE_TAG_WRITEBACK points to
> 	 * pages actually under writeback.
> 	 */
> 	xas_for_each_marked(&xas, page, ULONG_MAX, PAGECACHE_TAG_DIRTY) {
> here >>>>>>>>>> if (PageDirty(page)) {
> 			dec_wb_stat(old_wb, WB_RECLAIMABLE);
> 			inc_wb_stat(new_wb, WB_RECLAIMABLE);
> 		}
> 	}
> 
> I suspect that "page" is really a pfn to a pmem mapping and not a real
> struct page.

I think you're right.

Running scripts/decodecode on the original report, that's:

   0:	48 8b 50 08          	mov    0x8(%rax),%rdx

RAX: 0000000005b0f661

so rax is not a struct page, it's a PFN (/DAX) entry.

We shouldn't even be calling inode_do_switch_wbs() for DAX inodes because
we don't do writeback for DAX inodes (at least as far as the kernel's
writeback infrastructure is concerned; obviously the CPU does writeback
from its caches to PMEM).

Maybe some check at a higher level would be appropriate?  I don't know
much about this part of the kernel.




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux