Whamcloud - gitweb
LU-1155 obdecho: Oops if target device can not be found.
[fs/lustre-release.git] / lustre / include / lustre_fid.h
index f8aba33..db88f41 100644 (file)
@@ -28,6 +28,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/
@@ -88,10 +90,15 @@ enum {
         LUSTRE_SEQ_SUPER_WIDTH = ((1ULL << 30ULL) * LUSTRE_SEQ_META_WIDTH)
 };
 
+enum {
+        /** 2^6 FIDs for OI containers */
+        OSD_OI_FID_OID_BITS     = 6,
+        /** reserve enough FIDs in case we want more in the future */
+        OSD_OI_FID_OID_BITS_MAX = 10,
+};
+
 /** special OID for local objects */
 enum local_oid {
-        /** \see osd_oi_index_create */
-        OSD_OI_FID_16_OID       = 2UL,
         /** \see fld_mod_init */
         FLD_INDEX_OID           = 3UL,
         /** \see fid_mod_init */
@@ -107,6 +114,22 @@ enum local_oid {
         MDT_LAST_RECV_OID       = 11UL,
         /** \see osd_mod_init */
         OSD_REM_OBJ_DIR_OID     = 12UL,
+        OSD_FS_ROOT_OID         = 13UL,
+        ACCT_USER_OID           = 15UL,
+        ACCT_GROUP_OID          = 16UL,
+        OFD_LAST_RECV_OID       = 19UL,
+        OFD_GROUP0_LAST_OID     = 20UL,
+        OFD_GROUP4K_LAST_OID    = 20UL+4096,
+        OFD_LAST_GROUP_OID      = 4117UL,
+        LLOG_CATALOGS_OID       = 4118UL,
+        MGS_CONFIGS_OID         = 4119UL,
+        OFD_HEALTH_CHECK_OID    = 4120UL,
+
+        /** first OID for first OI fid */
+        OSD_OI_FID_OID_FIRST    = 5000UL,
+        /** reserve enough in case we want to have more in the future */
+        OSD_OI_FID_OID_MAX      = OSD_OI_FID_OID_FIRST +
+                                  (1UL << OSD_OI_FID_OID_BITS_MAX),
 };
 
 static inline void lu_local_obj_fid(struct lu_fid *fid, __u32 oid)
@@ -164,6 +187,10 @@ struct lu_client_seq {
 
         /* Seq-server for direct talking */
         struct lu_server_seq   *lcs_srv;
+
+        /* wait queue for fid allocation and update indicator */
+        cfs_waitq_t             lcs_waitq;
+        int                     lcs_update;
 };
 
 /* server sequence manager interface */
@@ -214,8 +241,8 @@ struct lu_server_seq {
          */
         __u64                   lss_set_width;
 
-        /* transaction no of seq update write operation */
-        __u64                   lss_set_transno;
+        /* sync is needed for update operation */
+        __u32                   lss_need_sync;
         /**
          * Pointer to site object, required to access site fld.
          */
@@ -258,8 +285,10 @@ void seq_client_fini(struct lu_client_seq *seq);
 
 void seq_client_flush(struct lu_client_seq *seq);
 
-int seq_client_alloc_fid(struct lu_client_seq *seq,
+int seq_client_alloc_fid(const struct lu_env *env, struct lu_client_seq *seq,
                          struct lu_fid *fid);
+int seq_client_get_seq(const struct lu_env *env, struct lu_client_seq *seq,
+                       seqno_t *seqnr);
 
 /* Fids common stuff */
 int fid_is_local(const struct lu_env *env,