On Mon, 3 Feb 2014, Christoph Hellwig wrote:
On Fri, Jan 31, 2014 at 03:20:17AM -0500, Mikulas Patocka wrote:
quoted
So if you think you can support 16TiB devices and leave pgoff_t 32-bit,
send a patch that does it.
Until you make it, you should apply the patch that I sent, that prevents
kernel lockups or data corruption when the user uses 16TiB device on
32-bit kernel.
Exactly. I had actually looked into support for > 16TiB devices for
a NAS use case a while ago, but when explaining the effort involves
the idea was dropped quickly. The Linux block device is too deeply
tied to the pagecache to make it easily feasible.
The memory management routines use pgoff_t, so we could define pgoff_t to
be 64-bit type. But there is lib/radix_tree.c that uses unsigned long as
an index into the radix tree - and pgoff_t is cast to unsigned long when
calling the radix_tree routines - so we'd need to change lib/radix_tree to
use pgoff_t.
Then, there may be other places where pgoff_t is cast to unsigned long and
they are not trivial to find (one could enable some extra compiler
warnings about truncating values when casting them, but I suppose, this
would trigger a lot of false positives). This needs some deep review by
people who designed the memory management code.
Mikulas
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>