unsigned char oo_recusize; /* unit size */
};
};
-
-
};
int osd_statfs(const struct lu_env *, struct dt_device *, struct obd_statfs *);
DMU_OT_SA, DN_BONUS_SIZE(dnodesize),
dnodesize, tx);
}
+
+static inline int
+osd_obj_bonuslen(struct osd_object *obj)
+{
+ int bonuslen = DN_BONUS_SIZE(DNODE_MIN_SIZE);
+
+ if (obj->oo_dn != NULL && obj->oo_dn->dn_num_slots != 0) {
+ bonuslen = DN_SLOTS_TO_BONUSLEN(obj->oo_dn->dn_num_slots);
+ } else {
+ objset_t *os = osd_dtobj2objset(&obj->oo_dt);
+ int dnodesize;
+
+ if (os != NULL) {
+ dnodesize = dmu_objset_dnodesize(os);
+ if (dnodesize != 0)
+ bonuslen = DN_BONUS_SIZE(dnodesize);
+ }
+ }
+
+ return bonuslen;
+}
#else
static inline uint64_t
osd_dmu_object_alloc(objset_t *os, dmu_object_type_t objtype, int blocksize,
indirect_blockshift, DMU_OT_SA,
DN_MAX_BONUSLEN, tx);
}
+
+static inline int
+osd_obj_bonuslen(struct osd_object *obj)
+{
+ return DN_MAX_BONUSLEN;
+}
#endif /* HAVE_DMU_OBJECT_ALLOC_DNSIZE */
#ifdef HAVE_DMU_PREFETCH_6ARG
dmu_prefetch((os), (obj), (lvl), (off))
#endif
-#ifndef DN_MAX_BONUSLEN
-#define DN_MAX_BONUSLEN DN_OLD_MAX_BONUSLEN
-#endif
-
static inline void osd_dnode_rele(dnode_t *dn)
{
dmu_buf_impl_t *db;