Whamcloud - gitweb
LU-2059 llog: MGC to use OSD API for backup logs
[fs/lustre-release.git] / lustre / include / dt_object.h
index 8de5cc5..477433f 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) 2011, 2013, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -213,6 +213,7 @@ enum dt_index_flags {
  */
 extern const struct dt_index_features dt_directory_features;
 extern const struct dt_index_features dt_otable_features;
+extern const struct dt_index_features dt_lfsck_features;
 
 /* index features supported by the accounting objects */
 extern const struct dt_index_features dt_acct_features;
@@ -448,6 +449,14 @@ struct dt_object_operations {
          */
         int (*do_data_get)(const struct lu_env *env, struct dt_object *dt,
                            void **data);
+
+       /**
+        * Lock object.
+        */
+       int (*do_object_lock)(const struct lu_env *env, struct dt_object *dt,
+                             struct lustre_handle *lh,
+                             struct ldlm_enqueue_info *einfo,
+                             void *policy);
 };
 
 /**
@@ -518,19 +527,13 @@ struct dt_body_operations {
          * Punch object's content
          * precondition: regular object, not index
          */
-        int   (*do_declare_punch)(const struct lu_env *, struct dt_object *,
+        int   (*dbo_declare_punch)(const struct lu_env *, struct dt_object *,
                                   __u64, __u64, struct thandle *th);
-        int   (*do_punch)(const struct lu_env *env, struct dt_object *dt,
+        int   (*dbo_punch)(const struct lu_env *env, struct dt_object *dt,
                           __u64 start, __u64 end, struct thandle *th,
                           struct lustre_capa *capa);
 };
 
-struct dt_lock_operations {
-       int (*do_object_lock)(const struct lu_env *env, struct dt_object *dt,
-                             struct lustre_handle *lh,
-                             struct ldlm_enqueue_info *einfo,
-                             void *policy);
-};
 /**
  * Incomplete type of index record.
  */
@@ -674,7 +677,6 @@ struct dt_object {
         const struct dt_object_operations *do_ops;
         const struct dt_body_operations   *do_body_ops;
         const struct dt_index_operations  *do_index_ops;
-       const struct dt_lock_operations   *do_lock_ops;
 };
 
 /*
@@ -690,11 +692,16 @@ struct local_oid_storage {
        struct dt_object *los_obj;
 
        /* data used to generate new fids */
-       struct mutex     los_id_lock;
+       struct mutex      los_id_lock;
        __u64             los_seq;
        __u32             los_last_oid;
 };
 
+static inline struct lu_device *dt2lu_dev(struct dt_device *d)
+{
+        return &d->dd_lu_dev;
+}
+
 static inline struct dt_object *lu2dt(struct lu_object *l)
 {
         LASSERT(l == NULL || IS_ERR(l) || lu_device_is_dt(l->lo_dev));
@@ -711,6 +718,11 @@ static inline int dt_object_exists(const struct dt_object *dt)
         return lu_object_exists(&dt->do_lu);
 }
 
+static inline int dt_object_remote(const struct dt_object *dt)
+{
+       return lu_object_remote(&dt->do_lu);
+}
+
 static inline struct dt_object *lu2dt_obj(struct lu_object *o)
 {
        LASSERT(ergo(o != NULL, lu_device_is_dt(o->lo_dev)));
@@ -746,10 +758,10 @@ struct thandle {
        __s32             th_result;
 
        /** whether we need sync commit */
-       int               th_sync:1;
+       unsigned int            th_sync:1;
 
        /* local transation, no need to inform other layers */
-       int               th_local:1;
+       unsigned int            th_local:1;
 
        /* In DNE, one transaction can be disassemblied into
         * updates on several different MDTs, and these updates
@@ -806,6 +818,10 @@ int dt_path_parser(const struct lu_env *env,
                    char *local, dt_entry_func_t entry_func,
                    void *data);
 
+struct dt_object *
+dt_store_resolve(const struct lu_env *env, struct dt_device *dt,
+                const char *path, struct lu_fid *fid);
+
 struct dt_object *dt_store_open(const struct lu_env *env,
                                 struct dt_device *dt,
                                 const char *dirname,
@@ -872,6 +888,8 @@ local_index_find_or_create_with_fid(const struct lu_env *env,
                                    struct dt_object *parent,
                                    const char *name, __u32 mode,
                                    const struct dt_index_features *ft);
+int local_object_unlink(const struct lu_env *env, struct dt_device *dt,
+                       struct dt_object *parent, const char *name);
 
 static inline int dt_object_lock(const struct lu_env *env,
                                 struct dt_object *o, struct lustre_handle *lh,
@@ -879,9 +897,9 @@ static inline int dt_object_lock(const struct lu_env *env,
                                 void *policy)
 {
        LASSERT(o);
-       LASSERT(o->do_lock_ops);
-       LASSERT(o->do_lock_ops->do_object_lock);
-       return o->do_lock_ops->do_object_lock(env, o, lh, einfo, policy);
+       LASSERT(o->do_ops);
+       LASSERT(o->do_ops->do_object_lock);
+       return o->do_ops->do_object_lock(env, o, lh, einfo, policy);
 }
 
 int dt_lookup_dir(const struct lu_env *env, struct dt_object *dir,
@@ -1209,8 +1227,8 @@ static inline int dt_declare_punch(const struct lu_env *env,
 {
         LASSERT(dt);
         LASSERT(dt->do_body_ops);
-        LASSERT(dt->do_body_ops->do_declare_punch);
-        return dt->do_body_ops->do_declare_punch(env, dt, start, end, th);
+        LASSERT(dt->do_body_ops->dbo_declare_punch);
+        return dt->do_body_ops->dbo_declare_punch(env, dt, start, end, th);
 }
 
 static inline int dt_punch(const struct lu_env *env, struct dt_object *dt,
@@ -1219,8 +1237,8 @@ static inline int dt_punch(const struct lu_env *env, struct dt_object *dt,
 {
         LASSERT(dt);
         LASSERT(dt->do_body_ops);
-        LASSERT(dt->do_body_ops->do_punch);
-        return dt->do_body_ops->do_punch(env, dt, start, end, th, capa);
+        LASSERT(dt->do_body_ops->dbo_punch);
+        return dt->do_body_ops->dbo_punch(env, dt, start, end, th, capa);
 }
 
 static inline int dt_fiemap_get(const struct lu_env *env, struct dt_object *d,
@@ -1464,4 +1482,22 @@ static inline struct dt_thread_info *dt_info(const struct lu_env *env)
        return dti;
 }
 
+int dt_global_init(void);
+void dt_global_fini(void);
+
+# ifdef LPROCFS
+int lprocfs_dt_rd_blksize(char *page, char **start, off_t off,
+                         int count, int *eof, void *data);
+int lprocfs_dt_rd_kbytestotal(char *page, char **start, off_t off,
+                             int count, int *eof, void *data);
+int lprocfs_dt_rd_kbytesfree(char *page, char **start, off_t off,
+                            int count, int *eof, void *data);
+int lprocfs_dt_rd_kbytesavail(char *page, char **start, off_t off,
+                             int count, int *eof, void *data);
+int lprocfs_dt_rd_filestotal(char *page, char **start, off_t off,
+                            int count, int *eof, void *data);
+int lprocfs_dt_rd_filesfree(char *page, char **start, off_t off,
+                           int count, int *eof, void *data);
+# endif /* LPROCFS */
+
 #endif /* __LUSTRE_DT_OBJECT_H */