[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: More GC fun.

finn@xxxxxxx.com said:
>  I dismissed the thoughts of c->next_ino should ever wrap in a real
> situation. I reasoned that the flash device itself would have broken
> long before such a wrap. I might have misjudged this issue of course. 

Sounds sensible to me.

We fall over after about 4 milliard inodes have been created. If you're 
_trying_ to trigger this, you'll create nodes of zero size, then delete 
them, repeatedly.

For each node and deletion, there are two jffs_raw_inodes on the flash for 
that inode, and also two mtime updates for the directory.

That's 4 * 60 == 240 bytes used per inum. To use 4 milliard inums, you're 
using 1e12 bytes on the flash.

Assuming that flash is capable of 1e5 erase cycles, that means that your
filesystem has to be 1e7 bytes (10MB) in size before it's even theoretically
possible to achieve inum wraparound.

I'm running it on a 20Mb filesystem - so it's theoretically possible - but 
in practice, it's extremely unlikely.

It's actually somewhat easier to achieve version wraparound within a given 
inode, but it's still fairly unlikely.