Whamcloud - gitweb
LU-15040 mdc: update max_easize on reconnect 73/45073/3
authorSergey Cheremencev <sergey.cheremencev@hpe.com>
Wed, 11 Nov 2020 08:19:29 +0000 (11:19 +0300)
committerOleg Drokin <green@whamcloud.com>
Sun, 10 Oct 2021 03:32:47 +0000 (03:32 +0000)
If MDS was restarted to enable ea_inode, clients should get new
max_easize value. However, cl_max_mds_easize is not updated. This may
cause lfs getstripe to fail if file has huge stripe number
(2000 for example):

*** Error in `lfs': free(): invalid pointer: 0x0000000000de09d0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x81299)[0x7f0623c03299]
/lib64/libc.so.6(closedir+0xd)[0x7f0623c42ddd]
/lib/liblustreapi.so.1(+0xa557)[0x7f06248b5557]
/lib/liblustreapi.so.1(+0xad74)[0x7f06248b5d74]
lfs[0x4105b3]
/lib/liblustreapi.so.1(Parser_execarg+0x51)[0x7f06248c88e1]
lfs[0x40448e]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f0623ba4555]
lfs[0x4044fc]

HPE-bug-id: LUS-9478
Change-Id: If155a63e2f07536c6500b37b5e6191cb8b0d0607
Reviewed-on: https://es-gerrit.dev.cray.com/158100
Reviewed-by: Alexey Lyashkov <c17817@cray.com>
Reviewed-by: Nikitas Angelinas <nangelinas@cray.com>
Tested-by: Elena Gryaznova <c17455@cray.com>
Signed-off-by: Sergey Cheremencev <sergey.cheremencev@hpe.com>
Reviewed-on: https://review.whamcloud.com/45073
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/mdc/mdc_request.c

index cea198f..112a834 100644 (file)
@@ -2709,6 +2709,7 @@ static int mdc_import_event(struct obd_device *obd, struct obd_import *imp,
                if (OCD_HAS_FLAG(ocd, GRANT))
                        osc_init_grant(cli, ocd);
 
                if (OCD_HAS_FLAG(ocd, GRANT))
                        osc_init_grant(cli, ocd);
 
+               md_init_ea_size(obd->obd_self_export, ocd->ocd_max_easize, 0);
                rc = obd_notify_observer(obd, obd, OBD_NOTIFY_OCD);
                break;
        }
                rc = obd_notify_observer(obd, obd, OBD_NOTIFY_OCD);
                break;
        }