Skip to content
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

xinxinsh
Copy link

@xinxinsh xinxinsh commented May 6, 2015

@xinxinsh xinxinsh added this to the firefly milestone May 6, 2015
@xinxinsh xinxinsh self-assigned this May 6, 2015
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
Copy link

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
Copy link

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
Copy link
Author

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
Copy link

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
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 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 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 pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants