On Fri, 07 Feb 2014 13:56:56 +0900 (JST), Ryusuke Konishi wrote:
> On Thu, 6 Feb 2014 15:17:25 +0100, Andreas Rohner wrote:
>> @@ -1415,6 +1419,17 @@ static int nilfs_cleanerd_clean_segments(struct
>> nilfs_cleanerd *cleanerd,
>> nilfs_cleanerd_progress(cleanerd, stat.cleaned_segs);
>> cleanerd->fallback = 0;
>> cleanerd->retry_cleaning = 0;
>> +
>> + *ndone = stat.cleaned_segs;
>> + } else if (stat.deferred_segs > 0) {
>> + for (i = 0; i < stat.deferred_segs; i++)
>> + syslog(LOG_DEBUG, "segment %llu deferred",
>> + (unsigned long long)segnums[i]);
>> + nilfs_cleanerd_progress(cleanerd, stat.deferred_segs);
>> + cleanerd->fallback = 0;
>> + cleanerd->retry_cleaning = 0;
>> +
>> + *ndone = stat.deferred_segs;
>> } else {
>> syslog(LOG_DEBUG, "no segments cleaned");
>>
>> @@ -1428,8 +1443,9 @@ static int nilfs_cleanerd_clean_segments(struct
>> nilfs_cleanerd *cleanerd,
>> } else {
>> cleanerd->retry_cleaning = 0;
>> }
>> + *ndone = 0;
>
> This condition judgment supposes that stat.deferred_segs and
> stat.cleaned_segs are exclusive. It is correct in the current
> implementation, but I don't want to define the semantics of
> nilfs_xreclaim_segment() as such.
>
> Can you rewrite this patch ?
> Or, I will change this post handling.
>
Uum, it needs to introduce another semantics or new arguments
to realize this since we don't know which segments are
deferred.
I am thinking of doing this by sorting segnum[] array as follows:
- cleand segs:
segnum[0] .. segnum[cleaned_segs - 1]
- deferred segs:
segnum[cleaned_segs] .. segnum[cleaned_segs + deferred_segs - 1]
- prorected segs:
segnum[cleaned_segs + deferred_segs] ..
segnum[cleaned_segs + deferred_segs + protected_segs - 1]
Actually, protected segments are moved behind segnums of cleaned
segments in the current implementation.
Regards,
Ryusuke Konishi
--
To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html