X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=lustre%2Fllite%2Fllite_internal.h;h=b0d2fa3081b91df1a54f4961b2d5246bf9975ae7;hb=eef0dc3356976bad84f7aefb6595f10443a5980d;hp=d51ff14fbb14a23268315514b7ef8db344bdbb5a;hpb=55796d973411e77f1952c577b80168a2b4f24e41;p=fs%2Flustre-release.git diff --git a/lustre/llite/llite_internal.h b/lustre/llite/llite_internal.h index d51ff14..b0d2fa3 100644 --- a/lustre/llite/llite_internal.h +++ b/lustre/llite/llite_internal.h @@ -21,7 +21,7 @@ struct ll_sb_info { struct obd_uuid ll_mds_uuid; struct obd_uuid ll_mds_peer_uuid; struct lustre_mount_data *ll_lmd; - char *ll_instance; + char *ll_instance; int ll_flags; wait_queue_head_t ll_commitcbd_waitq; @@ -38,7 +38,7 @@ struct ll_sb_info { struct lprocfs_stats *ll_stats; /* lprocfs stats counter */ - spinlock_t ll_pglist_lock; + spinlock_t ll_pglist_lock; unsigned long ll_pglist_gen; struct list_head ll_pglist; }; @@ -49,13 +49,15 @@ struct ll_readahead_state { }; extern kmem_cache_t *ll_file_data_slab; +struct lustre_handle; struct ll_file_data { struct obd_client_handle fd_mds_och; struct ll_readahead_state fd_ras; __u32 fd_flags; + struct lustre_handle fd_cwlockh; + unsigned long fd_gid; }; -struct lustre_handle; struct lov_stripe_md; extern spinlock_t inode_lock; @@ -65,7 +67,7 @@ extern struct proc_dir_entry *proc_lustre_fs_root; #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) # define hlist_del_init list_del_init -#endif +#endif static inline struct inode *ll_info2i(struct ll_inode_info *lli) { @@ -92,20 +94,16 @@ static inline void ll_i2uctxt(struct ll_uctxt *ctxt, struct inode *i1, ctxt->gid2 = i2->i_gid; else ctxt->gid2 = -1; - } else + } else ctxt->gid2 = 0; } struct it_cb_data { - struct inode *icbd_parent; - struct dentry **icbd_childp; - obd_id hash; + struct inode *icbd_parent; + struct dentry **icbd_childp; + obd_id hash; }; -#define LL_PRIVBITS_READ 0 -#define LL_PRIVBITS__LAST 1 -#define LL_PRIVBITS_MASK ((1 << LL_PRIVBITS__LAST) - 1) - #define LLAP_MAGIC 98764321 struct ll_async_page { @@ -114,14 +112,14 @@ struct ll_async_page { struct page *llap_page; struct list_head llap_pending_write; /* only trust these if the page lock is providing exclusion */ - int llap_write_queued:1, + int llap_write_queued:1, llap_defer_uptodate:1; struct list_head llap_proc_item; }; -#define LL_CDEBUG_PAGE(page, STR) \ - CDEBUG(D_PAGE, "page %p map %p ind %lu priv %0lx: " STR, \ - page, page->mapping, page->index, page->private) +#define LL_CDEBUG_PAGE(mask, page, fmt, arg...) \ + CDEBUG(mask, "page %p map %p ind %lu priv %0lx: " fmt, \ + page, page->mapping, page->index, page->private, ## arg) /* llite/lproc_llite.c */ int lprocfs_register_mountpoint(struct proc_dir_entry *parent, @@ -149,39 +147,32 @@ void ll_prepare_mdc_op_data(struct mdc_op_data *, 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); -#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_ap_completion(void *data, int cmd, struct obdo *oa, int rc); 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); -void ll_readahead_init(struct ll_readahead_state *ras); +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, struct ldlm_extent *, - struct lustre_handle *); + struct lov_stripe_md *, int mode, ldlm_policy_data_t *, + struct lustre_handle *, int ast_flags); int ll_extent_unlock(struct ll_file_data *, struct inode *, struct lov_stripe_md *, int mode, struct lustre_handle *); int ll_file_open(struct inode *inode, struct file *file); 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_extent_lock_no_validate(struct ll_file_data *, struct inode *, - struct lov_stripe_md *, int mode, - struct ldlm_extent *, struct lustre_handle *, - int ast_flags); +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); @@ -224,12 +215,22 @@ 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 *exp, 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; + /* llite/symlink.c */ extern struct inode_operations ll_fast_symlink_inode_operations; @@ -256,6 +257,8 @@ int ll_close_thread_start(struct ll_close_queue **lcq_ret); #define LL_SBI_NOLCK 0x1 #define LL_SBI_READAHEAD 0x2 +#define LL_MAX_BLKSIZE (4UL * 1024 * 1024) + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) #define ll_s2sbi(sb) ((struct ll_sb_info *)((sb)->s_fs_info)) void __d_rehash(struct dentry * entry, int lock); @@ -270,7 +273,7 @@ static inline __u64 ll_ts2u64(time_t *time) { return *time; } -#endif +#endif /* don't need an addref as the sb_info should be holding one */ static inline struct obd_export *ll_s2obdexp(struct super_block *sb)