Whamcloud - gitweb
LU-12137 osd-ldiskfs: create locked and unlocked versions of osd lookup code
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_oi.h
index 2e6848f..7e0c377 100644 (file)
  *
  * You should have received a copy of the GNU General Public License
  * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -27,7 +23,7 @@
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2012, 2013, Intel Corporation.
+ * Copyright (c) 2012, 2016, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -49,7 +45,6 @@
 #ifndef _OSD_OI_H
 #define _OSD_OI_H
 
-#if defined(__KERNEL__)
 
 /* struct rw_semaphore */
 #include <linux/rwsem.h>
 #include <lu_object.h>
 #include <md_object.h>
 
-#define OSD_OI_FID_NR         (1UL << OSD_OI_FID_OID_BITS)
-#define OSD_OI_FID_NR_MAX     (1UL << OSD_OI_FID_OID_BITS_MAX)
-
-#define OSD_OII_NOGEN (0)
+#define OSD_OI_FID_OID_BITS    6
+#define OSD_OI_FID_NR          (1UL << OSD_OI_FID_OID_BITS)
+#define OSD_OII_NOGEN          (0)
 
 struct lu_fid;
 struct osd_thread_info;
@@ -84,10 +78,12 @@ struct osd_inode_id {
        __u32 oii_gen; /* inode generation */
 };
 
+/* OI cache entry */
 struct osd_idmap_cache {
        struct lu_fid           oic_fid;
        struct osd_inode_id     oic_lid;
        struct osd_device       *oic_dev;
+       __u16                   oic_remote:1;   /* FID isn't local */
 };
 
 static inline void osd_id_pack(struct osd_inode_id *tgt,
@@ -135,17 +131,21 @@ static inline int osd_id_eq_strict(const struct osd_inode_id *id0,
 enum oi_check_flags {
        OI_CHECK_FLD    = 0x00000001,
        OI_KNOWN_ON_OST = 0x00000002,
+       OI_LOCKED       = 0x00000004,
 };
 
+extern unsigned int osd_oi_count;
+
 int osd_oi_mod_init(void);
-int osd_oi_init(struct osd_thread_info *info, struct osd_device *osd);
+int osd_oi_init(struct osd_thread_info *info, struct osd_device *osd,
+               bool restored);
 void osd_oi_fini(struct osd_thread_info *info, struct osd_device *osd);
 int  osd_oi_lookup(struct osd_thread_info *info, struct osd_device *osd,
                   const struct lu_fid *fid, struct osd_inode_id *id,
                   enum oi_check_flags flags);
 int  osd_oi_insert(struct osd_thread_info *info, struct osd_device *osd,
                   const struct lu_fid *fid, const struct osd_inode_id *id,
-                  handle_t *th, enum oi_check_flags flags);
+                  handle_t *th, enum oi_check_flags flags, bool *exist);
 int  osd_oi_delete(struct osd_thread_info *info,
                   struct osd_device *osd, const struct lu_fid *fid,
                   handle_t *th, enum oi_check_flags flags);
@@ -155,5 +155,4 @@ int  osd_oi_update(struct osd_thread_info *info, struct osd_device *osd,
 
 int fid_is_on_ost(struct osd_thread_info *info, struct osd_device *osd,
                  const struct lu_fid *fid, enum oi_check_flags flags);
-#endif /* __KERNEL__ */
 #endif /* _OSD_OI_H */