On Tuesday 15 January 2013 11:14:17 Vyacheslav Dubeyko wrote: [...] > > Signed-off-by: Sven Eckelmann <sven@xxxxxxxxxxxxx> > > --- > > > > sbin/cleanerd/cleanerd.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/sbin/cleanerd/cleanerd.c b/sbin/cleanerd/cleanerd.c > > index bfcd893..12ed975 100644 > > --- a/sbin/cleanerd/cleanerd.c > > +++ b/sbin/cleanerd/cleanerd.c > > @@ -592,7 +592,7 @@ nilfs_cleanerd_select_segments(struct nilfs_cleanerd > > *cleanerd,> > > * selected. */ > > > > thr = (config->cf_selection_policy.p_threshold != 0) ? > > > > config->cf_selection_policy.p_threshold : > > - sustat->ss_nongc_ctime; > > + ~0ULL; > > 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. Depends on the definition of right. In a complete environment using the current nilfs kernel code it needs to _work around_ this problem. But yes, the culprit must be the kernel side. > 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. Yes, one problem for example is the non-monotonic behaviour of many timekeeper functions. Kind regards, Sven
Attachment:
signature.asc
Description: This is a digitally signed message part.