Re: [PATCH] fbdefio: add set_page_dirty handler to deferred IO FB

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Andrew Morton
Date: Monday, August 18, 2008 - 11:38 pm

On Tue, 19 Aug 2008 07:02:45 +0100 Ian Campbell <ijc@hellion.org.uk> wrote:


<searches, finds the thread.  "kernel BUG at lib/radix-tree.c:473!">

Is there actually any benefit in setting these pages dirty?  Or should
this be an empty function?  I see claims in the above thread that this
driver uses PG_dirty for optimising writeback but I can't immediately
locate any code which actually does that.


Seems a bit odd to rewrite the address_space_operations at mmap()-time.
A filesystem will usually do this on the inode when it is first being
set up, when no other thread of control can be looking at it.

	grep 'if .*[-]>a_ops' */*.c

and you'll see that lots of code assumes that a_ops doesn't get
swizzled around (to contain a bunch of NULL pointers!) under its feet. 
Maybe none of those code paths are applicable to the /dev/fb0 inode,
but it would be painful to work out which paths _are_ applicable and to
verify that they're all safe wrt a_ops getting whisked away.

Rewriting page->mapping within the vm_operations_struct.fault handler
seems a bit suspect for similar reasons.

I suspect that we just shouldn't be pretending that this is a regular
anon/pagecache page to this extent.  Maybe a suitable fix would be to
teach fb_deferred_io_fault() to instantiate the pte itself
(vm_insert_page()) and then return VM_FAULT_NOPAGE?

I assume there's a reason why we aren't VM_IO/VM_RESERVED/PG_reserved in
here.

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [PATCH] fbdefio: add set_page_dirty handler to deferre ..., Andrew Morton, (Mon Aug 18, 11:38 pm)
Re: [PATCH] fbdefio: add set_page_dirty handler to deferre ..., Markus Armbruster, (Wed Aug 20, 5:27 am)
Re: [PATCH] fbdefio: add set_page_dirty handler to deferre ..., Jeremy Fitzhardinge, (Wed Aug 20, 11:47 am)