From mboxrd@z Thu Jan 1 00:00:00 1970 From: Theodore Ts'o Subject: Re: [PATCH-v2 1/2] fs: make sure the timestamps for lazytime inodes eventually get written Date: Tue, 17 Mar 2015 11:09:35 -0400 Message-ID: <20150317150935.GA5663@thunk.org> References: <1426533260-3305-1-git-send-email-tytso@mit.edu> <1426533260-3305-2-git-send-email-tytso@mit.edu> <0ADB84CA-6F1D-41EC-A847-FCD5764FCAE9@dilger.ca> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Linux Filesystem Development List , jack@suse.cz, torvalds@linux-foundation.org, viro@zeniv.linux.org.uk, stable@vger.kernel.org To: Andreas Dilger Return-path: Content-Disposition: inline In-Reply-To: <0ADB84CA-6F1D-41EC-A847-FCD5764FCAE9@dilger.ca> Sender: stable-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org On Mon, Mar 16, 2015 at 03:34:12PM -0600, Andreas Dilger wrote: > I wonder if something more lightweight could be added to avoid this > problem? For example, we only care about this case if it has been > going on for more than the lazytime interval (about a day), so the > inode could store a 16-bit i_dirtied_time_when that is approximately > (jiffies >> bits_in_a_half_a_day) and only check time_after() that. > The __u16 could fit into some existing hole (e.g. after i_bytes on my > kernel) and avoid expanding the size of the inode at all. > > The remaining high bits of i_dirtied_time_when would be irrelevant, since > a __u16 of half-days is about 80 years, so it would be enough to compare: > > > time_after(i_dirtied_time_when, (__u16)(jiffies >> bits_in_half_a_day)) That won't work correctly; we'd have to do something like this #define u16_after(a,b) (typecheck(__u16, a) && typecheck(__u16, b) && \ ((__s16)((b) - (a)) < 0)) > Minor issue, is there a good reason why dirtied_time_when doesn't have an > "i_" prefix? It's because dirtied_when also doesn't have an i_ prefix, but arguably it should. - Ted