#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;
/**
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
*
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 */
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;
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
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;
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;
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,
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;
#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
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;
}
LASSERT(dn->dn_bonus);
db = dn->dn_bonus;
- DB_DNODE_EXIT(db);
dmu_buf_rele(&db->db, osd_obj_tag);
}
#define dmu_tx_mark_netfree(tx)
#endif
+#ifndef HAVE_ZFS_INODE_TIMESPEC
+#define inode_timespec_t timestruc_t
+#endif
+
#endif /* _OSD_INTERNAL_H */