From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anton Altaparmakov Subject: Re: Bug in block_write_full_page (fs/buffer.c)? Date: Mon, 6 Jun 2005 23:55:57 +0100 (BST) Message-ID: References: <8e70aacf05060519472206605e@mail.gmail.com> <8e70aacf05060613022b1466ff@mail.gmail.com> Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: linux-fsdevel@vger.kernel.org Return-path: Received: from ppsw-9.csi.cam.ac.uk ([131.111.8.139]:30851 "EHLO ppsw-9.csi.cam.ac.uk") by vger.kernel.org with ESMTP id S261732AbVFFW4A (ORCPT ); Mon, 6 Jun 2005 18:56:00 -0400 To: Martin Jambor In-Reply-To: <8e70aacf05060613022b1466ff@mail.gmail.com> Sender: linux-fsdevel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org Hi, On Mon, 6 Jun 2005, Martin Jambor wrote: > when block_write_full_page (fs/buffer.c) is called and the page is > fully outside the i_size, the function does not call > end_page_writeback() even though Documentation/filesystems/Locking > explicitly says that any implementation of aops->writepage must do so > in any case. > > "If no I/O is submitted, the filesystem must run end_page_writeback() > against the page before returning from writepage." > > Is this a bug, is the documentation wrong or is it just me? Just you. (-; The sentence you quote applies only once set_page_writeback() has been run which it hasn't in this case. But this is beside the point. The point is that the code path you are concerned about calls block_invalidatepage() which ends up calling clear_page_dirty() for the kind of page we are discussing which in turn clears the radix tree dirty tag so all is dandy. Best regards, Anton -- Anton Altaparmakov (replace at with @) Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/