Re: [PATCH v2 3/4] fat: mark superblock as dirty less often

From: OGAWA Hirofumi
Date: Sat Apr 14 2012 - 06:37:59 EST


Artem Bityutskiy <dedekind1@xxxxxxxxx> writes:

> On Sat, 2012-04-14 at 18:17 +0900, OGAWA Hirofumi wrote:
>> Artem Bityutskiy <dedekind1@xxxxxxxxx> writes:
>>
>> > From: Artem Bityutskiy <artem.bityutskiy@xxxxxxxxxxxxxxx>
>> >
>> > This patch is a preparation for further changes. It touches few functions
>> > in fatent.c and prevents them from marking the superblock as dirty
>> > unnecessarily often. Namely, instead of marking it as dirty in the internal
>> > tight loops - do it only once at the end of the functions. And instead of
>> > marking it as dirty while holding the FAT table lock, do it
>> > outside the lock.
>> >
>> > The reason for this patch is that marking the superblock as dirty will soon
>> > become a little bit heavier operation, so it is cleaner to do this
>> > only when it
>> > is necessary.
>>
>> For it, please use local variable like,
>>
>>
>> {
>> int fsinfo_dirty = 0;
>>
>> while (1) {
>> change free_clusters
>> fsinfo_dirty = 1;
>> }
>>
>> if (fsinfo_dirty)
>> mark_fsinfo_dirty()
>> }
>>
>> instead of dirty it always.
>
> But could you please explain why do we need an extra variable? What is
> the problem with doing all our FAT table changes and then marking the
> FSINFO as dirty?

Above example may not be proper. I meant please dirty FSINFO only if
necessary. Your patch seems to be dirty even if code didn't change
FSINFO.
--
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/