X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=lustre%2Finclude%2Flclient.h;h=87361eb99a9eeb77010283f5fb7e9f3c715dc0a7;hb=303f41aa0ff07a43a31e397a3d163a6b8b6e4864;hp=4886479fd08fbdbe95b1cbf0d7a8ab2fad920771;hpb=3c187a5014701e0d7247e428e4a1e5076954ca89;p=fs%2Flustre-release.git diff --git a/lustre/include/lclient.h b/lustre/include/lclient.h index 4886479..87361eb 100644 --- a/lustre/include/lclient.h +++ b/lustre/include/lclient.h @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -48,15 +48,15 @@ int cl_glimpse_lock(const struct lu_env *env, struct cl_io *io, struct inode *inode, struct cl_object *clob); /** - * Locking policy for truncate. + * Locking policy for setattr. */ -enum ccc_trunc_lock_type { +enum ccc_setattr_lock_type { /** Locking is done by server */ - TRUNC_NOLOCK, + SETATTR_NOLOCK, /** Extent lock is enqueued */ - TRUNC_EXTENT, + SETATTR_EXTENT_LOCK, /** Existing local extent lock is used */ - TRUNC_MATCH + SETATTR_MATCH_LOCK }; @@ -87,9 +87,9 @@ struct ccc_io { union { struct { - int cui_locks_released; - enum ccc_trunc_lock_type cui_local_lock; - } trunc; + int cui_locks_released; + enum ccc_setattr_lock_type cui_local_lock; + } setattr; } u; /** * True iff io is processing glimpse right now. @@ -135,6 +135,13 @@ static inline struct cl_attr *ccc_env_thread_attr(const struct lu_env *env) return attr; } +static inline struct cl_io *ccc_env_thread_io(const struct lu_env *env) +{ + struct cl_io *io = &ccc_env_info(env)->cti_io; + memset(io, 0, sizeof(*io)); + return io; +} + struct ccc_session { struct ccc_io cs_ios; }; @@ -167,7 +174,7 @@ struct ccc_object { * * \see ccc_page::cpg_pending_linkage */ - struct list_head cob_pending_list; + cfs_list_t cob_pending_list; /** * Access this counter is protected by inode->i_sem. Now that @@ -180,7 +187,7 @@ struct ccc_object { * * \see ll_vm_open(), ll_vm_close(). */ - atomic_t cob_mmap_cnt; + cfs_atomic_t cob_mmap_cnt; }; /** @@ -198,7 +205,7 @@ struct ccc_page { * that is, never iterated through, only checked for list_empty(), but * having a list is useful for debugging. */ - struct list_head cpg_pending_linkage; + cfs_list_t cpg_pending_linkage; /** VM page */ cfs_page_t *cpg_page; }; @@ -344,9 +351,8 @@ cfs_page_t *cl2vm_page (const struct cl_page_slice *slice); struct inode *ccc_object_inode(const struct cl_object *obj); struct ccc_object *cl_inode2ccc (struct inode *inode); -int cl_setattr_do_truncate(struct inode *inode, loff_t size, - struct obd_capa *capa); -int cl_setattr_ost(struct inode *inode, struct obd_capa *capa); +int cl_setattr_ost(struct inode *inode, const struct iattr *attr, + struct obd_capa *capa); struct cl_page *ccc_vmpage_page_transient(cfs_page_t *vmpage); int ccc_object_invariant(const struct cl_object *obj); @@ -355,7 +361,7 @@ void cl_inode_fini(struct inode *inode); int cl_local_size(struct inode *inode); __u16 ll_dirent_type_get(struct lu_dirent *ent); -ino_t cl_fid_build_ino(const struct lu_fid *fid); +__u64 cl_fid_build_ino(const struct lu_fid *fid, int api32); __u32 cl_fid_build_gen(const struct lu_fid *fid); #ifdef INVARIANT_CHECK @@ -378,6 +384,7 @@ int cl_ocd_update(struct obd_device *host, struct ccc_grouplock { struct lu_env *cg_env; + struct cl_io *cg_io; struct cl_lock *cg_lock; unsigned long cg_gid; };