New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

osd: load_pgs: we need to handle the case where an upgrade from earlier versions which ignored non-existent pgs resurrects a pg with a prehistoric osdmap #4556

Merged
1 commit merged into from May 15, 2015

Conversation

Projects
None yet
3 participants
@xinxinsh
Member

xinxinsh commented May 6, 2015

@xinxinsh xinxinsh added this to the firefly milestone May 6, 2015

@xinxinsh xinxinsh self-assigned this May 6, 2015

OSD: handle the case where we resurrected an old, deleted pg
Prior to giant, we would skip pgs in load_pgs which were not present in
the current osdmap.  Those pgs would eventually refer to very old
osdmaps, which we no longer have causing the assertion failure in 11429
once the osd is finally upgraded to a version which does not skip the
pgs.  Instead, if we do not have the map for the pg epoch, complain to
the osd log and skip the pg.

Fixes: 11429
Signed-off-by: Samuel Just <sjust@redhat.com>
(cherry picked from commit fbfd50d)

Conflicts:
	src/osd/OSD.cc
        resolved by add a new comment line
@ghost

This comment has been minimized.

ghost commented May 12, 2015

$ commit=6bb24c4 ; picked_from=$(git show --no-patch --pretty=%b $commit  |  perl -ne 'print if(s/.*cherry picked from commit (\w+).*/$1/)') ; diff -u --ignore-matching-lines '^[^+-]' <(git show $picked_from) <(git show $commit)
--- /dev/fd/63  2015-05-12 23:44:17.785047014 +0200
+++ /dev/fd/62  2015-05-12 23:44:17.785047014 +0200
@@ -45,6 +50,7 @@
 +    } else {
 +      pg = _open_lock_pg(osdmap, pgid);
 +    }
-     // there can be no waiters here, so we don't call wake_pg_waiters
++    // there can be no waiters here, so we don't call wake_pg_waiters
  
      // read pg state, log
+     pg->read_state(store, bl);
@ghost

This comment has been minimized.

ghost commented May 12, 2015

@xinxinsh could you update the conflict resolution with the diff above ? It's simpler than explaining and less error prone :-)

@xinxinsh

This comment has been minimized.

Member

xinxinsh commented May 13, 2015

updated

2015-05-13 5:50 GMT+08:00 Loic Dachary notifications@github.com:

@xinxinsh https://github.com/xinxinsh could you update the conflict
resolution with the diff above ? It's simpler than explaining and less
error prone :-)


Reply to this email directly or view it on GitHub
#4556 (comment).

@ghost

This comment has been minimized.

ghost commented May 15, 2015

@athanatos does this backport look good to merge ? It passed a run of the firefly rados suite ( see http://tracker.ceph.com/issues/11090#rados for details ) including 11429.yaml at ceph/ceph-qa-suite#435

ghost pushed a commit that referenced this pull request May 15, 2015

Loic Dachary
Merge pull request #4556 from xinxinsh/wip-11429-firefly
OSD::load_pgs: we need to handle the case where an upgrade from earlier versions which ignored non-existent pgs resurrects a pg with a prehistoric osdmap

Reviewed-by: Samuel Just <sjust@redhat.com>

@ghost ghost merged commit f273792 into ceph:firefly May 15, 2015

@ghost ghost changed the title from OSD::load_pgs: we need to handle the case where an upgrade from earlier versions which ignored non-existent pgs resurrects a pg with a prehistoric osdmap to osd: load_pgs: we need to handle the case where an upgrade from earlier versions which ignored non-existent pgs resurrects a pg with a prehistoric osdmap Jul 14, 2015

This issue was closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment