/* struct rw_semaphore */
#include <linux/rwsem.h>
-/* handle_t, journal_start(), journal_stop() */
-#include <linux/jbd.h>
-/* struct dx_hash_info */
-#include <linux/ldiskfs_fs.h>
/* struct dentry */
#include <linux/dcache.h>
-#include <linux/lustre_iam.h>
/* struct dirent64 */
#include <linux/dirent.h>
+#ifdef HAVE_EXT4_LDISKFS
+#include <ldiskfs/ldiskfs.h>
+#include <ldiskfs/ldiskfs_jbd2.h>
+#define osd_journal_callback_set(handle, func, jcb) jbd2_journal_callback_set(handle, func, jcb)
+#else
+#include <linux/jbd.h>
+#include <linux/ldiskfs_fs.h>
+#include <linux/ldiskfs_jbd.h>
+#define osd_journal_callback_set(handle, func, jcb) journal_callback_set(handle, func, jcb)
+#endif
+
+
/* LUSTRE_OSD_NAME */
#include <obd.h>
/* class_register_type(), class_unregister_type(), class_get_type() */
#include <dt_object.h>
#include "osd_oi.h"
+#include "osd_iam.h"
struct inode;
unsigned long od_capa_timeout;
__u32 od_capa_alg;
struct lustre_capa_key *od_capa_keys;
- struct hlist_head *od_capa_hash;
+ cfs_hlist_head_t *od_capa_hash;
cfs_proc_dir_entry_t *od_proc_entry;
struct lprocfs_stats *od_stats;
* statfs optimization: we cache a bit.
*/
cfs_time_t od_osfs_age;
- struct kstatfs od_kstatfs;
- spinlock_t od_osfs_lock;
+ cfs_kstatfs_t od_kstatfs;
+ cfs_spinlock_t od_osfs_lock;
/**
* The following flag indicates, if it is interop mode or not.
__u32 od_iop_mode;
};
+/**
+ * Storage representation for fids.
+ *
+ * Variable size, first byte contains the length of the whole record.
+ */
+struct osd_fid_pack {
+ unsigned char fp_len;
+ char fp_area[sizeof(struct lu_fid)];
+};
+
struct osd_it_ea_dirent {
+ struct lu_fid oied_fid;
__u64 oied_ino;
__u64 oied_off;
unsigned short oied_namelen;
char oied_name[0];
} __attribute__((packed));
-#define OSD_IT_EA_BUFSIZE CFS_PAGE_SIZE
+/**
+ * as osd_it_ea_dirent (in memory dirent struct for osd) is greater
+ * than lu_dirent struct. osd readdir reads less number of dirent than
+ * required for mdd dir page. so buffer size need to be increased so that
+ * there would be one ext3 readdir for every mdd readdir page.
+ */
+
+#define OSD_IT_EA_BUFSIZE (CFS_PAGE_SIZE + CFS_PAGE_SIZE/4)
/**
* This is iterator's in-memory data structure in interoperability
struct lustre_capa_key oti_capa_key;
struct lustre_capa oti_capa;
- struct lu_fid_pack oti_pack;
-
/**
* following ipd and it structures are used for osd_index_iam_lookup()
* these are defined separately as we might do index operation
struct osd_ctxt oti_ctxt;
#endif
struct lu_env oti_obj_delete_tx_env;
+#define OSD_FID_REC_SZ 32
+ char oti_ldp[OSD_FID_REC_SZ];
+ char oti_ldp2[OSD_FID_REC_SZ];
};
#ifdef LPROCFS
struct osd_device *osd, int op);
#endif
int osd_statfs(const struct lu_env *env, struct dt_device *dev,
- struct kstatfs *sfs);
+ cfs_kstatfs_t *sfs);
/*
* Invariants, assertions.