lkml.org 
[lkml]   [2009]   [Dec]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [GIT PULL] Ceph distributed file system client for 2.6.33
On 2009-12-21, at 09:42, Sage Weil wrote:
> I think a compat/incompat flags mechanism during the
> initial handshake might be appropriate to make changes easier going
> forward.

Having compat/incompat flags for the network protocol, implemented
correctly, is really critical for long term maintenance. For Lustre,
we ended up using a single set of compatibility flags:
- client sends full set of features that it understands
- server replies with strict subset of flags that it also understands
(i.e. client_features & server_supported_features)
- if client doesn't have required support for a feature needed by the
server, server refuses to allow client to mount
- if server doesn't have feature required by client (e.g. understands
only
some older implementation no longer supported by client), client
refuses
to mount filesystem

We've been able to use this mechanism for the past 5 years to maintain
protocol interoperability for Lustre, though we don't promise
perpetual interoperability, only for about 3 years or so before users
have to upgrade to a newer release. That allows us to drop support
for ancient code instead of having to carry around baggage for every
possible combination of old features.

Using simple version numbers for the protocol means you have to carry
the baggage of every single previous version, and it isn't possible to
have "experimental" features that are out in the wild, but eventually
don't make sense to keep around forever.

Cheers, Andreas
--
Andreas Dilger
Sr. Staff Engineer, Lustre Group
Sun Microsystems of Canada, Inc.



\
 
 \ /
  Last update: 2009-12-21 19:07    [W:0.102 / U:0.088 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site