From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Morton Subject: Re: [PATCH 24/45] CacheFiles: Add a hook to write a single page of data to an inode [ver #41] Date: Fri, 21 Nov 2008 00:23:17 -0800 Message-ID: <20081121002317.69e4fd11.akpm@linux-foundation.org> References: <20081120144139.10667.75519.stgit@warthog.procyon.org.uk> <20081120144343.10667.530.stgit@warthog.procyon.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, nfsv4@linux-nfs.org, viro@ZenIV.linux.org.uk To: David Howells Return-path: In-Reply-To: <20081120144343.10667.530.stgit@warthog.procyon.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: nfsv4-bounces@linux-nfs.org Errors-To: nfsv4-bounces@linux-nfs.org List-Id: linux-fsdevel.vger.kernel.org On Thu, 20 Nov 2008 14:43:43 +0000 David Howells wrote: > Add an address space operation to write one single page of data to an inode at > a page-aligned location (thus permitting the implementation to be highly > optimised). The data source is a single page. > > This is used by CacheFiles to store the contents of netfs pages into their > backing file pages. > > Supply a generic implementation for this that uses the write_begin() and > write_end() address_space operations to bind a copy directly into the page > cache. > > Hook the Ext2 and Ext3 operations to the generic implementation. > > > ... > > + > + /* write the contents of the source page over the page at the specified > + * index in the target address space (the source page does not need to > + * be related to the target address space) */ > + int (*write_one_page)(struct address_space *, pgoff_t, struct page *); > }; Sigh. I don't normally comment on busted comment layout, but Ingo does so I'm allowed to ;) See recent discussion around the kmemleak patches. > +/** > + * generic_file_buffered_write_one_page - Write a single page of data to an > + * inode kerneldoc doesn't permit line breaks in this context (unless it got fixed recently) > + * @mapping - The address space of the target inode > + * @index - The target page in the target inode to fill > + * @source - The data to write into the target page > + * > + * Write the data from the source page to the page in the nominated address > + * space at the @index specified. Note that the file will not be extended if > + * the page crosses the EOF marker, in which case only the first part of the > + * page will be written. > + * > + * The @source page does not need to have any association with the file or the > + * target page offset. > + */