X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fliblustre%2Fllite_lib.h;h=efc130b5201ab84c67e6a35e3ea30dccfdf3bf17;hb=b598be8fc36b533f12cfd073413de2005295856a;hp=8c1bec646fc8b5685208ee7a14798f6c5bc9dc2d;hpb=422e5995808bee60407a78020825ab369e1449bd;p=fs%2Flustre-release.git diff --git a/lustre/liblustre/llite_lib.h b/lustre/liblustre/llite_lib.h index 8c1bec6..efc130b 100644 --- a/lustre/liblustre/llite_lib.h +++ b/lustre/liblustre/llite_lib.h @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -36,6 +36,18 @@ #ifndef __LLU_H_ #define __LLU_H_ +#include +#include +#include +#ifdef HAVE_XTIO_H +#include +#endif +#include +#include +#include +#ifdef HAVE_FILE_H +#include +#endif #include #include @@ -54,12 +66,10 @@ /* This should not be "optimized" use ~0ULL because page->index is a long and * 32-bit systems are therefore limited to 16TB in a mapping */ #define PAGE_CACHE_MAXBYTES ((__u64)(~0UL) << CFS_PAGE_SHIFT) - struct ll_file_data { struct obd_client_handle fd_mds_och; __u32 fd_flags; - struct lustre_handle fd_cwlockh; - unsigned long fd_gid; + struct ccc_grouplock fd_grouplock; }; struct llu_sb_info { @@ -69,7 +79,7 @@ struct llu_sb_info { struct lu_fid ll_root_fid; int ll_flags; struct lustre_client_ocd ll_lco; - struct list_head ll_conn_chain; + cfs_list_t ll_conn_chain; struct obd_uuid ll_mds_uuid; struct obd_uuid ll_mds_peer_uuid; @@ -91,7 +101,7 @@ struct llu_inode_info { struct lov_stripe_md *lli_smd; char *lli_symlink_name; - struct semaphore lli_open_sem; + cfs_semaphore_t lli_open_sem; __u64 lli_maxbytes; unsigned long lli_flags; __u64 lli_ioepoch; @@ -116,9 +126,10 @@ struct llu_inode_info { int lli_st_flags; unsigned long lli_st_generation; struct cl_object *lli_clob; + /* the most recent timestamps obtained from mds */ + struct ost_lvb lli_lvb; }; - static inline struct llu_sb_info *llu_fs2sbi(struct filesys *fs) { return (struct llu_sb_info*)(fs->fs_private); @@ -129,11 +140,18 @@ static inline struct llu_inode_info *llu_i2info(struct inode *inode) return (struct llu_inode_info*)(inode->i_private); } +static inline int ll_inode_flags(struct inode *inode) +{ + return llu_i2info(inode)->lli_st_flags; +} + static inline struct intnl_stat *llu_i2stat(struct inode *inode) { return &inode->i_stbuf; } +#define ll_inode_blksize(inode) (llu_i2stat(inode)->st_blksize) + static inline struct llu_sb_info *llu_i2sbi(struct inode *inode) { return llu_i2info(inode)->lli_sbi; @@ -228,13 +246,14 @@ extern struct mount_option_s mount_option; /* super.c */ void llu_update_inode(struct inode *inode, struct lustre_md *md); void obdo_to_inode(struct inode *dst, struct obdo *src, obd_flag valid); -void obdo_from_inode(struct obdo *dst, struct inode *src, obd_flag valid); int ll_it_open_error(int phase, struct lookup_intent *it); struct inode *llu_iget(struct filesys *fs, struct lustre_md *md); -int llu_inode_getattr(struct inode *inode, struct obdo *obdo); +int llu_inode_getattr(struct inode *inode, struct obdo *obdo, + __u64 ioepoch, int sync); int llu_md_setattr(struct inode *inode, struct md_op_data *op_data, struct md_open_data **mod); int llu_setattr_raw(struct inode *inode, struct iattr *attr); +int llu_put_grouplock(struct inode *inode, unsigned long arg); extern struct fssw_ops llu_fssw_ops; @@ -246,15 +265,18 @@ void llu_finish_md_op_data(struct md_op_data *op_data); int llu_create(struct inode *dir, struct pnode_base *pnode, int mode); int llu_local_open(struct llu_inode_info *lli, struct lookup_intent *it); int llu_iop_open(struct pnode *pnode, int flags, mode_t mode); +void llu_done_writing_attr(struct inode *inode, struct md_op_data *op_data); int llu_md_close(struct obd_export *md_exp, struct inode *inode); +void llu_pack_inode2opdata(struct inode *inode, struct md_op_data *op_data, + struct lustre_handle *fh); int llu_file_release(struct inode *inode); -int llu_sizeonmds_update(struct inode *inode, struct lustre_handle *fh, - __u64 ioepoch); +int llu_som_update(struct inode *inode, struct md_op_data *op_data); int llu_iop_close(struct inode *inode); _SYSIO_OFF_T llu_iop_pos(struct inode *ino, _SYSIO_OFF_T off); int llu_vmtruncate(struct inode * inode, loff_t offset, obd_flag obd_flags); void obdo_refresh_inode(struct inode *dst, struct obdo *src, obd_flag valid); int llu_objects_destroy(struct ptlrpc_request *request, struct inode *dir); +void llu_ioepoch_open(struct llu_inode_info *lli, __u64 ioepoch); /* rw.c */ int llu_iop_read(struct inode *ino, struct ioctx *ioctxp); @@ -379,9 +401,9 @@ static inline struct slp_io *slp_env_io(const struct lu_env *env) #define cl_i2info(info) llu_i2info(info) #define cl_inode_mode(inode) (llu_i2stat(inode)->st_mode) #define cl_i2sbi llu_i2sbi -#define cl_isize_read(inode) (llu_i2stat(inode)->st_size) -#define cl_isize_write(inode,kms) do{llu_i2stat(inode)->st_size = kms;}while(0) -#define cl_isize_write_nolock(inode,kms) do{llu_i2stat(inode)->st_size = kms;}while(0) +#define cl_isize_read(inode) (llu_i2stat(inode)->st_size) +#define cl_isize_write(inode,kms) do{llu_i2stat(inode)->st_size = kms;}while(0) +#define cl_isize_write_nolock(inode,kms) cl_isize_write(inode,kms) static inline void cl_isize_lock(struct inode *inode, int lsmlock) {