X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=lustre%2Finclude%2Flu_object.h;h=9ceabafb2636f8723d078220fd78cbe574ec8a39;hb=c04adbcd76725a360f411f09c63df785bf7db426;hp=fe35671e36ed5fefe059610146ebe1a47e77629a;hpb=002c2a80266b23c1df02d554fbdc7e5817c42d13;p=fs%2Flustre-release.git diff --git a/lustre/include/lu_object.h b/lustre/include/lu_object.h index fe35671..9ceabaf 100644 --- a/lustre/include/lu_object.h +++ b/lustre/include/lu_object.h @@ -32,7 +32,11 @@ #ifndef __LUSTRE_LU_OBJECT_H #define __LUSTRE_LU_OBJECT_H +#ifdef HAVE_LINUX_STDARG_HEADER +#include +#else #include +#endif #include #include #include @@ -885,6 +889,13 @@ static inline __u32 lu_object_attr(const struct lu_object *o) return o->lo_header->loh_attr & S_IFMT; } +static inline void lu_object_ref_add_atomic(struct lu_object *o, + const char *scope, + const void *source) +{ + lu_ref_add_atomic(&o->lo_header->loh_reference, scope, source); +} + static inline void lu_object_ref_add(struct lu_object *o, const char *scope, const void *source) @@ -1531,7 +1542,7 @@ struct lu_tgt_pool { int lu_tgt_pool_init(struct lu_tgt_pool *op, unsigned int count); int lu_tgt_pool_add(struct lu_tgt_pool *op, __u32 idx, unsigned int min_count); int lu_tgt_pool_remove(struct lu_tgt_pool *op, __u32 idx); -int lu_tgt_pool_free(struct lu_tgt_pool *op); +void lu_tgt_pool_free(struct lu_tgt_pool *op); int lu_tgt_check_index(int idx, struct lu_tgt_pool *osts); int lu_tgt_pool_extend(struct lu_tgt_pool *op, unsigned int min_count); @@ -1541,13 +1552,14 @@ enum lq_flag { LQ_SAME_SPACE, /* the OSTs all have approx. * the same space avail */ LQ_RESET, /* zero current penalties */ + LQ_SF_PROGRESS, /* statfs op in progress */ }; #ifdef HAVE_SERVER_SUPPORT /* round-robin QoS data for LOD/LMV */ struct lu_qos_rr { spinlock_t lqr_alloc; /* protect allocation index */ - __u32 lqr_start_idx; /* start index of new inode */ + atomic_t lqr_start_idx; /* start index of new inode */ __u32 lqr_offset_idx;/* aliasing for start_idx */ int lqr_start_count;/* reseed counter */ struct lu_tgt_pool lqr_pool; /* round-robin optimized list */ @@ -1626,7 +1638,9 @@ struct lu_tgt_desc_idx { struct lu_tgt_desc *ldi_tgt[TGT_PTRS_PER_BLOCK]; }; + /* QoS data for LOD/LMV */ +#define QOS_THRESHOLD_MAX 256 /* should be power of two */ struct lu_qos { struct list_head lq_svr_list; /* lu_svr_qos list */ struct rw_semaphore lq_rw_sem;