Whamcloud - gitweb
LU-14598 ofd: fix for IDIF sequence at ofd_preprw_write 48/43248/4
authorAlexander Boyko <c17825@cray.com>
Thu, 8 Apr 2021 08:23:54 +0000 (04:23 -0400)
committerOleg Drokin <green@whamcloud.com>
Wed, 28 Apr 2021 02:10:19 +0000 (02:10 +0000)
commit747fed818be5a4e09281ab1d9fd5b3a13763ab40
tree1db5c8dc5b50be837a5e3ab4b2db86a219bcf12b
parent3c7b5ab34878df27c3e5b05aea81bbbc53b68d58
LU-14598 ofd: fix for IDIF sequence at ofd_preprw_write

During recovery write operation could create and load a sequence
if it comes before creation request from MDT0. ofd_preprw_write() uses
wrong logic for taking sequence for IDIF fids. And if oid overflows
32bit and takes a part at IDIF sequence, write request loads wrong
ofd sequence. And after that it is used for other IO. The next
create from MDT0 cause an error:
Too many FIDs to precreate OST replaced or reformatted...

The test 122b reproduce issue when OST using a wrong sequence for
MDT0 IDIF. This error requires objects id grater than 32bit, and
write request during recovery, it should be processed before a create
requset from MDT0.
For a visible error at console the last object id should be
1<<32 + (OST_MAX_PRECREATE * 5). Error is
lustre-OST0000: Too many FIDs to precreate OST replaced or
    reformatted: LFSCK will clean up

HPE-bug-id: LUS-9595
Signed-off-by: Alexander Boyko <alexander.boyko@hpe.com>
Change-Id: I09e6f88b1f0d03fec59b24ef096cbc7baa5388ae
Reviewed-on: https://review.whamcloud.com/43248
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Sergey Cheremencev <sergey.cheremencev@hpe.com>
lustre/ofd/ofd_dev.c
lustre/ofd/ofd_fs.c
lustre/ofd/ofd_io.c
lustre/tests/conf-sanity.sh