Whamcloud - gitweb
LU-7860 ldlm: revert part of commit 657bbc49
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_oi.h
index 984dd6d..e278411 100644 (file)
@@ -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, Intel Corporation.
+ * Copyright (c) 2012, 2013, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
 #ifndef _OSD_OI_H
 #define _OSD_OI_H
 
-#if defined(__KERNEL__)
 
 /* struct rw_semaphore */
 #include <linux/rwsem.h>
+#include <linux/jbd2.h>
 #include <lustre_fid.h>
 #include <lu_object.h>
 #include <md_object.h>
@@ -65,7 +65,6 @@
 struct lu_fid;
 struct osd_thread_info;
 struct lu_site;
-struct thandle;
 
 struct dt_device;
 struct osd_device;
@@ -84,9 +83,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,
@@ -131,22 +133,28 @@ static inline int osd_id_eq_strict(const struct osd_inode_id *id0,
        return (id0->oii_ino == id1->oii_ino && id0->oii_gen == id1->oii_gen);
 }
 
+enum oi_check_flags {
+       OI_CHECK_FLD    = 0x00000001,
+       OI_KNOWN_ON_OST = 0x00000002,
+};
+
 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);
 int  osd_oi_lookup(struct osd_thread_info *info, struct osd_device *osd,
                   const struct lu_fid *fid, struct osd_inode_id *id,
-                  bool check_fld);
+                  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,
-                  struct thandle *th);
+                  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,
-                  struct thandle *th);
+                  handle_t *th, enum oi_check_flags flags);
+int  osd_oi_update(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);
 
 int fid_is_on_ost(struct osd_thread_info *info, struct osd_device *osd,
-                 const struct lu_fid *fid);
-#endif /* __KERNEL__ */
+                 const struct lu_fid *fid, enum oi_check_flags flags);
 #endif /* _OSD_OI_H */