#define MAX_OBD_DEVICES 8192
-/* this is really local to the OSC */
-struct loi_oap_pages {
- cfs_list_t lop_pending;
- cfs_list_t lop_urgent;
- cfs_list_t lop_pending_group;
- int lop_num_pending;
-};
-
struct osc_async_rc {
int ar_rc;
int ar_force_sync;
int loi_ost_idx; /* OST stripe index in lov_tgt_desc->tgts */
int loi_ost_gen; /* generation of this loi_ost_idx */
- /* used by the osc to keep track of what objects to build into rpcs */
- struct loi_oap_pages loi_read_lop;
- struct loi_oap_pages loi_write_lop;
- cfs_list_t loi_ready_item;
- cfs_list_t loi_hp_ready_item;
- cfs_list_t loi_write_item;
- cfs_list_t loi_read_item;
-
unsigned long loi_kms_valid:1;
__u64 loi_kms; /* known minimum size */
struct ost_lvb loi_lvb;
static inline void loi_init(struct lov_oinfo *loi)
{
- CFS_INIT_LIST_HEAD(&loi->loi_read_lop.lop_pending);
- CFS_INIT_LIST_HEAD(&loi->loi_read_lop.lop_urgent);
- CFS_INIT_LIST_HEAD(&loi->loi_read_lop.lop_pending_group);
- CFS_INIT_LIST_HEAD(&loi->loi_write_lop.lop_pending);
- CFS_INIT_LIST_HEAD(&loi->loi_write_lop.lop_urgent);
- CFS_INIT_LIST_HEAD(&loi->loi_write_lop.lop_pending_group);
- CFS_INIT_LIST_HEAD(&loi->loi_ready_item);
- CFS_INIT_LIST_HEAD(&loi->loi_hp_ready_item);
- CFS_INIT_LIST_HEAD(&loi->loi_write_item);
- CFS_INIT_LIST_HEAD(&loi->loi_read_item);
}
struct lov_stripe_md {
* Exact type of ->cl_loi_list_lock is defined in arch/obd.h together
* with client_obd_list_{un,}lock() and
* client_obd_list_lock_{init,done}() functions.
+ *
+ * NB by Jinshan: though field names are still _loi_, but actually
+ * osc_object{}s are in the list.
*/
client_obd_lock_t cl_loi_list_lock;
cfs_list_t cl_loi_ready_list;