X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fllite%2Fllite_internal.h;h=43186e9bfec14c5d0c557956198204f33dfecfe5;hp=f9b86912bb44dd5d53693f4f5ed8d828667f5f69;hb=aaf5a7adcc310aa09f0b0265d3dc64742099633b;hpb=b9e339b6aebde2d3dd5c6250aed6ec5d4fa5797f diff --git a/lustre/llite/llite_internal.h b/lustre/llite/llite_internal.h index f9b8691..43186e9 100644 --- a/lustre/llite/llite_internal.h +++ b/lustre/llite/llite_internal.h @@ -53,27 +53,18 @@ #endif #ifndef DCACHE_LUSTRE_INVALID -#define DCACHE_LUSTRE_INVALID 0x4000 +#define DCACHE_LUSTRE_INVALID 0x4000000 #endif #define LL_IT2STR(it) ((it) ? ldlm_it2str((it)->it_op) : "0") #define LUSTRE_FPRIVATE(file) ((file)->private_data) -#ifdef HAVE_VFS_INTENT_PATCHES -static inline struct lookup_intent *ll_nd2it(struct nameidata *nd) -{ - return &nd->intent; -} -#endif - struct ll_dentry_data { int lld_cwd_count; int lld_mnt_count; struct obd_client_handle lld_cwd_och; struct obd_client_handle lld_mnt_och; -#ifndef HAVE_VFS_INTENT_PATCHES struct lookup_intent *lld_it; -#endif unsigned int lld_sa_generation; }; @@ -190,9 +181,14 @@ struct ll_inode_info { * before child -- it is me should cleanup the dir readahead. */ void *lli_opendir_key; struct ll_statahead_info *lli_sai; + __u64 lli_sa_pos; struct cl_object *lli_clob; /* the most recent timestamps obtained from mds */ struct ost_lvb lli_lvb; + /** + * serialize normal readdir and statahead-readdir + */ + cfs_semaphore_t lli_readdir_sem; }; /* @@ -502,6 +498,8 @@ struct ll_readahead_state { }; struct ll_file_dir { + __u64 lfd_pos; + __u64 lfd_next; }; extern cfs_mem_cache_t *ll_file_data_slab; @@ -581,8 +579,8 @@ static inline void ll_put_page(struct page *page) extern struct file_operations ll_dir_operations; extern struct inode_operations ll_dir_inode_operations; -struct page *ll_get_dir_page(struct inode *dir, __u64 hash, int exact, - struct ll_dir_chain *chain); +struct page *ll_get_dir_page(struct file *filp, struct inode *dir, __u64 hash, + int exact, struct ll_dir_chain *chain); int ll_get_mdt_idx(struct inode *inode); /* llite/namei.c */ @@ -592,10 +590,8 @@ struct inode *ll_iget(struct super_block *sb, ino_t hash, struct lustre_md *lic); int ll_md_blocking_ast(struct ldlm_lock *, struct ldlm_lock_desc *, void *data, int flag); -#ifndef HAVE_VFS_INTENT_PATCHES struct lookup_intent *ll_convert_intent(struct open_intent *oit, int lookup_flags); -#endif int ll_lookup_it_finish(struct ptlrpc_request *request, struct lookup_intent *it, void *data); @@ -619,7 +615,8 @@ extern struct file_operations ll_file_operations; extern struct file_operations ll_file_operations_flock; extern struct file_operations ll_file_operations_noflock; extern struct inode_operations ll_file_inode_operations; -extern int ll_inode_revalidate_it(struct dentry *, struct lookup_intent *); +extern int ll_inode_revalidate_it(struct dentry *, struct lookup_intent *, + __u64); extern int ll_have_md_lock(struct inode *inode, __u64 bits, ldlm_mode_t l_req_mode); extern ldlm_mode_t ll_take_md_lock(struct inode *inode, __u64 bits, struct lustre_handle *lockh); @@ -704,7 +701,6 @@ void ll_lli_init(struct ll_inode_info *lli); int ll_fill_super(struct super_block *sb); void ll_put_super(struct super_block *sb); void ll_kill_super(struct super_block *sb); -int ll_shrink_cache(int nr_to_scan, gfp_t gfp_mask); struct inode *ll_inode_from_lock(struct ldlm_lock *lock); void ll_clear_inode(struct inode *inode); int ll_setattr_raw(struct inode *inode, struct iattr *attr); @@ -1130,6 +1126,7 @@ struct ll_statahead_info { cfs_list_t sai_entries_sent; /* entries sent out */ cfs_list_t sai_entries_received; /* entries returned */ cfs_list_t sai_entries_stated; /* entries stated */ + pid_t sai_pid; /* pid of statahead itself */ }; int do_statahead_enter(struct inode *dir, struct dentry **dentry, int lookup);