From mboxrd@z Thu Jan 1 00:00:00 1970 From: Josef Bacik Subject: Re: Inode metadata and file data syncing Date: Wed, 18 Jul 2012 13:21:32 -0400 Message-ID: <20120718172132.GD2112@localhost.localdomain> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Cc: "linux-fsdevel@vger.kernel.org" To: "Jelinek, Sarah" Return-path: Received: from mx2.fusionio.com ([66.114.96.31]:47845 "EHLO mx2.fusionio.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751800Ab2GRRVo (ORCPT ); Wed, 18 Jul 2012 13:21:44 -0400 Content-Disposition: inline In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Wed, Jul 18, 2012 at 10:53:00AM -0600, Jelinek, Sarah wrote: > I am in the process of writing a file system in Linux. This file system > has a separate mechanism by which we manage metadata so I do not want to > write the file inode metadata to disk without explicitly requesting an > update. I do need the file data pages to be written to disk as per the > normal writeback process. > > If I use the common mechanism of creating an inode and inserting it into > the hash via insert_inode_locked(), the inode will be in the I_NEW state > and when the inode is marked dirty it will be put on the dirty list and > eventually flushed out to disk. One way I thought I could get around this > is by initializing the inode to i_state = I_DIRTY, skipping I_NEW, and > using insert_inode_hash() instead, so that if mark_inode_dirty() is called > it won't get put on the dirty list. The issue with this approach is that > it looks like this inode's pages will not get flushed to disk either since > it won't ever get on the dirty list. I need the pages written just not the > inode itself. > All the major file systems do this currently. If you just don't implement ->write_inode() you can control when the metadata is written out, the data will be flushed normally and you can write out the metadata whenever you feel like it, like the rest of us do without doing horrible things to the i_state. Thanks, Josef