Whamcloud - gitweb
LU-6142 lustre: use BIT() macro where appropriate in include
[fs/lustre-release.git] / lustre / include / dt_object.h
index 47e2591..d9cc933 100644 (file)
@@ -332,19 +332,19 @@ struct dt_index_features {
 };
 
 enum dt_index_flags {
-        /** index supports variable sized keys */
-        DT_IND_VARKEY = 1 << 0,
-        /** index supports variable sized records */
-        DT_IND_VARREC = 1 << 1,
-        /** index can be modified */
-        DT_IND_UPDATE = 1 << 2,
-        /** index supports records with non-unique (duplicate) keys */
-        DT_IND_NONUNQ = 1 << 3,
-        /**
-         * index support fixed-size keys sorted with natural numerical way
-         * and is able to return left-side value if no exact value found
-         */
-        DT_IND_RANGE = 1 << 4,
+       /** index supports variable sized keys */
+       DT_IND_VARKEY = BIT(0),
+       /** index supports variable sized records */
+       DT_IND_VARREC = BIT(1),
+       /** index can be modified */
+       DT_IND_UPDATE = BIT(2),
+       /** index supports records with non-unique (duplicate) keys */
+       DT_IND_NONUNQ = BIT(3),
+       /**
+        * index support fixed-size keys sorted with natural numerical way
+        * and is able to return left-side value if no exact value found
+        */
+       DT_IND_RANGE = BIT(4),
 };
 
 /* for dt_read_lock() and dt_write_lock() object lock rule */
@@ -1413,6 +1413,39 @@ struct dt_body_operations {
                             __u64 start,
                             __u64 end,
                             enum lu_ladvise_type advice);
+
+       /**
+        * Declare intention to preallocate space for an object
+        *
+        * \param[in] env       execution environment for this thread
+        * \param[in] dt        object
+        * \param[in] th        transaction handle
+        *
+        * \retval 0            on success
+        * \retval negative     negated errno on error
+        */
+       int (*dbo_declare_fallocate)(const struct lu_env *env,
+                                   struct dt_object *dt,
+                                   struct thandle *th);
+       /**
+        * Allocate specified region for an object
+        *
+        * \param[in] env       execution environment for this thread
+        * \param[in] dt        object
+        * \param[in] start     the start of the region to allocate
+        * \param[in] end       the end of the region to allocate
+        * \param[in] mode      fallocate mode
+        * \param[in] th        transaction handle
+        *
+        * \retval 0            on success
+        * \retval negative     negated errno on error
+        */
+       int (*dbo_fallocate)(const struct lu_env *env,
+                           struct dt_object *dt,
+                           __u64 start,
+                           __u64 end,
+                           int mode,
+                           struct thandle *th);
 };
 
 /**
@@ -2115,6 +2148,17 @@ static inline int dt_object_sync(const struct lu_env *env, struct dt_object *o,
        return o->do_ops->do_object_sync(env, o, start, end);
 }
 
+static inline int dt_fid_alloc(const struct lu_env *env,
+                              struct dt_device *d,
+                              struct lu_fid *fid,
+                              struct lu_object *parent,
+                              const struct lu_name *name)
+{
+       struct lu_device *l = dt2lu_dev(d);
+
+       return l->ld_ops->ldo_fid_alloc(env, l, fid, parent, name);
+}
+
 int dt_declare_version_set(const struct lu_env *env, struct dt_object *o,
                            struct thandle *th);
 void dt_version_set(const struct lu_env *env, struct dt_object *o,
@@ -2518,6 +2562,29 @@ static inline int dt_ladvise(const struct lu_env *env, struct dt_object *dt,
        return dt->do_body_ops->dbo_ladvise(env, dt, start, end, advice);
 }
 
+static inline int dt_declare_falloc(const struct lu_env *env,
+                                     struct dt_object *dt, struct thandle *th)
+{
+       LASSERT(dt);
+       if (!dt->do_body_ops)
+               return -EOPNOTSUPP;
+       LASSERT(dt->do_body_ops);
+       LASSERT(dt->do_body_ops->dbo_declare_fallocate);
+       return dt->do_body_ops->dbo_declare_fallocate(env, dt, th);
+}
+
+static inline int dt_falloc(const struct lu_env *env, struct dt_object *dt,
+                             __u64 start, __u64 end, int mode,
+                             struct thandle *th)
+{
+       LASSERT(dt);
+       if (!dt->do_body_ops)
+               return -EOPNOTSUPP;
+       LASSERT(dt->do_body_ops);
+       LASSERT(dt->do_body_ops->dbo_fallocate);
+       return dt->do_body_ops->dbo_fallocate(env, dt, start, end, mode, th);
+}
+
 static inline int dt_fiemap_get(const struct lu_env *env, struct dt_object *d,
                                struct fiemap *fm)
 {