#ifndef LLITE_INTERNAL_H
#define LLITE_INTERNAL_H
-/* default to about 40meg of readahead on a given system. That much tied
- * up in 512k readahead requests serviced at 40ms each is about 1GB/s. */
-#define SBI_DEFAULT_RA_MAX ((40 << 20) >> PAGE_CACHE_SHIFT)
-
struct ll_sb_info {
- /* this protects pglist and max_r_a_pages. It isn't safe to
- * grab from interrupt contexts */
- spinlock_t ll_lock;
struct obd_uuid ll_sb_uuid;
+// struct lustre_handle ll_mdc_conn;
struct obd_export *ll_mdc_exp;
struct obd_export *ll_osc_exp;
struct proc_dir_entry* ll_proc_root;
obd_id ll_rootino; /* number of root inode */
+ struct obd_uuid ll_mds_uuid;
+ struct obd_uuid ll_mds_peer_uuid;
struct lustre_mount_data *ll_lmd;
char *ll_instance;
int ll_flags;
+ wait_queue_head_t ll_commitcbd_waitq;
+ wait_queue_head_t ll_commitcbd_ctl_waitq;
+ int ll_commitcbd_flags;
+ struct task_struct *ll_commitcbd_thread;
+ time_t ll_commitcbd_waketime;
+ time_t ll_commitcbd_timeout;
+ spinlock_t ll_commitcbd_lock;
struct list_head ll_conn_chain; /* per-conn chain of SBs */
struct hlist_head ll_orphan_dentry_list; /*please don't ask -p*/
struct lprocfs_stats *ll_stats; /* lprocfs stats counter */
+ spinlock_t ll_pglist_lock;
unsigned long ll_pglist_gen;
struct list_head ll_pglist;
-
- unsigned long ll_read_ahead_pages;
- unsigned long ll_max_read_ahead_pages;
-
};
struct ll_readahead_state {
spinlock_t ras_lock;
- unsigned long ras_last_readpage, ras_consecutive;
- unsigned long ras_window_start, ras_window_len;
- unsigned long ras_next_readahead;
-
+ unsigned long ras_last, ras_window, ras_next_index;
};
extern kmem_cache_t *ll_file_data_slab;
int ll_prepare_write(struct file *, struct page *, unsigned from, unsigned to);
int ll_commit_write(struct file *, struct page *, unsigned from, unsigned to);
void ll_inode_fill_obdo(struct inode *inode, int cmd, struct obdo *oa);
-void ll_ap_completion(void *data, int cmd, struct obdo *oa, int rc);
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
+#define ll_ap_completion ll_ap_completion_24
+void ll_ap_completion_24(void *data, int cmd, int rc);
+#else
+#define ll_ap_completion ll_ap_completion_26
+void ll_ap_completion_26(void *data, int cmd, int rc);
+#endif
void ll_removepage(struct page *page);
+int ll_sync_page(struct page *page);
int ll_readpage(struct file *file, struct page *page);
struct ll_async_page *llap_from_cookie(void *cookie);
struct ll_async_page *llap_from_page(struct page *page);
-struct ll_async_page *llap_cast_private(struct page *page);
void ll_readahead_init(struct inode *inode, struct ll_readahead_state *ras);
void ll_truncate(struct inode *inode);
/* llite/file.c */
extern struct file_operations ll_file_operations;
extern struct inode_operations ll_file_inode_operations;
+extern struct inode_operations ll_special_inode_operations;
extern int ll_inode_revalidate_it(struct dentry *, struct lookup_intent *);
int ll_extent_lock(struct ll_file_data *, struct inode *,
struct lov_stripe_md *, int mode, ldlm_policy_data_t *,
int ll_file_release(struct inode *inode, struct file *file);
int ll_lsm_getattr(struct obd_export *, struct lov_stripe_md *, struct obdo *);
int ll_glimpse_size(struct inode *inode, struct ost_lvb *lvb);
-int ll_local_open(struct file *file, struct lookup_intent *it);
-int ll_mdc_close(struct obd_export *mdc_exp, struct inode *inode,
- struct file *file);
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0))
int ll_getattr(struct vfsmount *mnt, struct dentry *de,
struct lookup_intent *it, struct kstat *stat);
/* llite/llite_lib.c */
+extern struct super_operations ll_super_operations;
extern struct super_operations lustre_super_operations;
char *ll_read_opt(const char *opt, char *data);
int ll_fill_super(struct super_block *sb, void *data, int silent);
int lustre_fill_super(struct super_block *sb, void *data, int silent);
void lustre_put_super(struct super_block *sb);
+void ll_put_super(struct super_block *sb);
struct inode *ll_inode_from_lock(struct ldlm_lock *lock);
void ll_clear_inode(struct inode *inode);
int ll_attr2inode(struct inode *inode, struct iattr *attr, int trunc);
int ll_statfs(struct super_block *sb, struct kstatfs *sfs);
int ll_statfs_internal(struct super_block *sb, struct obd_statfs *osfs,
unsigned long maxage);
-void ll_update_inode(struct inode *inode, struct mds_body *body,
- struct lov_stripe_md *lsm);
+void ll_update_inode(struct inode *inode, struct lustre_md *);
int it_disposition(struct lookup_intent *it, int flag);
void it_set_disposition(struct lookup_intent *it, int flag);
void ll_read_inode2(struct inode *inode, void *opaque);
int ll_iocontrol(struct inode *inode, struct file *file,
unsigned int cmd, unsigned long arg);
void ll_umount_begin(struct super_block *sb);
-int ll_prep_inode(struct obd_export *exp, struct inode **inode,
+int ll_prep_inode(struct obd_export *, struct obd_export *, struct inode **inode,
struct ptlrpc_request *req, int offset, struct super_block *);
__u32 get_uuid2int(const char *name, int len);
struct dentry *ll_fh_to_dentry(struct super_block *sb, __u32 *data, int len,
int fhtype, int parent);
int ll_dentry_to_fh(struct dentry *, __u32 *datap, int *lenp, int need_parent);
-
-/* llite/special.c */
-extern struct inode_operations ll_special_inode_operations;
-extern struct file_operations ll_special_chr_inode_fops;
-extern struct file_operations ll_special_chr_file_fops;
-extern struct file_operations ll_special_blk_inode_fops;
-extern struct file_operations ll_special_fifo_inode_fops;
-extern struct file_operations ll_special_fifo_file_fops;
-extern struct file_operations ll_special_sock_inode_fops;
+int null_if_equal(struct ldlm_lock *lock, void *data);
/* llite/symlink.c */
extern struct inode_operations ll_fast_symlink_inode_operations;
{
mdc_pack_fid(fid, inode->i_ino, inode->i_generation,
inode->i_mode & S_IFMT);
+ LASSERT(ll_i2info(inode));
+ fid->mds = ll_i2info(inode)->lli_mds;
}
static inline int ll_mds_max_easize(struct super_block *sb)