/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2012 Whamcloud, Inc.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
#define D_CONSOLE 0x02000000
#define D_QUOTA 0x04000000
#define D_SEC 0x08000000
+#define D_LFSCK 0x10000000 /* For both OI scrub and LFSCK */
/* keep these in sync with lnet/{utils,libcfs}/debug.c */
#define D_HSM D_TRACE
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
- * Copyright (c) 2011, Whamcloud, Inc.
+ * Copyright (c) 2011, 2012, Whamcloud, Inc.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
return "quota";
case D_SEC:
return "sec";
+ case D_LFSCK:
+ return "lfsck";
}
}
existing MGS services */
#define LMD_FLG_WRITECONF 0x0040 /* Rewrite config log */
#define LMD_FLG_NOIR 0x0080 /* NO imperative recovery */
+#define LMD_FLG_NOSCRUB 0x0100 /* Do not trigger scrub automatically */
#define lmd_is_client(x) ((x)->lmd_flags & LMD_FLG_CLIENT)
#define s2lsi_nocast(sb) ((sb)->s_fs_info)
#define get_profile_name(sb) (s2lsi(sb)->lsi_lmd->lmd_profile)
+#define get_mount_flags(sb) (s2lsi(sb)->lsi_lmd->lmd_flags)
#endif /* __KERNEL__ */
} else if (strncmp(s1, "nomgs", 5) == 0) {
lmd->lmd_flags |= LMD_FLG_NOMGS;
clear++;
+ } else if (strncmp(s1, "noscrub", 7) == 0) {
+ lmd->lmd_flags |= LMD_FLG_NOSCRUB;
+ clear++;
} else if (strncmp(s1, "writeconf", 9) == 0) {
lmd->lmd_flags |= LMD_FLG_WRITECONF;
clear++;
id->oii_ino = inode->i_ino;
id->oii_gen = inode->i_generation;
} else {
- if (unlikely(fid_seq(fid) == FID_SEQ_LOCAL_FILE)) {
- rc = osd_compat_spec_lookup(info, osd, fid, id);
- if (rc == 0 || rc != -ERESTART)
- goto out;
- }
+ if (unlikely(fid_seq(fid) == FID_SEQ_LOCAL_FILE))
+ return osd_compat_spec_lookup(info, osd, fid, id);
fid_cpu_to_be(oi_fid, fid);
key = (struct dt_key *)oi_fid;
rc = -ENOENT;
}
}
-
-out:
return rc;
}
struct osd_inode_id *id;
const struct dt_key *key;
- if (fid_is_igif(fid))
- return 0;
+ if (fid_is_igif(fid) || unlikely(fid_seq(fid) == FID_SEQ_DOT_LUSTRE))
+ return 0;
- if (fid_is_idif(fid) || fid_seq(fid) == FID_SEQ_LLOG)
- return osd_compat_objid_insert(info, osd, fid, id0, th);
+ if (fid_is_idif(fid) || fid_seq(fid) == FID_SEQ_LLOG)
+ return osd_compat_objid_insert(info, osd, fid, id0, th);
- /* notice we don't return immediately, but continue to get into OI */
- if (unlikely(fid_seq(fid) == FID_SEQ_LOCAL_FILE))
- osd_compat_spec_insert(info, osd, fid, id0, th);
+ /* Server mount should not depends on OI files */
+ if (unlikely(fid_seq(fid) == FID_SEQ_LOCAL_FILE))
+ return osd_compat_spec_insert(info, osd, fid, id0, th);
fid_cpu_to_be(oi_fid, fid);
key = (struct dt_key *)oi_fid;
struct lu_fid *oi_fid = &info->oti_fid;
const struct dt_key *key;
- if (!fid_is_norm(fid))
- return 0;
-
LASSERT(fid_seq(fid) != FID_SEQ_LOCAL_FILE);
if (fid_is_idif(fid) || fid_seq(fid) == FID_SEQ_LLOG)