[PATCH] Fix off by one error in page_region_mask()
Eric Sandeen
sandeen at sandeen.net
Thu Dec 4 22:53:08 CST 2008
Lachlan McIlroy wrote:
> Eric Sandeen wrote:
>> Lachlan McIlroy wrote:
>>> final is calculated to be the last bit to set (ie inclusive) but when we
>>> do the mask shifting final really needs to be first bit not to set.
>>>
>>> For example if first and final are both bit 0 (ie only first bit to be set)
>>> then mask is completely shifted and becomes all zeroes.
>>>
>>> Or if first is 0 and final is 63 then the mask is shifted one bit when it
>>> shouldn't be shifted at all.
>> Lachlan, what's the end result of this bug? What's the broken behavior?
>
> There was no observed bug - well nothing I can tie directly to this code.
> I found this by inspection while investigating the page bitmap stuff.
> We have a problem with ia64 going to 64K page size with filesystems that
> use a filesystem sector size of 512 bytes - we don't have the granularity
> we need in the bitmap.
>
> I suppose it is possible this bug could indicate a page region is not up
> to date when it actually is and we might re-read something from disk and
> overwrite the more up to date in-memory version.
ah, ok. So I've seen this corruption on 64k pages too, on ppc... but I
take it this patch doesn't fix it...
Thanks,
-Eric
More information about the xfs
mailing list