-#define OST_TGT(dev,index) \
- ((dev)->lod_ost_idx[(index) / \
- OST_PTRS_PER_BLOCK]->ldi_ost[(index)%OST_PTRS_PER_BLOCK])
+#define LTD_TGT(ltd, index) \
+ ((ltd)->ltd_tgt_idx[(index) / \
+ TGT_PTRS_PER_BLOCK]->ldi_tgt[(index) % TGT_PTRS_PER_BLOCK])
+
+#define OST_TGT(lod, index) LTD_TGT(&lod->lod_ost_descs, index)
+struct lod_tgt_descs {
+ /* list of known TGTs */
+ struct lod_tgt_desc_idx *ltd_tgt_idx[TGT_PTRS];
+ /* Size of the lod_tgts array, granted to be a power of 2 */
+ __u32 ltd_tgts_size;
+ /* number of registered TGTs */
+ int ltd_tgtnr;
+ /* bitmap of TGTs available */
+ cfs_bitmap_t *ltd_tgt_bitmap;
+ /* TGTs scheduled to be deleted */
+ __u32 ltd_death_row;
+ /* Table refcount used for delayed deletion */
+ int ltd_refcount;
+ /* mutex to serialize concurrent updates to the tgt table */
+ struct mutex ltd_mutex;
+ /* read/write semaphore used for array relocation */
+ struct rw_semaphore ltd_rw_sem;
+};