[Imap-protocol] 2Gb size limit

Eduardo Luís eluis.linux at gmail.com
Wed May 5 13:00:34 PDT 2010


Ok Mark, thanks a lot for your explanation...
I have to switch to a mixed format....

Thank you,

Eduardo Luís



2010/5/5 Mark Crispin <mrc+uw at panda.com>:

> On Wed, 5 May 2010, Eduardo Luís wrote:

>>

>> No, it's not a 32bit OS feature.

>

> Actually, it is your OS.

>

> UW IMAP uses unsigned longs (it was largely written before off_t was

> universally defined) which would support at least 4GB.

>

> The problem is that off_t is defined on many systems as an int32, and the

> lseek() call takes an off_t.  This is the cause of the 2GB limit.

>

> On other systems, off_t is defined as an int64.  The limit should be 4GB,

> not 2GB, on those system.

>

> If you have a int32 off_t, then you need to do one of the following:

>

> On some systems, you must change everything to use lseek64() call and

> off64_t.

>

> On other systems, it is possible to fix lseek() and off_t by defining

> _FILE_OFFSET_BITS to 64.  That will make off_t be an int64.  If ulong on

> your system is a uint32, that should give you up to a 4GB limit; if ulong

> on your system is a uint64 then you win big.

>

>

> Personally, I think that it is completely, utterly, insane to have a flat

> mailbox file greater than 2GB; or for that matter much greater than 100MB.

> Flat file formats were never intended to scale to such sizes.

>

> You should use the mix format instead, which breaks the mailbox into

> multiple files that are either 1MB or the size of a single message,

> whichever is larger.

>

> Now, if you have a single message which is greater than 2GB (or 4GB), then

> you have other problems.

>

> -- Mark --

>

> http://panda.com/mrc

> Democracy is two wolves and a sheep deciding what to eat for lunch.

> Liberty is a well-armed sheep contesting the vote.




More information about the Imap-protocol mailing list