[Dovecot] Scalability plans: Abstract out filesystem and make it someone else's problem

Ed W lists at wildgooses.com
Mon Sep 28 21:21:01 EEST 2009


Timo Sirainen wrote:
> On Mon, 2009-09-28 at 18:35 +0100, Ed W wrote:
>   
>> I would have thought that your API will prefer to request message parts 
>> where it can (eg header, body, mime part), and just issue a read_bytes, 
>> where that's what the client is asking for otherwise.  This would allow 
>> the storage engine to optimise where it can and sadly for the dumb 
>> client we just stream bytes since that's all they asked for...
>>     
>
> In my mind this is more about what lib-storage API was supposed to
> abstract out, whereas my filesystem API would be used simply for binary
> data storage. The same FS API could be used to store both dbox files and
> index files.
>   

I guess in this case it would be interesting to hear the kind of use 
cases you imagine that the storage API will be used for in practice?  I 
think I might be kind of overthinking the problem?

Seems like it's a very thin shim between a real file system and dovecot 
and would be mainly useful for supporting filesystems with non posix 
protocols, eg someone wants to store their mail files on mogile or DAV, 
but it doesn't address anything lower or higher than blocks of data?

I can see how this would be useful in certain scenarios, but kind of 
interested to hear where you think it will go?

Seems like it would be useful for:

- implementing very specific optimisations for example for NFS
- optimisation for filesystems with unusual strengths/weaknesses, eg GFS 
or Gluster?
- non posix file system storage (but without trying to leverage 
particular features of that storage)

Actually, it mainly seems like a way for you to break out the access 
paths for NFS versus local storage when I write it down like that?

Ed W


More information about the dovecot mailing list