X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=lustre%2Fosd-zfs%2Fosd_internal.h;h=4e5b4807e7acc266ac6d247778562e53f0c73982;hb=424f3d1ac0ce065b77058afb093f791275ecf999;hp=edb881c43df103101c393456e126cac96df9da83;hpb=106abc184d8b57de560dc1874683ce5487dcf30a;p=fs%2Flustre-release.git diff --git a/lustre/osd-zfs/osd_internal.h b/lustre/osd-zfs/osd_internal.h index edb881c..4e5b480 100644 --- a/lustre/osd-zfs/osd_internal.h +++ b/lustre/osd-zfs/osd_internal.h @@ -97,6 +97,12 @@ #define OSD_GRANT_FOR_LOCAL_OIDS (2ULL << 20) /* 2MB for last_rcvd, ... */ +#define OSD_MAX_CACHE_SIZE OBD_OBJECT_EOF + +#ifndef HAVE_ZFS_REFCOUNT_ADD +#define zfs_refcount_add refcount_add +#endif + extern struct dt_body_operations osd_body_scrub_ops; /** @@ -113,6 +119,13 @@ struct osd_it_quota { unsigned oiq_reset:1; /* 1 -- no need to advance */ }; +enum osd_zap_pos { + OZI_POS_INIT = 0, + OZI_POS_DOT = 1, /* cursor at . */ + OZI_POS_DOTDOT = 2, /* cursor at .. */ + OZI_POS_REAL = 3, /* cursor at real entries */ +}; + /** * Iterator's in-memory data structure for ZAPs * @@ -124,12 +137,8 @@ struct osd_zap_it { zap_cursor_t *ozi_zc; struct osd_object *ozi_obj; unsigned ozi_reset:1; /* 1 -- no need to advance */ - /* ozi_pos - position of the cursor: - * 0 - before any record - * 1 - "." - * 2 - ".." - * 3 - real records */ - unsigned ozi_pos:3; + /* ozi_pos - position of the cursor */ + enum osd_zap_pos ozi_pos; union { char ozi_name[MAXNAMELEN]; /* file name for dir */ __u64 ozi_key; /* binary key for index files */ @@ -223,10 +232,6 @@ struct osd_thread_info { const struct lu_env *oti_env; struct lu_fid oti_fid; - /* - * XXX temporary: for ->i_op calls. - */ - struct timespec oti_time; struct ost_id oti_ostid; @@ -277,8 +282,7 @@ struct osd_thandle { struct list_head ot_sa_list; dmu_tx_t *ot_tx; struct lquota_trans ot_quota_trans; - __u32 ot_write_commit:1, - ot_assigned:1; + __u32 ot_assigned:1; }; #define OSD_OI_NAME_SIZE 24 @@ -339,14 +343,15 @@ struct osd_device { od_xattr_in_sa:1, od_is_ost:1, od_in_init:1, - od_posix_acl:1; + od_posix_acl:1, + od_nonrotational:1; unsigned int od_dnsize; int od_index_backup_stop; enum lustre_index_backup_policy od_index_backup_policy; char od_mntdev[128]; char od_svname[128]; - char od_uuid[16]; + uuid_t od_uuid; int od_connects; int od_index; @@ -359,8 +364,11 @@ struct osd_device { dnode_t *od_projectused_dn; #endif - /* quota slave instance */ - struct qsd_instance *od_quota_slave; + /* quota slave instance for inode */ + struct qsd_instance *od_quota_slave_md; + + /* quota slave instance for block */ + struct qsd_instance *od_quota_slave_dt; struct brw_stats od_brw_stats; atomic_t od_r_in_flight; @@ -385,8 +393,17 @@ struct osd_device { struct list_head od_index_backup_list; struct list_head od_index_restore_list; spinlock_t od_lock; + unsigned long long od_readcache_max_filesize; }; +static inline struct qsd_instance *osd_def_qsd(struct osd_device *osd) +{ + if (osd->od_is_ost) + return osd->od_quota_slave_dt; + else + return osd->od_quota_slave_md; +} + enum osd_destroy_type { OSD_DESTROY_NONE = 0, OSD_DESTROY_SYNC = 1, @@ -448,7 +465,8 @@ struct osd_object { struct lu_object_header *oo_header; }; -int osd_statfs(const struct lu_env *, struct dt_device *, struct obd_statfs *); +int osd_statfs(const struct lu_env *, struct dt_device *, struct obd_statfs *, + struct obd_statfs_info *); extern const struct dt_index_operations osd_acct_index_ops; extern struct lu_device_operations osd_lu_ops; extern struct dt_index_operations osd_dir_ops; @@ -794,11 +812,11 @@ static inline uint32_t attrs_zfs2fs(const uint64_t flags) #endif #ifndef HAVE_DSL_POOL_CONFIG -static inline void dsl_pool_config_enter(dsl_pool_t *dp, char *name) +static inline void dsl_pool_config_enter(dsl_pool_t *dp, void *name) { } -static inline void dsl_pool_config_exit(dsl_pool_t *dp, char *name) +static inline void dsl_pool_config_exit(dsl_pool_t *dp, void *name) { } #endif @@ -923,7 +941,7 @@ static inline int osd_sa_handle_get(struct osd_object *obj) SA_HDL_PRIVATE, &obj->oo_sa_hdl); if (rc) return rc; - refcount_add(&dn->dn_bonus->db_holds, osd_obj_tag); + zfs_refcount_add(&dn->dn_bonus->db_holds, osd_obj_tag); return 0; } @@ -934,7 +952,6 @@ static inline void osd_dnode_rele(dnode_t *dn) LASSERT(dn->dn_bonus); db = dn->dn_bonus; - DB_DNODE_EXIT(db); dmu_buf_rele(&db->db, osd_obj_tag); } @@ -1094,4 +1111,8 @@ osd_index_backup(const struct lu_env *env, struct osd_device *osd, bool backup) #define dmu_tx_mark_netfree(tx) #endif +#ifndef HAVE_ZFS_INODE_TIMESPEC +#define inode_timespec_t timestruc_t +#endif + #endif /* _OSD_INTERNAL_H */