From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Morton Subject: Re: [PATCH 3/3] writeback: limit write_cache_pages integrity scanning to current EOF Date: Wed, 9 Jun 2010 14:12:08 -0700 Message-ID: <20100609141208.a1babcf4.akpm@linux-foundation.org> References: <1276043840-1946-1-git-send-email-david@fromorbit.com> <1276043840-1946-4-git-send-email-david@fromorbit.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: torvalds@linux-foundation.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com, stable@kernel.org To: Dave Chinner Return-path: In-Reply-To: <1276043840-1946-4-git-send-email-david@fromorbit.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org On Wed, 9 Jun 2010 10:37:20 +1000 Dave Chinner wrote: > From: Dave Chinner > > sync can currently take a really long time if a concurrent writer is > extending a file. The problem is that the dirty pages on the address > space grow in the same direction as write_cache_pages scans, so if > the writer keeps ahead of writeback, the writeback will not > terminate until the writer stops adding dirty pages. > > For a data integrity sync, we only need to write the pages dirty at > the time we start the writeback, so we can stop scanning once we get > to the page that was at the end of the file at the time the scan > started. > > This will prevent operations like copying a large file preventing > sync from completing as it will not write back pages that were > dirtied after the sync was started. This does not impact the > existing integrity guarantees, as any dirty page (old or new) > within the EOF range at the start of the scan will still be > captured. > > This patch will not prevent sync from blocking on large writes into > holes. That requires more complex intervention while this patch only > addresses the common append-case of this sync holdoff. > I don't know if this regression sucks enough to warrant backporting, but the fix is simple and is independent of [1/3] and [2/3].