On Thu, 16 May 2013 10:54:45 +0400, Vyacheslav Dubeyko wrote:
> Hi Ryusuke,
>
> On Thu, 2013-05-16 at 07:59 +0900, Ryusuke Konishi wrote:
>
> [snip]
>> >
>> > This patch still has a potential overflow issue that I pointed out in
>> > the previous comment; the patch handles the number of descriptor
>> > blocks in 32-bit wide variables without checking its upper limit.
>> >
>> > If you won't to add checks for the number of descriptor blocks, I
>> > propose you to change the definition of nilfs_palloc_groups_count()
>> > instead:
>> >
>> > static inline unsigned long
>> > nilfs_palloc_groups_count(const struct inode *inode)
>> > {
>> > - return 1UL << (BITS_PER_LONG - (inode->i_blkbits + 3 /* log2(8) */));
>> > + return nilfs_palloc_groups_per_desc_block(inode) << 32;
>> > }
>> >
>
> I think the real reason of problem is in using constants (BITS_PER_LONG
> for the first case and 32 for the second one). But, anyway, it makes
> sense to operate by volume size in this calculation. Because namely
> volume size is the real limitation for calculation of maximum available
> groups count.
>
> What do you think about using volume size in this calculation?
>
> With the best regards,
> Vyacheslav Dubeyko.
I disagree with using volume size because it makes resize logic much
harder especially for shrink logic. It requires reconstructing of
ifile and DAT meatadata file.
I just want to fix the calculation of the maximum number of groups so
that the number of descriptor blocks doesn't overflow both for 64-bit
and 32-bit architectures.
Regards,
Ryusuke Konishi
>> > This implies the maximum number of descriptor block is 1 ^ 32.
>> >
>> > Because the above diff changes the maximum number of groups, I think
>> > it should be inserted as a separate patch.
>>
>> Oops, sorry, this change can overflow in 32-bit architectures
>> because the type of return value is still unsigned long.
>> That calculation should be revised more carefully.
>>
>> 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
>
>
> --
> 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
--
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