[rds-devel] [RESEND PATCH] mm: Use spin_lock_irqsave in __set_page_dirty_nobuffers

Andy Grover andy.grover at oracle.com
Fri Jan 21 11:25:26 PST 2011


On 01/21/2011 12:18 AM, Andrew Morton wrote:
> On Mon, 10 Jan 2011 22:15:34 -0800 Andy Grover<andy.grover at oracle.com>  wrote:
>
>> RDS is calling set_page_dirty from interrupt context,
>
> yikes.  Whatever possessed you to try that?

When doing an RDMA read into pinned pages, we get notified the operation 
is complete in a tasklet, and would like to mark the pages dirty and 
unpin in the same context.

The issue was __set_page_dirty_buffers (via calling set_page_dirty) was 
unconditionally re-enabling irqs as a side-effect because it was using 
*_irq instead of *_irqsave/restore.

How would you recommend we proceed? My understanding was calling 
set_page_dirty prior to issuing the operation isn't an option since it 
might get cleaned too early.

Thanks -- Regards -- Andy



More information about the rds-devel mailing list