X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fosd-zfs%2Fosd_internal.h;h=6ad66cbbd7d03a0304af026ac5e7db97a0afade3;hp=b604b215933ab3f13d0ef33379fa08cbd3a8ea41;hb=69940d2b3a445284e7e10ea04e8cb72ee37a8724;hpb=a00a07567d4909251e58900a9e5ea27157960fd4 diff --git a/lustre/osd-zfs/osd_internal.h b/lustre/osd-zfs/osd_internal.h index b604b21..6ad66cb 100644 --- a/lustre/osd-zfs/osd_internal.h +++ b/lustre/osd-zfs/osd_internal.h @@ -369,8 +369,6 @@ struct osd_object { unsigned char oo_recusize; /* unit size */ }; }; - - }; int osd_statfs(const struct lu_env *, struct dt_device *, struct obd_statfs *); @@ -670,6 +668,27 @@ osd_zap_create_flags(objset_t *os, int normflags, zap_flags_t flags, 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, @@ -688,6 +707,12 @@ osd_zap_create_flags(objset_t *os, int normflags, zap_flags_t flags, 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 @@ -698,10 +723,6 @@ osd_zap_create_flags(objset_t *os, int normflags, zap_flags_t flags, 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;