-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* Return device-wide statistics.
*/
int (*dt_statfs)(const struct lu_env *env,
- struct dt_device *dev, cfs_kstatfs_t *osfs);
+ struct dt_device *dev, struct obd_statfs *osfs);
/**
* Create transaction, described by \a param.
*/
* handling device state, mostly for tests
*/
int (*dt_sync)(const struct lu_env *env, struct dt_device *dev);
- void (*dt_ro)(const struct lu_env *env, struct dt_device *dev);
+ int (*dt_ro)(const struct lu_env *env, struct dt_device *dev);
/**
* Start a transaction commit asynchronously
*
/** index can be modified */
DT_IND_UPDATE = 1 << 2,
/** index supports records with non-unique (duplicate) keys */
- DT_IND_NONUNQ = 1 << 3
+ 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,
};
/**
const char *filename,
struct lu_fid *fid);
+struct dt_object *dt_find_or_create(const struct lu_env *env,
+ struct dt_device *dt,
+ const struct lu_fid *fid,
+ struct dt_object_format *dof,
+ struct lu_attr *attr);
+
struct dt_object *dt_locate(const struct lu_env *env,
struct dt_device *dev,
const struct lu_fid *fid);
+static inline int dt_object_sync(const struct lu_env *env,
+ struct dt_object *o)
+{
+ LASSERT(o);
+ LASSERT(o->do_ops);
+ LASSERT(o->do_ops->do_object_sync);
+ return o->do_ops->do_object_sync(env, o);
+}
+
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,
dt_obj_version_t dt_version_get(const struct lu_env *env, struct dt_object *o);
+int dt_read(const struct lu_env *env, struct dt_object *dt,
+ struct lu_buf *buf, loff_t *pos);
int dt_record_read(const struct lu_env *env, struct dt_object *dt,
struct lu_buf *buf, loff_t *pos);
int dt_record_write(const struct lu_env *env, struct dt_object *dt,
const struct lu_buf *buf, loff_t *pos, struct thandle *th);
-
static inline struct thandle *dt_trans_create(const struct lu_env *env,
struct dt_device *d)
{
LASSERTF(dt != NULL, "dt is NULL when we want to write record\n");
LASSERT(th != NULL);
+ LASSERT(dt->do_body_ops);
+ LASSERT(dt->do_body_ops->dbo_declare_write);
rc = dt->do_body_ops->dbo_declare_write(env, dt, size, pos, th);
return rc;
}
}
static inline int dt_statfs(const struct lu_env *env, struct dt_device *dev,
- cfs_kstatfs_t *osfs)
+ struct obd_statfs *osfs)
{
LASSERT(dev);
LASSERT(dev->dd_ops);
return dev->dd_ops->dt_sync(env, dev);
}
-static inline void dt_ro(const struct lu_env *env, struct dt_device *dev)
+static inline int dt_ro(const struct lu_env *env, struct dt_device *dev)
{
LASSERT(dev);
LASSERT(dev->dd_ops);
ret = -ENOENT;
return ret;
}
+
+#define LU221_BAD_TIME (0x80000000U + 24 * 3600)
+
#endif /* __LUSTRE_DT_OBJECT_H */