};
struct obd_type {
- struct list_head typ_chain;
struct obd_ops *typ_dt_ops;
struct md_ops *typ_md_ops;
struct proc_dir_entry *typ_procroot;
- struct proc_dir_entry *typ_procsym;
struct dentry *typ_debugfs_entry;
#ifdef HAVE_SERVER_SUPPORT
bool typ_sym_filter;
#endif
- char *typ_name;
int typ_refcnt;
struct lu_device_type *typ_lu;
spinlock_t obd_type_lock;
struct kobject typ_kobj;
};
+#define typ_name typ_kobj.name
struct brw_page {
u64 off;
__u32 cl_supp_cksum_types;
/* checksum algorithm to be used */
enum cksum_types cl_cksum_type;
+ /* preferred checksum algorithm to be used */
+ enum cksum_types cl_preferred_cksum_type;
/* also protected by the poorly named _loi_list_lock lock above */
struct osc_async_rc cl_ar;
/* allow statfs data caching for 1 second */
#define OBD_STATFS_CACHE_SECONDS 1
+/* arbitrary maximum. larger would be useless, allows catching bogus input */
+#define OBD_STATFS_CACHE_MAX_AGE 3600 /* seconds */
#define lov_tgt_desc lu_tgt_desc
spinlock_t lmv_lock;
struct lmv_desc desc;
- struct mutex lmv_init_mutex;
int connected;
int max_easize;
int max_def_easize;
u32 lmv_statfs_start;
- u32 tgts_size; /* size of tgts array */
- struct lmv_tgt_desc **tgts;
+ struct lu_tgt_descs lmv_mdt_descs;
struct obd_connect_data conn_data;
struct kobject *lmv_tgts_kobj;
__u16 lnb_guards[MAX_GUARD_NUMBER];
__u16 lnb_guard_rpc:1;
__u16 lnb_guard_disk:1;
+ /* separate unlock for read path to allow shared access */
+ __u16 lnb_locked:1;
};
struct tgt_thread_big_cache {
struct llog_ctxt *olg_ctxts[LLOG_MAX_CTXTS];
wait_queue_head_t olg_waitq;
spinlock_t olg_lock;
- struct mutex olg_cat_processing;
};
/* corresponds to one of the obd's */
time64_t obd_recovery_start;
/* seconds, for lprocfs_status */
time64_t obd_recovery_end;
- time64_t obd_recovery_time_hard;
- time64_t obd_recovery_timeout;
+ /* To tell timeouts from time stamps Lustre uses time_t
+ * instead of time64_t.
+ */
+ time_t obd_recovery_time_hard;
+ time_t obd_recovery_timeout;
int obd_recovery_ir_factor;
/* new recovery stuff from CMD2 */
bool op_post_migrate;
/* used to access dir with bash hash */
__u32 op_stripe_index;
+ /* Archive ID for PCC attach */
+ __u32 op_archive_id;
};
struct md_callback {
struct lmv_foreign_md *lfm;
};
struct lmv_stripe_md *default_lmv;
-#ifdef CONFIG_FS_POSIX_ACL
+#ifdef CONFIG_LUSTRE_FS_POSIX_ACL
struct posix_acl *posix_acl;
#endif
};
struct lu_fid *fid);
int (*m_unpackmd)(struct obd_export *exp, struct lmv_stripe_md **plsm,
const union lmv_mds_md *lmv, size_t lmv_size);
+ int (*m_rmfid)(struct obd_export *exp, struct fid_array *fa, int *rcs,
+ struct ptlrpc_request_set *set);
};
static inline struct md_open_data *obd_mod_alloc(void)
cli->cl_dirty_max_pages = dirty_max;
}
- if (cli->cl_dirty_max_pages > totalram_pages / 8)
- cli->cl_dirty_max_pages = totalram_pages / 8;
+ if (cli->cl_dirty_max_pages > cfs_totalram_pages() / 8)
+ cli->cl_dirty_max_pages = cfs_totalram_pages() / 8;
/* This value is exported to userspace through the max_dirty_mb
* parameter. So we round up the number of pages to make it a round