os/FileJournal: Update the journal header when closing journal

When closing journal, it should check must_write_header and update
journal header if must_write_header alreay set.
It can reduce the nosense journal-replay after restarting osd.

Signed-off-by: Ma Jianpeng <jianpeng.ma@intel.com>
Reviewed-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 5bf472aefb7360a1fe17601b42e551df120badfb)
os/FileJournal: signal aio_cond even if seq is 0

This can happen if we write a journal but no events.

Reported-by: Somnath Roy <somnath.roy@sandisk.com>
Reported-by: Ma, Jianpeng <jianpeng.ma@intel.com>
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 57778e2c577c1e1bbf9525232720a2994fa36abc)
os/FileJournal: Tune the judge logic for read_header.

When reading journal-header, it should firstly check the result of
pread and then do decoce operation.

Signed-off-by: Ma Jianpeng <jianpeng.ma@intel.com>
(cherry picked from commit c8e2b89cf6bc36a0ff29887b9e76cbbeceef9f8f)
os/FileJournal: Only using aio then alloc the related resources.

If define HAVE_LIBAIO, it alloc related resouces. But itt don't check whether
using aio mode. Only using aio it alloc the related resources.

Signed-off-by: Ma Jianpeng <jianpeng.ma@intel.com>
(cherry picked from commit a66a4931d5be9ee26c0983b3154fdbe37261a51c)
os/FileJournal: For journal-aio-mode, don't use aio when closing journal.

For jouranl-aio-mode when closing journal, the write_finish_thread_entry may exit before
write_thread_entry. This cause no one wait last aios to complete.
On some platform, after that the journal-header on journal corrupted.
To avoid this, when closing jouranl we don't use aio.

Fixes: 9073
Reported-by: Mark Kirkwood <mark.kirkwood@catalyst.net.nz>
Tested-by: Mark Kirkwood <mark.kirkwood@catalyst.net.nz>
Signed-off-by: Ma Jianpeng <jianpeng.ma@intel.com>
(cherry picked from commit e870fd09ce846e5642db268c33bbe8e2e17ffef2)
os: io_event.res is the size written

And not an error code to be converted with cpp_strerror()

Signed-off-by: Loic Dachary <loic-201408@dachary.org>
(cherry picked from commit 7827e0035e3350ad2d9230f27a1629545f53af5c)
os/FileJournal: When dump journal, using correctly seq avoid misjudging joural corrupt.

In func FileJournal::dump, it always using seq=0 as last-seq and it can
misjudge the journal corrupt.

Signed-off-by: Ma Jianpeng <jianpeng.ma@intel.com>
(cherry picked from commit 5f65b4db6d1dad7c2c5a09eab42af63a82ea9e9b)
Merge pull request #2764 from ceph/wip-9851

osd: bring FileJournal in sync with giant

Reviewed-by: Samuel Just <sjust@redhat.com>