rgw: separate civetweb log from rgw log

The civetweb log now is independent from the rgw log.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
rgw: use a separate callback for civetweb access log

Access log is separate from the regular civetweb logging. Also, changed
the log level for the regular logging as it's used mostly for error
messages.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
PG: make the reservation sets more descriptively named

These sets won't precisely be the backfill_targets or actingbackfill
shortly.

%s/sorted_backfill_set/remote_shards_to_reserve_backfill/g
%s/acting_osd_it/remote_recovery_reservation_it/g
%s/sorted_actingbackfill_set/remote_shards_to_reserve_recovery/g

Signed-off-by: Samuel Just <sam.just@inktank.com>
PG: recover from each osd at most once

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG::start_flush: remove superfluous loop

Signed-off-by: Samuel Just <sam.just@inktank.com>
ReplicatedPG:start_flush send a second delete

Suppose we start with the following in the cache pool:

30:[29,21,20,15,10,4]:[22(21), 15(15,10), 4(4)]+head

The object doesn't exist at 29 or 20.

First, we flush 4 leaving the backing pool with:

3:[]+head

Then, we begin to flush 15 with a delete with snapc 4:[4] leaving the
backing pool with:

4:[4]:[4(4)]

Then, we finish flushing 15 with snapc 9:[4] with leaving the backing
pool with:

9:[4]:[4(4)]+head

Next, snaps 10 and 15 are removed causing clone 10 to be removed leaving
the cache with:

30:[29,21,20,4]:[22(21),4(4)]+head

We next begin to flush 22 by sending a delete with snapc 4(4) since
prev_snapc is 4 <---------- here is the bug

The backing pool ignores this request since 4 < 9 (ORDERSNAP) leaving it
with:

9:[4]:[4(4)]

Then, we complete flushing 22 with snapc 19:[4] leaving the backing pool
with:

19:[4]:[4(4)]+head

Then, we begin to flush head by deleting with snapc 22:[21,20,4] leaving
the backing pool with:

22[21,20,4]:[22(21,20), 4(4)]

Finally, we flush head leaving the backing pool with:

30:[29,21,20,4]:[22(21*,20*),4(4)]+head

When we go to flush clone 22, all we know is that 22 is dirty, has snaps
[21], and 4 is clean. As part of flushing 22, we need to do two things:
1) Ensure that the current head is cloned as cloneid 4 with snaps [4] by
sending a delete at snapc 4:[4].
2) Flush the data at snap sequence < 21 by sending a copyfrom with snapc
20:[20,4].

Unfortunately, it is possible that 1, 1&2, or 1 and part of the flush
process for some other now non-existent clone have already been
performed.  Because of that, between 1) and 2), we need to send
a second delete ensuring that the object does not exist at 20.

Fixes: #9054
Backport: firefly
Signed-off-by: Samuel Just <sam.just@inktank.com>
OSD::session_notify_pg_create: requeue at the start of the queue

Introduced: 2120f4bb6c5ba0f066d4541a51ce1d43c8ab6881
Fixes: #9205
Signed-off-by: Samuel Just <sam.just@inktank.com>
PG: mark_log_for_rewrite on resurrection

Fixes: #8777
Backport: firefly
Signed-off-by: Samuel Just <sam.just@inktank.com>
rgw: clear bufferlist if write_data() successful

Fixes: #9201
Backport: firefly

We sometimes need to call RGWPutObjProcessor::handle_data() again,
so that we send the pending data. However, we failed to clear the buffer
that was already sent, thus it was resent. This triggers when using non
default pool alignments.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
rgw: convert header field underscores into dashes

Fixes: 9206
Backport: firefly

Certain web servers filter out underscores in the header field name.
Convert them into dashes.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
civetweb: update submodule

Fixes: #9208

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
civetweb: update submodule

Add access log api

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
PG::can_discard_op: do discard old subopreplies

Otherwise, a sub_op_reply from a previous interval can stick around
until we either one day go active again and get rid of it or delete the
pg which is holding it on its waiting_for_active list.  While it sticks
around futily waiting for the pg to once more go active, it will cause
harmless slow request warnings.

Fixes: #9259
Backport: firefly
Signed-off-by: Samuel Just <sam.just@inktank.com>
Merge pull request #2310 from ceph/wip-9148

Wip 9148

Reviewed-by: Sage Weil <sage@redhat.com>
Merge pull request #2345 from athanatos/wip-9259

PG::can_discard_op: do discard old subopreplies

Reviewed-by: Sage Weil <sage@redhat.com>
Merge pull request #2346 from athanatos/wip-8777

PG: mark_log_for_rewrite on resurrection

Reviewed-by: Sage Weil <sage@redhat.com>
Merge pull request #2347 from athanatos/wip-9205

OSD::session_notify_pg_create: requeue at the start of the queue

Reviewed-by: Sage Weil <sage@redhat.com>
rgw: don't try to authenticate a CORS preflight request

Fixes: #8718
Backport: firefly

CORS preflight requests don't need to be authenticated. Treat them as
coming from anonymous user.

Reported-by: Robert Hubbard <bobby.hubbard@garmin.com>
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
Merge pull request #2349 from athanatos/wip-9240

Wip 9240

Reviewed-by: Sage Weil <sage@redhat.com>
Merge pull request #2348 from athanatos/wip-9054

Wip 9054

Reviewed-by: Sage Weil <sage@redhat.com>