Hi Ryusuke, On Tue, 2013-01-15 at 19:43 +0900, Ryusuke Konishi wrote: [snip] > > > >As I understand the code of nilfs_cleanerd, this code is correct without > >your changing. The ss_nongc_ctime is the creation time of the last > >segment not for GC. When thr is set then it compared with sui_lastmod. > >The sui_lastmod is the timestamp of last modification. So, the > >nilfs_cleanerd works right. > > > >I think that this is a bug on the kernel side. My current vision is that > >in some environment the ns_nongc_ctime can be not updated correctly. So, > >you have such threshold that prevent from segments clearing. > > I guess the problem is caused because ss_nongc_ctime is not updated by > the kernel module if dirty blocks created by file operations are written > out through nilfs_clean_segments function. Actually, > nilfs_clean_segments() can roll together normal dirty blocks. > > So, if GC is working without interruption, ss_nongc_ctime may not be > updated long time. > > If this is the cause of the problem, nilfs2 log writer should be changed > so that nilfs->ns_nongc_ctime is updated with sci->sc_seg_ctime if > there is a file system change (file/directory change or an ifile change). > > NILFS_SC_HAVE_DELTA flag may be available for this purpose. > > The ss_nongc_ctime check is needed to make GC stoppable. > Without this check, GC can continue endlessly even if the file system > doesn't have any change. > Thank you for your detailed explanation. It is very helpful for me. But, currently, I can't reproduce the issue. All works fine on my side. With the best regards, Vyacheslav Dubeyko. > With regards, > Ryusuke Konishi > -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html