X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flustre_disk.h;h=b5bd30522ea2093377ed7347e638326255e2cf81;hp=6c46056956a2c6a5d177bd05405664e8f04e12ad;hb=fe927599b62b60f14f657984599c2c6aed9beb05;hpb=e550abd05cf7ffddaedbef996be1baaae0912b4a diff --git a/lustre/include/lustre_disk.h b/lustre/include/lustre_disk.h index 6c46056..b5bd305 100644 --- a/lustre/include/lustre_disk.h +++ b/lustre/include/lustre_disk.h @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -28,6 +26,8 @@ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. + * + * Copyright (c) 2011, 2012, Whamcloud, Inc. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -63,13 +63,18 @@ #define HEALTH_CHECK "health_check" #define CAPA_KEYS "capa_keys" #define CHANGELOG_USERS "changelog_users" - +#define MGS_NIDTBL_DIR "NIDTBL_VERSIONS" +#define QMT_DIR "quota_master" +#define QSD_DIR "quota_slave" /****************** persistent mount data *********************/ #define LDD_F_SV_TYPE_MDT 0x0001 #define LDD_F_SV_TYPE_OST 0x0002 #define LDD_F_SV_TYPE_MGS 0x0004 +#define LDD_F_SV_TYPE_MASK (LDD_F_SV_TYPE_MDT | \ + LDD_F_SV_TYPE_OST | \ + LDD_F_SV_TYPE_MGS) #define LDD_F_SV_ALL 0x0008 /** need an index assignment */ #define LDD_F_NEED_INDEX 0x0010 @@ -87,14 +92,29 @@ #define LDD_F_PARAM 0x0400 /** backend fs make use of IAM directory format. */ #define LDD_F_IAM_DIR 0x0800 +/** all nodes are specified as service nodes */ +#define LDD_F_NO_PRIMNODE 0x1000 +/** IR enable flag */ +#define LDD_F_IR_CAPABLE 0x2000 +/** the MGS refused to register the target. */ +#define LDD_F_ERROR 0x4000 + +/* opc for target register */ +#define LDD_F_OPC_REG 0x10000000 +#define LDD_F_OPC_UNREG 0x20000000 +#define LDD_F_OPC_READY 0x40000000 +#define LDD_F_OPC_MASK 0xf0000000 + +#define LDD_F_ONDISK_MASK (LDD_F_SV_TYPE_MASK | LDD_F_IAM_DIR) enum ldd_mount_type { - LDD_MT_EXT3 = 0, - LDD_MT_LDISKFS, - LDD_MT_SMFS, - LDD_MT_REISERFS, - LDD_MT_LDISKFS2, - LDD_MT_LAST + LDD_MT_EXT3 = 0, + LDD_MT_LDISKFS, + LDD_MT_SMFS, + LDD_MT_REISERFS, + LDD_MT_LDISKFS2, + LDD_MT_ZFS, + LDD_MT_LAST }; static inline char *mt_str(enum ldd_mount_type mt) @@ -195,6 +215,8 @@ struct lustre_mount_data { #define LMD_FLG_NOMGS 0x0020 /* Only start target for servers, reusing 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) @@ -252,7 +274,14 @@ struct lustre_mount_data { #define OBD_INCOMPAT_IAM_DIR 0x00000040 /** LMA attribute contains per-inode incompatible flags */ #define OBD_INCOMPAT_LMA 0x00000080 - +/** lmm_stripe_count has been shrunk from __u32 to __u16 and the remaining 16 + * bits are now used to store a generation. Once we start changing the layout + * and bumping the generation, old versions expecting a 32-bit lmm_stripe_count + * will be confused by interpreting stripe_count | gen << 16 as the actual + * stripe count */ +#define OBD_INCOMPAT_LMM_VER 0x00000100 +/** multiple OI files for MDT */ +#define OBD_INCOMPAT_MULTI_OI 0x00000200 /* Data stored per server at the head of the last_rcvd file. In le32 order. This should be common to filter_internal.h, lustre_mds.h */ @@ -311,7 +340,7 @@ static inline void check_lcd(char *obd_name, int index, lcd->lcd_uuid[length - 1] = '\0'; LCONSOLE_ERROR("the client UUID (%s) on %s for exports" - "stored in last_rcvd(index = %d) is bad!\n", + "stored in last_rcvd(index = %d) is bad!\n", lcd->lcd_uuid, obd_name, index); } } @@ -436,18 +465,21 @@ struct lustre_sb_info { struct ll_sb_info *lsi_llsbi; /* add'l client sbi info */ struct vfsmount *lsi_srv_mnt; /* the one server mount */ cfs_atomic_t lsi_mounts; /* references to the srv_mnt */ - struct backing_dev_info lsi_bdi; /* each client mountpoint needs own backing_dev_info */ + struct backing_dev_info lsi_bdi; /* each client mountpoint needs + own backing_dev_info */ }; #define LSI_SERVER 0x00000001 #define LSI_UMOUNT_FORCE 0x00000010 #define LSI_UMOUNT_FAILOVER 0x00000020 #define LSI_BDI_INITIALIZED 0x00000040 +#define LSI_IR_CAPABLE 0x00000080 #define s2lsi(sb) ((struct lustre_sb_info *)((sb)->s_fs_info)) #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__ */ @@ -465,7 +497,8 @@ struct lustre_mount_info { #ifdef __KERNEL__ /* obd_mount.c */ -void lustre_register_client_fill_super(int (*cfs)(struct super_block *sb)); +void lustre_register_client_fill_super(int (*cfs)(struct super_block *sb, + struct vfsmount *mnt)); void lustre_register_kill_super_cb(void (*cfs)(struct super_block *sb)); @@ -478,9 +511,10 @@ int server_put_mount_2(const char *name, struct vfsmount *mnt); int server_register_target(struct super_block *sb); struct mgs_target_info; int server_mti_print(char *title, struct mgs_target_info *mti); +void server_calc_timeout(struct lustre_sb_info *lsi, struct obd_device *obd); /* mgc_request.c */ -int mgc_fsname2resid(char *fsname, struct ldlm_res_id *res_id); +int mgc_fsname2resid(char *fsname, struct ldlm_res_id *res_id, int type); #endif