/**
* Iterator's in-memory data structure for ZAPs
+ *
+ * ZFS does not store . and .. on a disk, instead they are
+ * generated up on request
+ * to follow this format we do the same
*/
struct osd_zap_it {
zap_cursor_t *ozi_zc;
struct osd_object *ozi_obj;
struct lustre_capa *ozi_capa;
- unsigned ozi_reset:1; /* 1 -- no need to advance */
+ unsigned ozi_reset:1; /* 1 -- no need to advance */
+ /* ozi_pos - position of the cursor:
+ * 0 - before any record
+ * 1 - "."
+ * 2 - ".."
+ * 3 - real records */
+ unsigned ozi_pos:3;
union {
char ozi_name[NAME_MAX + 1]; /* file name for dir */
__u64 ozi_key; /* binary key for index files */
uint64_t od_root;
struct osd_oi **od_oi_table;
unsigned int od_oi_count;
- uint64_t od_ost_compat_grp0;
struct osd_seq_list od_seq_list;
unsigned int od_rdonly:1,
int osd_object_sa_update(struct osd_object *obj, sa_attr_type_t type,
void *buf, uint32_t buflen, struct osd_thandle *oh);
int __osd_zap_create(const struct lu_env *env, udmu_objset_t *uos,
- dmu_buf_t **zap_dbp, dmu_tx_t *tx,
- struct lu_attr *la, void *tag, zap_flags_t flags);
+ dmu_buf_t **zap_dbp, dmu_tx_t *tx, struct lu_attr *la,
+ uint64_t parent, void *tag, zap_flags_t flags);
int __osd_object_create(const struct lu_env *env, udmu_objset_t *uos,
- dmu_buf_t **dbp, dmu_tx_t *tx,
- struct lu_attr *la, void *tag);
+ dmu_buf_t **dbp, dmu_tx_t *tx, struct lu_attr *la,
+ uint64_t parent, void *tag);
int __osd_object_free(udmu_objset_t *uos, uint64_t oid, dmu_tx_t *tx);
/* osd_oi.c */
uint64_t osd_get_name_n_idx(const struct lu_env *env, struct osd_device *osd,
const struct lu_fid *fid, char *buf);
int osd_options_init(void);
+int osd_convert_root_to_new_seq(const struct lu_env *env,
+ struct osd_device *o);
/* osd_index.c */
int osd_index_try(const struct lu_env *env, struct dt_object *dt,
const struct dt_index_features *feat);
-
+int osd_fld_lookup(const struct lu_env *env, struct osd_device *osd,
+ const struct lu_fid *fid, struct lu_seq_range *range);
/* osd_xattr.c */
+int __osd_xattr_load(udmu_objset_t *uos, uint64_t dnode, nvlist_t **sa_xattr);
+int __osd_xattr_get_large(const struct lu_env *env, udmu_objset_t *uos,
+ uint64_t xattr, struct lu_buf *buf,
+ const char *name, int *sizep);
int osd_xattr_get(const struct lu_env *env, struct dt_object *dt,
struct lu_buf *buf, const char *name,
struct lustre_capa *capa);