Details
-
Improvement
-
Resolution: Fixed
-
Minor
-
None
-
9223372036854775807
Description
Running strace of mount.lustre shows an interesting reason why it spent a huge mount of time on a large filesystem. mount.lustre invokes several 'debugfs' command internally, but they took a huge amount of time here. Here is example.
10056 10:35:21.590086 execve("/sbin/debugfs", ["debugfs", "-c", "-R", "stat CONFIGS/mountdata", "/dev/sda"] 10056 10:39:00.257586 +++ exited with 0 +++ 10134 10:39:00.259343 execve("/bin/sh", ["sh", "-c", "debugfs -c -R 'dump /CONFIGS/mou"...] 10134 10:42:39.116052 +++ exited with 0 +++
Total mount time was 982 sec in this time. But, It took 419 sec for just those two debugfs calls against 982 sec.
These two calls are just reading the CONFIGS/mountdata file from the filesystem, but that could be done directly via libext2fs, along with many of the other operations in libmount_utuls_ldiskfs.c, rather than launching external binaries to do the work. We should take care not to load the whole filesystem metadata, if that can be avoided.
Andreas Dilger (adilger@whamcloud.com) merged in patch https://review.whamcloud.com/38027/
Subject:
LU-13241libext2fs: add quota to libext2fsProject: tools/e2fsprogs
Branch: master-lustre-test
Current Patch Set:
Commit: ab3ebc4782c04ae25568a17e456c29441a0ce044