summaryrefslogtreecommitdiffstats
path: root/doc/changelog/v0.61.8.txt
blob: ef01d4551a9fc310ed04997e4a6c10103d102dad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
commit d783e33b672ec324eb48d588f956da0c51ff5dac
Author: Gary Lowell <gary.lowell@inktank.com>
Date:   Sun Aug 18 23:54:49 2013 -0700

    v0.61.8

commit 21a6e2479133a3debb9ab9057ff9fae70c9eede9
Author: Samuel Just <sam.just@inktank.com>
Date:   Thu Aug 8 15:12:46 2013 -0700

    RadosClient: shutdown monclient after dropping lock

    Otherwise, the monclient shutdown may deadlock waiting
    on a context trying to take the RadosClient lock.

    Fixes: #5897
    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 0aacd10e2557c55021b5be72ddf39b9cea916be4)

commit 64bef4ae4bab28b0b82a1481381b0c68a22fe1a4
Author: Sage Weil <sage@inktank.com>
Date:   Sat Aug 17 09:05:32 2013 -0700

    mon/OSDMonitor: make 'osd pool mksnap ...' not expose uncommitted state

    [This is a backport of d1501938f5d07c067d908501fc5cfe3c857d7281]

    We were returning success without waiting if the pending pool state had
    the snap.

    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>

commit 411871f6bcc9a4b81140c2e98d13dc123860f6f7
Author: Sage Weil <sage@inktank.com>
Date:   Fri Aug 16 10:52:02 2013 -0700

    mon/OSDMonitor: make 'osd pool rmsnap ...' not racy/crashy

    NOTE: This is a manual backport of d90683fdeda15b726dcf0a7cab7006c31e99f14.
    Due to all kinds of collateral changes in the mon the original patch
    doesn't cleanly apply.

    Ensure that the snap does in fact exist before we try to remove it.  This
    avoids a crash where a we get two dup rmsnap requests (due to thrashing, or
    a reconnect, or something), the committed (p) value does have the snap, but
    the uncommitted (pp) does not.  This fails the old test such that we try
    to remove it from pp again, and assert.

    Restructure the flow so that it is easier to distinguish the committed
    short return from the uncommitted return (which must still wait for the
    commit).

             0> 2013-07-16 14:21:27.189060 7fdf301e9700 -1 osd/osd_types.cc: In function 'void pg_pool_t::remove_snap(snapid_t)' thread 7fdf301e9700 time 2013-07-16 14:21:27.187095
        osd/osd_types.cc: 662: FAILED assert(snaps.count(s))

         ceph version 0.66-602-gcd39d8a (cd39d8a6727d81b889869e98f5869e4227b50720)
         1: (pg_pool_t::remove_snap(snapid_t)+0x6d) [0x7ad6dd]
         2: (OSDMonitor::prepare_command(MMonCommand*)+0x6407) [0x5c1517]
         3: (OSDMonitor::prepare_update(PaxosServiceMessage*)+0x1fb) [0x5c41ab]
         4: (PaxosService::dispatch(PaxosServiceMessage*)+0x937) [0x598c87]
         5: (Monitor::handle_command(MMonCommand*)+0xe56) [0x56ec36]
         6: (Monitor::_ms_dispatch(Message*)+0xd1d) [0x5719ad]
         7: (Monitor::handle_forward(MForward*)+0x821) [0x572831]
         8: (Monitor::_ms_dispatch(Message*)+0xe44) [0x571ad4]
         9: (Monitor::ms_dispatch(Message*)+0x32) [0x588c52]
         10: (DispatchQueue::entry()+0x549) [0x7cf1d9]
         11: (DispatchQueue::DispatchThread::entry()+0xd) [0x7060fd]
         12: (()+0x7e9a) [0x7fdf35165e9a]
         13: (clone()+0x6d) [0x7fdf334fcccd]
         NOTE: a copy of the executable, or `objdump -rdS <executable>` is needed to interpret this.

    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>

commit 50698d1862065c8d74338fd08c7e5af66e222490
Author: Sage Weil <sage@inktank.com>
Date:   Tue Aug 13 12:52:41 2013 -0700

    librados: fix async aio completion wakeup

    For aio flush, we register a wait on the most recent write.  The write
    completion code, however, was *only* waking the waiter if they were waiting
    on that write, without regard to previous writes (completed or not).
    For example, we might have 6 and 7 outstanding and wait on 7.  If they
    finish in order all is well, but if 7 finishes first we do the flush
    completion early.  Similarly, if we

     - start 6
     - start 7
     - finish 7
     - flush; wait on 7
     - finish 6

    we can hang forever.

    Fix by doing any completions that are prior to the oldest pending write in
    the aio write completion handler.

    Refs: #5919

    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
    Tested-by: Oliver Francke <Oliver.Francke@filoo.de>
    (cherry picked from commit 16ed0b9af8bc08c7dabead1c1a7c1a22b1fb02fb)

commit ef731dfc84a71d3c3262f5cff9a9d33a60255485
Author: Josh Durgin <josh.durgin@inktank.com>
Date:   Mon Aug 12 19:17:09 2013 -0700

    librados: fix locking for AioCompletionImpl refcounting

    Add an already-locked helper so that C_Aio{Safe,Complete} can
    increment the reference count when their caller holds the
    lock. C_AioCompleteAndSafe's caller is not holding the lock, so call
    regular get() to ensure no racing updates can occur.

    This eliminates all direct manipulations of AioCompletionImpl->ref,
    and makes the necessary locking clear.

    The only place C_AioCompleteAndSafe is used is in handling
    aio_flush_async(). This could cause a missing completion.

    Refs: #5919
    Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    Tested-by: Oliver Francke <Oliver.Francke@filoo.de>
    (cherry picked from commit 7a52e2ff5025754f3040eff3fc52d4893cafc389)

commit 32631685199f2e47c2ba0ed27d16eff80fa6917d
Author: Sage Weil <sage@inktank.com>
Date:   Fri Jul 12 14:27:04 2013 -0700

    mon/Paxos: bootstrap peon too if monmap updates

    If we get a monmap update, the leader bootstraps.  Peons should do the
    same.

    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Greg Farnum <greg@inktank.com>
    (cherry picked from commit efe5b67bb700ef6218d9579abf43cc9ecf25ef52)

commit 1ea6b56170fc9e223e7c30635db02fa2ad8f4b4e
Author: Sage Weil <sage@inktank.com>
Date:   Tue Jun 25 13:16:45 2013 -0700

    osd: fix race when queuing recovery ops

    Previously we would sample how many ops to start under the lock, drop it,
    and start that many.  This is racy because multiple threads can jump in
    and we start too many ops.  Instead, claim as many slots as we can and
    release them back later if we do not end up using them.

    Take care to re-wake the work-queue since we are releasing more resources
    for wq use.

    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Samuel Just <sam.just@inktank.com>
    (cherry picked from commit 01d3e094823d716be0b39e15323c2506c6f0cc3b)

commit 4433f9ad8b338b6a55e205602434b307287bfaa3
Author: Sage Weil <sage@inktank.com>
Date:   Mon Jun 24 16:37:29 2013 -0700

    osd: tolerate racing threads starting recovery ops

    We sample the (max - active) recovery ops to know how many to start, but
    do not hold the lock over the full duration, such that it is possible to
    start too many ops.  This isn't problematic except that our condition
    checks for being == max but not beyond it, and we will continue to start
    recovery ops when we shouldn't.  Fix this by adjusting the conditional
    to be <=.

    Reported-by: Stefan Priebe <s.priebe@profihost.ag>
    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: David Zafman <david.zafman@inktank.com>
    (cherry picked from commit 3791a1e55828ba541f9d3e8e3df0da8e79c375f9)

commit 0964d53ef3e8e386e0a1635d2240aefad7b8e2c1
Author: Sage Weil <sage@inktank.com>
Date:   Fri Aug 9 18:02:32 2013 -0700

    ceph-disk: fix mount options passed to move_mount

    Commit 6cbe0f021f62b3ebd5f68fcc01a12fde6f08cff5 added a mount_options but
    in certain cases it may be blank.  Fill in with the defaults, just as we
    do in mount().

    Backport: cuttlefish
    Reviewed-by: Dan Mick <dan.mick@inktank.com>
    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit cb50b5a7f1ab2d4e7fdad623a0e7769000755a70)

commit d6be5ed2601b8cf45570afe7ca75ce5aba3f8b4f
Author: Yehuda Sadeh <yehuda@inktank.com>
Date:   Mon Aug 12 10:05:44 2013 -0700

    rgw: fix multi delete

    Fixes: #5931
    Backport: bobtail, cuttlefish

    Fix a bad check, where we compare the wrong field. Instead of
    comparing the ret code to 0, we compare the string value to 0
    which generates implicit casting, hence the crash.

    Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
    Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
    (cherry picked from commit f9f1c48ad799da2b4be0077bf9d61ae116da33d7)

    Conflicts:
	src/rgw/rgw_rest_s3.cc

commit ecaa46a13837305b9382ab319d43890729c54f1e
Author: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
Date:   Tue Jul 23 21:56:09 2013 +0200

    ceph.spec.in: obsolete ceph-libs only on the affected distro

    The ceph-libs package existed only on Redhat based distro,
    there was e.g. never such a package on SUSE. Therefore: make
    sure the 'Obsoletes' is only set on these affected distros.

    Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>

commit 81aa68c309a6d4eaecc54f8d735efde8843fed8c
Author: Gary Lowell <glowell@inktank.com>
Date:   Wed Jul 3 11:28:28 2013 -0700

    ceph.spec.in:  Obsolete ceph-libs

    Signed-off-by: Gary Lowell  <gary.lowell@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>

commit 2a34df68bb02d14f6a25bd13dff600a4d629ad05
Author: Joao Eduardo Luis <joao.luis@inktank.com>
Date:   Fri Aug 9 14:48:15 2013 -0700

    common: pick_addresses: fix bug with observer class that triggered #5205

    The Observer class we defined to observe conf changes and thus avoid
    triggering #5205 (as fixed by eb86eebe1ba42f04b46f7c3e3419b83eb6fe7f9a),
    was returning always the same const static array, which would lead us to
    always populate the observer's list with an observer for 'public_addr'.

    This would of course become a problem when trying to obtain the observer
    for 'cluster_add' during md_config_t::set_val() -- thus triggering the
    same assert as initially reported on #5205.

    Backport: cuttlefish
    Fixes: #5205

    Signed-off-by: Joao Eduardo Luis <jecluis@gmail.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 7ed6de9dd7aed59f3c5dd93e012cf080bcc36d8a)

commit 1243c9749ed27850c5d041023780efcdf7b31a68
Author: Alfredo Deza <alfredo@deza.pe>
Date:   Thu Aug 8 16:09:26 2013 -0700

    make sure we are using the mount options

    Signed-off-by: Alfredo Deza <alfredo@deza.pe>
    (cherry picked from commit 34831d0989d4bcec4920068b6ee09ab6b3234c91)

commit a9a370be2d8155b696ebe2866febb0571da5740f
Author: Samuel Just <sam.just@inktank.com>
Date:   Fri Aug 2 11:58:52 2013 -0700

    PG: set !flushed in Reset()

    Otherwise, we might serve a pull before we start_flush in the
    ReplicaActive constructor.

    Fixes: #5799
    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 9e7d6d547e0e8a6db6ba611882afa9bf74ea0195)

commit 65bfa4941f983c988837cd010f731966ff53fd19
Author: Sage Weil <sage@inktank.com>
Date:   Fri Jul 26 14:02:07 2013 -0700

    osd: make open classes on start optional

    This is cuttlefish; default to the old behavior!

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 6f996223fb34650771772b88355046746f238cf2)

commit e8253ae5451b1c8e3d7d50199b8db7b2d4c66486
Author: Sage Weil <sage@inktank.com>
Date:   Fri Jul 26 13:58:46 2013 -0700

    osd: load all classes on startup

    This avoid creating a wide window between when ceph-osd is started and
    when a request arrives needing a class and it is loaded.  In particular,
    upgrading the packages in that window may cause linkage errors (if the
    class API has changed, for example).

    Fixes: #5752
    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
    (cherry picked from commit c24e652d8c5e693498814ebe38c6adbec079ea36)

    Conflicts:
	src/osd/ClassHandler.cc

commit 7a1d6d3e727fd8b6947c658e171bf7ec31cd7966
Author: Sage Weil <sage@inktank.com>
Date:   Sun Jul 28 15:42:08 2013 -0700

    ceph_test_rados: print version banner on startup

    It is helpful when looking at qa run logs to see what version of the
    tester is running.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 12c1f1157c7b9513a3d9f716a8ec62fce00d28f5)

commit 86769f05ccc54bfec403bb9ea9a3a951bbcea301
Author: Sage Weil <sage@inktank.com>
Date:   Thu Jun 13 22:08:36 2013 -0700

    ceph_test_rados: add --pool <name> arg

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit bcfbd0a3ffae6947464d930f636c8b35d1331e9d)

commit b70a9abc5e3ae01204256f414bd7e69d083ed7c6
Author: Sage Weil <sage@inktank.com>
Date:   Fri Jul 26 14:07:02 2013 -0700

    upstart: stop ceph-create-keys when the monitor stops

    This avoids lingering ceph-create-keys tasks.

    Backport: cuttlefish
    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit a90a2b42db8de134b8ea5d81cab7825fb9ec50b4)

commit 5af48dc7c7e3a0d7f7bc22af58831d58d165e657
Author: Samuel Just <sam.just@inktank.com>
Date:   Fri Jul 26 13:42:27 2013 -0700

    FileStore: fix fd leak in _check_global_replay_guard

    Bug introduced in f3f92fe21061e21c8b259df5ef283a61782a44db.

    Fixes: #5766
    Backport: cuttlefish
    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit c562b72e703f671127d0ea2173f6a6907c825cd1)

commit 17aa2d6d16c77028bae1d2a77903cdfd81efa096
Author: Sage Weil <sage@inktank.com>
Date:   Thu Jul 25 11:10:53 2013 -0700

    mon/Paxos: share uncommitted value when leader is/was behind

    If the leader has and older lc than we do, and we are sharing states to
    bring them up to date, we still want to also share our uncommitted value.
    This particular case was broken by b26b7f6e, which was only contemplating
    the case where the leader was ahead of us or at the same point as us, but
    not the case where the leader was behind.  Note that the call to
    share_state() a few lines up will bring them fully up to date, so
    after they receive and store_state() for this message they will be at the
    same lc as we are.

    Fixes: #5750
    Backport: cuttlefish
    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Greg Farnum <greg@inktank.com>
    Reviewed-by: Joao Eduardo Luis <joao.luis@inktank.com>
    (cherry picked from commit 05b6c7e8645081f405c616735238ae89602d3cc6)

commit 09a664e25391dbad9a479bae33904d28231f429d
Merge: 8f010af b0535fc
Author: Sage Weil <sage@inktank.com>
Date:   Thu Jul 25 15:21:31 2013 -0700

    Merge remote-tracking branch 'gh/cuttlefish-next' into cuttlefish

commit b0535fcf854c5042d6b5ff481aabca08026d8f7f
Author: Samuel Just <sam.just@inktank.com>
Date:   Tue Jul 23 18:04:40 2013 -0700

    HashIndex: reset attr upon split or merge completion

    A replay of an in progress merge or split might make
    our counts unreliable.

    Fixes: #5723
    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 0dc3efdd885377a07987d868af5bb7a38245c90b)

commit 8f73302b4e637ca8b85d68ea7503279faecb57d8
Author: Samuel Just <sam.just@inktank.com>
Date:   Tue Jul 23 17:34:25 2013 -0700

    test/filestore/store_test: add test for 5723

    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 37a4c4af54879512429bb114285bcb4c7c3488d5)

    Conflicts:
	src/os/LFNIndex.cc
	src/test/filestore/store_test.cc

commit 6a7b9e5f0c1d2344209c69ab9992f94221a16468
Author: Samuel Just <sam.just@inktank.com>
Date:   Tue Jul 23 13:51:26 2013 -0700

    FileStore::_collection_rename: fix global replay guard

    If the replay is being replayed, we might have already
    performed the rename, skip it.  Also, we must set the
    collection replay guard only after we have done the
    rename.

    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 870c474c5348831fcb13797d164f49682918fb30)

commit 7d98651775265896c22bacfc4afcfccbb0128470
Author: Samuel Just <sam.just@inktank.com>
Date:   Mon Jul 22 13:46:10 2013 -0700

    PGLog::rewind_divergent_log: unindex only works from tail, index() instead

    Fixes: #5714
    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 6957dbc75cc2577652b542aa3eae69f03060cb63)

    The original patch covered the same code in PGLog.cc.

    Conflicts:

	src/osd/PGLog.cc
	src/osd/PG.cc

commit 611a06ae6c9cba468db206dfc82ec883c7a394af
Author: Sage Weil <sage@inktank.com>
Date:   Thu Jul 18 09:55:43 2013 -0700

    msg/Pipe: do not hold pipe_lock for verify_authorizer()

    We shouldn't hold the pipe_lock while doing the ms_verify_authorizer
    upcalls.

    Fix by unlocking a bit earlier, and verifying our state is still correct
    in the failure path.

    This regression was introduced by ecab4bb9513385bd765cca23e4e2fadb7ac4bac2.

    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Greg Farnum <greg@inktank.com>
    (cherry picked from commit 723d691f7a1f53888618dfc311868d1988f61f56)

    Conflicts:

	src/msg/Pipe.cc

commit 45bda482fa8a23f4b80d115e29d6f04cb5e226d6
Author: Sage Weil <sage@inktank.com>
Date:   Tue Jul 16 14:17:05 2013 -0700

    msg/Pipe: a bit of additional debug output

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 16568d9e1fb8ac0c06ebaa1e1dc1d6a432a5e4d4)

commit 806eab59ad1a32aedb662c51de3b4a1d61fcbb62
Author: Sage Weil <sage@inktank.com>
Date:   Tue Jul 16 13:13:46 2013 -0700

    msg/Pipe: hold pipe_lock during important parts of accept()

    Previously we did not bother with locking for accept() because we were
    not visible to any other threads.  However, we need to close accepting
    Pipes from mark_down_all(), which means we need to handle interference.

    Fix up the locking so that we hold pipe_lock when looking at Pipe state
    and verify that we are still in the ACCEPTING state any time we retake
    the lock.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit ecab4bb9513385bd765cca23e4e2fadb7ac4bac2)

commit ce6a0b74459996f91a0511a4a7147179bcd47876
Author: Greg Farnum <greg@inktank.com>
Date:   Wed Jul 17 15:23:12 2013 -0700

    msgr: fix a typo/goto-cross from dd4addef2d

    We didn't build or review carefully enough!

    Signed-off-by: Greg Farnum <greg@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 1a84411209b13084b3edb87897d5d678937e3299)

commit 1ed51ad535612d5c444a3cc35a331f5e6a68ce30
Author: Sage Weil <sage@inktank.com>
Date:   Mon Jul 15 17:16:23 2013 -0700

    msgr: close accepting_pipes from mark_down_all()

    We need to catch these pipes too, particularly when doing a rebind(),
    to avoid them leaking through.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 687fe888b32ac9d41595348dfc82111c8dbf2fcb)

commit 2f696f17a413015a3038d5aa76d18fe94f503f03
Author: Sage Weil <sage@inktank.com>
Date:   Mon Jul 15 17:14:25 2013 -0700

    msgr: maintain list of accepting pipes

    New pipes exist in a sort of limbo before we know who the peer is and
    add them to rank_pipe.  Keep a list of them in accepting_pipes for that
    period.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit dd4addef2d5b457cc9a58782fe42af6b13c68b81)

commit 540a6f49d402c1990f0e0fe9f8897dd664e79501
Author: Sage Weil <sage@inktank.com>
Date:   Tue Jul 16 16:25:28 2013 -0700

    msgr: adjust nonce on rebind()

    We can have a situation where:

     - we have a pipe to a peer
     - pipe goes to standby (on peer)
     - we rebind to a new port
     - ....
     - we rebind again to the same old port
     - we connect to peer

    and get reattached to the ancient pipe from two instances back.  Avoid that
    by picking a new nonce each time we rebind.

    Add 1,000,000 each time so that the port is still legible in the printed
    output.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 994e2bf224ab7b7d5b832485ee14de05354d2ddf)

    Conflicts:

	src/msg/Accepter.cc

commit f938a5bf604885ffba65a9b86e19258ca254e58c
Author: Sage Weil <sage@inktank.com>
Date:   Mon Jul 15 17:10:23 2013 -0700

    msgr: mark_down_all() after, not before, rebind

    If we are shutting down all old connections and binding to new ports,
    we want to avoid a sequence like:

     - close all prevoius connections
     - new connection comes in on old port
     - rebind to new ports
     -> connection from old port leaks through

    As a first step, close all connections after we shut down the old
    accepter and before we start the new one.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 07a0860a1899c7353bb506e33de72fdd22b857dd)

    Conflicts:

	src/msg/SimpleMessenger.cc

commit 07b9ebf4212d53606ce332ff927a2ff68ed26978
Author: Sage Weil <sage@inktank.com>
Date:   Tue Jul 16 13:01:18 2013 -0700

    msg/Pipe: unlock msgr->lock earlier in accept()

    Small cleanup.  Nothing needs msgr->lock for the previously larger
    window.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit ad548e72fd94b4a16717abd3b3f1d1be4a3476cf)

commit ae85a0a101d624363fe761c06ecd52d3d38ba4a2
Author: Sage Weil <sage@inktank.com>
Date:   Tue Jul 16 10:09:02 2013 -0700

    msg/Pipe: avoid creating empty out_q entry

    We need to maintain the invariant that all sub queues in out_q are never
    empty.  Fix discard_requeued_up_to() to avoid creating an entry unless we
    know it is already present.

    This bug leads to an incorrect reconnect attempt when

     - we accept a pipe (lossless peer)
     - they send some stuff, maybe
     - fault
     - we initiate reconnect, even tho we have nothing queued

    In particular, we shouldn't reconnect because we aren't checking for
    resets, and the fact that our out_seq is 0 while the peer's might be
    something else entirely will trigger asserts later.

    This fixes at least one source of #5626, and possibly #5517.

    Backport: cuttlefish
    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 9f1c27261811733f40acf759a72958c3689c8516)

commit 21e27262edc6f5f090ea8915517ee867e30b9066
Author: Sage Weil <sage@inktank.com>
Date:   Mon Jul 15 14:47:05 2013 -0700

    msg/Pipe: assert lock is held in various helpers

    These all require that we hold pipe_lock.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 579d858aabbe5df88543d096ef4dbddcfc023cca)

commit 25f4786ac41869b3f135bd072000634765bb8919
Author: Sage Weil <sage@inktank.com>
Date:   Sun Jul 14 08:55:52 2013 -0700

    msg/Pipe: be a bit more explicit about encoding outgoing messages

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 4282971d47b90484e681ff1a71ae29569dbd1d32)

commit 48105a32605aa59b6970eb89fce4ecc4201e8d04
Author: Sage Weil <sage@inktank.com>
Date:   Fri Jul 12 16:21:24 2013 -0700

    msg/Pipe: fix RECONNECT_SEQ behavior

    Calling handle_ack() here has no effect because we have already
    spliced sent messages back into our out queue.  Instead, pull them out
    of there and discard.  Add a few assertions along the way.

    Signed-off-by: Sage Weil <sage@inktank.com>
    Reviewed-by: Greg Farnum <greg@inktank.com>
    (cherry picked from commit 495ee108dbb39d63e44cd3d4938a6ec7d11b12e3)

commit 1eab069017ce6b71e4bc2bb9679dbe31b50ae938
Author: Sage Weil <sage@inktank.com>
Date:   Mon Jun 17 13:32:38 2013 -0700

    msgr: reaper: make sure pipe has been cleared (under pipe_lock)

    All paths to pipe shutdown should have cleared the con->pipe reference
    already.  Assert as much.

    Also, do it under pipe_lock!

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 9586305a2317c7d6bbf31c9cf5b67dc93ccab50d)

commit db06a5092bc45d0479fe492a5d592713a7c53494
Author: Sage Weil <sage@inktank.com>
Date:   Mon Jun 17 14:14:02 2013 -0700

    msg/Pipe: goto fail_unlocked on early failures in accept()

    Instead of duplicating an incomplete cleanup sequence (that does not
    clear_pipe()), goto fail_unlocked and do the cleanup in a generic way.
    s/rc/r/ while we are here.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit ec612a5bda119cea52bbac9b2a49ecf1e83b08e5)

commit 8612e50fd70bfceebd6c291e6cab10d9dfd39e8c
Author: Sage Weil <sage@inktank.com>
Date:   Mon Jun 17 13:32:07 2013 -0700

    msgr: clear con->pipe inside pipe_lock on mark_down

    We need to do this under protection of the pipe_lock.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit afafb87e8402242d3897069f4b94ba46ffe0c413)

commit 8aafe131acadc22cb069f3d98bba6922ab09c749
Author: Sage Weil <sage@inktank.com>
Date:   Mon Jun 17 12:47:11 2013 -0700

    msgr: clear_pipe inside pipe_lock on mark_down_all

    Observed a segfault in rebind -> mark_down_all -> clear_pipe -> put that
    may have been due to a racing thread clearing the connection_state pointer.
    Do the clear_pipe() call under the protection of pipe_lock, as we do in
    all other contexts.

    Signed-off-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 5fc1dabfb3b2cbffdee3214d24d7769d6e440e45)

    Conflicts:

	src/msg/SimpleMessenger.cc

commit 2f7979d1262e9d4899be76963a1620db46b334e8
Author: Samuel Just <sam.just@inktank.com>
Date:   Thu Jul 18 19:26:02 2013 -0700

    ReplicatedPG: track temp collection contents, clear during on_change

    We also assert in on_flushed() that the temp collection is actually
    empty.

    Fixes: #5670
    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 47516d9c4b7f023f3a16e166749fa7b1c7b3b24c)

    Conflicts:

	src/osd/ReplicatedPG.cc

commit c7e2945a42541f966017180684dd969389eef3ac
Author: Samuel Just <sam.just@inktank.com>
Date:   Thu Jul 18 19:25:14 2013 -0700

    PG, ReplicatedPG: pass a transaction down to ReplicatedPG::on_change

    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 9f56a7b8bfcb63cb4fbbc0c9b8ff01de9e518c57)

commit 7ffc65fc4d7d842954cf791c016fd2711f644a9c
Author: Samuel Just <sam.just@inktank.com>
Date:   Wed Jul 17 15:04:10 2013 -0700

    PG: start flush on primary only after we process the master log

    Once we start serving reads, stray objects must have already
    been removed.  Therefore, we have to flush all operations
    up to the transaction writing out the authoritative log.
    On replicas, we flush in Stray() if we will not eventually
    be activated and in ReplicaActive if we are in the acting
    set.  This way a replica won't serve a replica read until
    the store is consistent.

    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit b41f1ba48563d1d3fd17c2f62d10103b5d63f305)

commit 850da0890da5df7e670df9268afe420d0c906c38
Author: Samuel Just <sam.just@inktank.com>
Date:   Wed Jul 17 12:51:19 2013 -0700

    ReplicatedPG: replace clean_up_local with a debug check

    Stray objects should have been cleaned up in the merge_log
    transactions.  Only on the primary have those operations
    necessarily been flushed at activate().

    Fixes: 5084
    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 278c7b59228f614addf830cb0afff4988c9bc8cb)

commit 95b1b5da439f1b7e2fb1886aaeec2d61532183f0
Author: Samuel Just <sam.just@inktank.com>
Date:   Thu Jul 18 10:12:17 2013 -0700

    FileStore: add global replay guard for split, collection_rename

    In the event of a split or collection rename, we need to ensure that
    we don't replay any operations on objects within those collections
    prior to that point.  Thus, we mark a global replay guard on the
    collection after doing a syncfs and make sure to check that in
    _check_replay_guard() for all object operations.

    Fixes: #5154
    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit f3f92fe21061e21c8b259df5ef283a61782a44db)

    Conflicts:

	src/os/FileStore.cc

commit d92a43d8ff0123b234e47a94c2ce73fcaae7f625
Author: Samuel Just <sam.just@inktank.com>
Date:   Mon Jul 15 13:44:20 2013 -0700

    OSD: add config option for peering_wq batch size

    Large peering_wq batch sizes may excessively delay
    peering messages resulting in unreasonably long
    peering.  This may speed up peering.

    Backport: cuttlefish
    Related: #5084
    Signed-off-by: Samuel Just <sam.just@inktank.com>
    Reviewed-by: Sage Weil <sage@inktank.com>
    (cherry picked from commit 39e5a2a406b77fa82e9a78c267b679d49927e3c3)