From mboxrd@z Thu Jan 1 00:00:00 1970 From: Akshat Aranya Subject: Difference between release_page() and launder_page() Date: Fri, 30 Apr 2010 08:05:21 -0400 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 To: linux-fsdevel@vger.kernel.org, Trond Myklebust Return-path: Received: from mail-yw0-f194.google.com ([209.85.211.194]:64308 "EHLO mail-yw0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757530Ab0D3R0V (ORCPT ); Fri, 30 Apr 2010 13:26:21 -0400 Received: by ywh32 with SMTP id 32so268599ywh.33 for ; Fri, 30 Apr 2010 10:26:18 -0700 (PDT) Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Hi Trond and others, I've been trying to figure out meaning of release_page() vs. launder_page() by looking at the source code and the history behind it. Here's what I could piece together so far: 1. Before launder_page() was added, release_page() was intended to do the file system's writeback. 2. This would cause a deadlock for NFS because in some cases, the inode lock would be taken after the page lock to process write requests to the server. 3. The page writeback was moved to nfs_launder_page() instead of nfs_release_page() to avoid the deadlock. 4. This, however, misses pages that are clean but unstable (?). To allow writeback of these pages, writeback was added back to nfs_release_page() Do I have the picture correct? Could you explain how in NFS some pages end up being dirty while others end up being clean-but-unstable? Thanks, Akshat