From: Andreas Dilger Date: Thu, 29 Oct 2020 20:47:40 +0000 (-0600) Subject: LU-14061 utils: prefer mounting with specified fstype X-Git-Tag: 2.13.57~63 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=ffeb900743772d86ceb41b4a323006fd478fd674 LU-14061 utils: prefer mounting with specified fstype If the server filesystem is mounted with "-t lustre" use that type for mounting instead of automatically selecting "lustre_tgt" for server mounts, so that it is appearing in /proc/mounts correctly, and "mount -t lustre" will list all of these filesystems. Only if "mount -t lustre_tgt" is used will mount.lustre_tgt be called, and that will internally use "lustre_tgt" as the filesystem type, and only fall back to type "lustre" if that does not work. This will give userspace plenty of time to transition to using "lustre_tgt" for server mountpoints. Signed-off-by: Andreas Dilger Change-Id: Ifd7560c800acdfe14c9564bbf955ecad1224f2e3 Reviewed-on: https://review.whamcloud.com/40474 Tested-by: jenkins Reviewed-by: James Simmons Tested-by: Maloo Reviewed-by: John L. Hammond Reviewed-by: Oleg Drokin --- diff --git a/lustre/utils/mount_lustre.c b/lustre/utils/mount_lustre.c index a966613..5890e5f 100644 --- a/lustre/utils/mount_lustre.c +++ b/lustre/utils/mount_lustre.c @@ -962,8 +962,15 @@ int main(int argc, char *const argv[]) #endif /* HAVE_GSS */ if (!mop.mo_fake) { - char *fstype = client ? "lustre" : "lustre_tgt"; + char *fstype; + /* Prefer filesystem type given on mount command line + * so it appears correctly in the /proc/mounts output. + */ + if (strstr(argv[0], "mount.lustre_tgt")) + fstype = "lustre_tgt"; + else + fstype = "lustre"; /* * flags and target get to lustre_get_sb(), but not * lustre_fill_super(). Lustre ignores the flags, but mount @@ -973,24 +980,26 @@ int main(int argc, char *const argv[]) rc = mount(mop.mo_source, mop.mo_target, fstype, flags, (void *)options); if (rc != 0) { - /* Older Lustre without 'lustre_tgt'. - * Try 'lustre' instead - */ - if (rc == -ENODEV) { - fstype = "lustre"; - i--; - continue; - } - if (verbose) { fprintf(stderr, - "%s: mount %s at %s failed: %s retries left: %d\n", - basename(progname), + "%s: mount -t %s %s at %s failed: %s retries left: %d\n", + basename(progname), fstype, mop.mo_usource, mop.mo_target, strerror(errno), mop.mo_retry - i); } + /* Pre-2.13 Lustre without 'lustre_tgt' type? + * Try with 'lustre' instead. Eventually this + * can be removed (e.g. 2.18 or whenever). + */ + if (rc == -ENODEV && + strcmp(fstype, "lustre_tgt") == 0) { + fstype = "lustre"; + i--; + continue; + } + if (mop.mo_retry) { int limit = i / 2 > 5 ? i / 2 : 5;