X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Fmount_lustre.c;h=234dbbbf1474c4edd4f367f52d6225800688de36;hb=702258c220a8d9224413f259af4a21dda9950278;hp=9be94a622afe77547f60815b694ddf6e61afca93;hpb=6a6561972406043efe41ae43b64fd278f360a4b9;p=fs%2Flustre-release.git diff --git a/lustre/utils/mount_lustre.c b/lustre/utils/mount_lustre.c index 9be94a6..234dbbb 100644 --- a/lustre/utils/mount_lustre.c +++ b/lustre/utils/mount_lustre.c @@ -27,7 +27,7 @@ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2011, 2012, Whamcloud, Inc. + * Copyright (c) 2011, 2012, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -42,6 +42,7 @@ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif +#include "mount_utils.h" #include #include #include @@ -52,7 +53,19 @@ #include #include #include -#include "mount_utils.h" +#if LUSTRE_VERSION_CODE > OBD_OCD_VERSION(2, 10, 51, 0) +/* + * LU-1783 + * We only #include a kernel level include file here because + * important MS_ flag #defines are missing from the SLES version + * of sys/mount.h + * In the future if SLES updates sys/mount.h to have a more complete + * set of flag #defines we should stop including linux/fs.h + */ +#warn remove kernel include +#else +#include +#endif #define MAXOPT 4096 #define MAX_RETRIES 99 @@ -254,10 +267,21 @@ int parse_options(struct mount_opts *mop, char *orig_options, int *flagp) } } #ifdef MS_STRICTATIME - /* set strictatime to default if NOATIME or RELATIME - not given explicit */ - if (!(*flagp & (MS_NOATIME | MS_RELATIME))) - *flagp |= MS_STRICTATIME; +#if LUSTRE_VERSION_CODE > OBD_OCD_VERSION(2, 10, 51, 0) +/* + * LU-1783 + * In the future when upstream fixes land in all supported kernels + * we should stop forcing MS_STRICTATIME in lustre mounts. + * We override the kernel level default of MS_RELATIME for now + * due to a kernel vfs level bug in atime updates that fails + * to reset timestamps from the future. + */ +#warn remove MS_STRICTATIME override +#endif + /* set strictatime to default if NOATIME or RELATIME + not given explicit */ + if (!(*flagp & (MS_NOATIME | MS_RELATIME))) + *flagp |= MS_STRICTATIME; #endif strcpy(orig_options, options); free(options); @@ -364,8 +388,6 @@ static int parse_ldd(char *source, struct mount_opts *mop, char *options) append_option(options, "virgin"); if (ldd->ldd_flags & LDD_F_WRITECONF) append_option(options, "writeconf"); - if (ldd->ldd_flags & LDD_F_IAM_DIR) - append_option(options, "iam"); if (ldd->ldd_flags & LDD_F_NO_PRIMNODE) append_option(options, "noprimnode"); @@ -473,8 +495,6 @@ static int parse_opts(int argc, char *const argv[], struct mount_opts *mop) * symbolic link for instance */ if (realpath(mop->mo_usource, real_path) != NULL) { - mop->mo_usource = strdup(real_path); - ptr = strrchr(real_path, '/'); if (ptr && strncmp(ptr, "/dm-", 4) == 0 && isdigit(*(ptr + 4))) { snprintf(path, sizeof(path), "/sys/block/%s/dm/name", ptr+1); @@ -487,6 +507,7 @@ static int parse_opts(int argc, char *const argv[], struct mount_opts *mop) fclose(f); } } + mop->mo_usource = strdup(real_path); } ptr = strstr(mop->mo_usource, ":/"); @@ -638,6 +659,9 @@ int main(int argc, char *const argv[]) fprintf(stderr, "%s: mount %s at %s failed: %s\n", progname, mop.mo_usource, mop.mo_target, strerror(errno)); + if (errno == EBUSY) + fprintf(stderr, "Is the backend filesystem mounted?\n" + "Check /etc/mtab and /proc/mounts\n"); if (errno == ENODEV) fprintf(stderr, "Are the lustre modules loaded?\n" "Check /etc/modprobe.conf and "