CEPH filesystem development
 help / color / mirror / Atom feed
From: GuangYang <yguang11@outlook.com>
To: Gregory Farnum <greg@gregs42.com>
Cc: "ceph-devel@vger.kernel.org" <ceph-devel@vger.kernel.org>
Subject: RE: Upgrade/rollback
Date: Fri, 13 Feb 2015 01:45:28 +0000	[thread overview]
Message-ID: <BLU175-W29B0DF73BEFDF61776114DDF230@phx.gbl> (raw)
In-Reply-To: <CAC6JEv9JAEw+JT5yrgiW_k74X4uatrTSttj1nMUPFRiQEbmeng@mail.gmail.com>

----------------------------------------
> Date: Thu, 12 Feb 2015 06:57:19 -0800
> Subject: Re: Upgrade/rollback
> From: greg@gregs42.com
> To: yguang11@outlook.com
> CC: ceph-devel@vger.kernel.org
>
> On Thu, Feb 12, 2015 at 12:48 AM, GuangYang <yguang11@outlook.com> wrote:
>> Thanks Sage and Greg for the response.
>>
>>> 2) having a separate switchover point (besides the code upgrade) which
>>> enables all the disk change bits and which doesn't allow you to roll
>>> back.
>> Let me give two examples which prevent us rollback from Giant to Firefly.
>>
>> Example #1:
>> In Giant, there is a new feature flag 'CEPH_FEATURE_ERASURE_CODE_PLUGINS_V2' added/persisted, and monitor would check the persisted list against the list released along with the software version upon starting, it refuse to start if the list mismatch. However, although the feature is added in Giant, it is not being used until we create a new pool with the profile, which is very unlikely to happen.
>> 1) is it possible to persist the new feature bit when the feature is being used (this looks like complicated to implement). 2) When loading the persisted bit, is it possible to check if it is actually used by someone?
>>
>> Example #2:
>> Patch [1] added a new k/v to the PG log which cannot be recognized by old version of binary (PGLog::read_log), as a result, it takes the newly added entry as a pg_log_entry.
>> Is it possible to recognize pg_log_entry with a concrete pattern and just ignore those that the binary cannot recognize?
>>
>>
>> For there two cases, we may be able to erase the newly added entries and then roll back (correct me if I am wrong here), but I think there might be more complicated cases which make the rollback impossible. And accept that risk for upgrading.
>
> For these two specific cases, maybe. But you're missing more
> fundamental things: often changes to data structures are about
> behavior changes that the daemon needs to understand in order to make
> any sense of the data. For instance, any upgrades to CRUSH need to be
> understood by everybody participating in the cluster. We could
> narrowly have the parsing code ignore anything it doesn't understand,
> but then when it does calculations about past_intervals or current
> mappings it would be wrong!
>
> Or in the example #2 you have, the extra data is a bug fix that
> prevents the OSD doing extra work. But what if it was actually about
> changing the shared PG state? In that case you might have OSDs with
> their PG in different states depending on how far they'd gotten when
> rolled back to the old code.
>
> It's just not a feasible problem, because while there are plenty of
> things that we could route around, we still face the inevitable
> collision point I described when we do add data of shared import. :(
That makes total sense. Thanks Greg!

> -Greg
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
 		 	   		  

      reply	other threads:[~2015-02-13  1:45 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-11 12:09 Upgrade/rollback GuangYang
2015-02-11 15:17 ` Upgrade/rollback Gregory Farnum
2015-02-11 17:26   ` Upgrade/rollback Sage Weil
2015-02-12  7:40     ` Upgrade/rollback Ric Wheeler
2015-02-12  8:48     ` Upgrade/rollback GuangYang
2015-02-12 14:57       ` Upgrade/rollback Gregory Farnum
2015-02-13  1:45         ` GuangYang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BLU175-W29B0DF73BEFDF61776114DDF230@phx.gbl \
    --to=yguang11@outlook.com \
    --cc=ceph-devel@vger.kernel.org \
    --cc=greg@gregs42.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox