return (0);
}
-zil_replay_func_t *ztest_replay_vector[TX_MAX_TYPE] = {
+zil_replay_func_t ztest_replay_vector[TX_MAX_TYPE] = {
NULL, /* 0 no such transaction type */
- (zil_replay_func_t *)ztest_replay_create, /* TX_CREATE */
+ (zil_replay_func_t)ztest_replay_create, /* TX_CREATE */
NULL, /* TX_MKDIR */
NULL, /* TX_MKXATTR */
NULL, /* TX_SYMLINK */
- (zil_replay_func_t *)ztest_replay_remove, /* TX_REMOVE */
+ (zil_replay_func_t)ztest_replay_remove, /* TX_REMOVE */
NULL, /* TX_RMDIR */
NULL, /* TX_LINK */
NULL, /* TX_RENAME */
- (zil_replay_func_t *)ztest_replay_write, /* TX_WRITE */
- (zil_replay_func_t *)ztest_replay_truncate, /* TX_TRUNCATE */
- (zil_replay_func_t *)ztest_replay_setattr, /* TX_SETATTR */
+ (zil_replay_func_t)ztest_replay_write, /* TX_WRITE */
+ (zil_replay_func_t)ztest_replay_truncate, /* TX_TRUNCATE */
+ (zil_replay_func_t)ztest_replay_setattr, /* TX_SETATTR */
NULL, /* TX_ACL */
NULL, /* TX_CREATE_ACL */
NULL, /* TX_CREATE_ATTR */
uint64_t doi_fill_count; /* number of non-empty blocks */
} dmu_object_info_t;
-typedef void arc_byteswap_func_t(void *buf, size_t size);
+typedef void (*const arc_byteswap_func_t)(void *buf, size_t size);
typedef struct dmu_object_type_info {
dmu_object_byteswap_t ot_byteswap;
char *ot_name;
} dmu_object_type_info_t;
-typedef struct dmu_object_byteswap_info {
- arc_byteswap_func_t *ob_func;
+typedef const struct dmu_object_byteswap_info {
+ arc_byteswap_func_t ob_func;
char *ob_name;
} dmu_object_byteswap_info_t;
extern "C" {
#endif
-typedef struct space_map_ops space_map_ops_t;
+typedef const struct space_map_ops space_map_ops_t;
typedef struct space_map {
avl_tree_t sm_root; /* AVL tree of map segments */
typedef void vdev_hold_func_t(vdev_t *vd);
typedef void vdev_rele_func_t(vdev_t *vd);
-typedef struct vdev_ops {
+typedef const struct vdev_ops {
vdev_open_func_t *vdev_op_open;
vdev_close_func_t *vdev_op_close;
vdev_asize_func_t *vdev_op_asize;
#endif /* HAVE_UIO_RW */
extern zil_get_data_t zfs_get_data;
-extern zil_replay_func_t *zfs_replay_vector[TX_MAX_TYPE];
+extern zil_replay_func_t zfs_replay_vector[TX_MAX_TYPE];
extern int zfsfstype;
#endif /* _KERNEL */
uint64_t txg);
typedef int zil_parse_lr_func_t(zilog_t *zilog, lr_t *lr, void *arg,
uint64_t txg);
-typedef int zil_replay_func_t(void *, char *, boolean_t);
+typedef int (*const zil_replay_func_t)(void *, char *, boolean_t);
typedef int zil_get_data_t(void *arg, lr_write_t *lr, char *dbuf, zio_t *zio);
extern int zil_parse(zilog_t *zilog, zil_parse_blk_func_t *parse_blk_func,
extern void zil_close(zilog_t *zilog);
extern void zil_replay(objset_t *os, void *arg,
- zil_replay_func_t *replay_func[TX_MAX_TYPE]);
+ zil_replay_func_t replay_func[TX_MAX_TYPE]);
extern boolean_t zil_replaying(zilog_t *zilog, dmu_tx_t *tx);
extern void zil_destroy(zilog_t *zilog, boolean_t keep_first);
extern void zil_destroy_sync(zilog_t *zilog, dmu_tx_t *tx);
/*
* Information about each checksum function.
*/
-typedef struct zio_checksum_info {
+typedef const struct zio_checksum_info {
zio_checksum_t *ci_func[2]; /* checksum function for each byteorder */
int ci_correctable; /* number of correctable bits */
int ci_eck; /* uses zio embedded checksum? */
/*
* Information about each compression function.
*/
-typedef struct zio_compress_info {
+typedef const struct zio_compress_info {
zio_compress_func_t *ci_compress; /* compression function */
zio_decompress_func_t *ci_decompress; /* decompression function */
int ci_level; /* level parameter */
if (BP_SHOULD_BYTESWAP(zio->io_bp) && zio->io_error == 0) {
dmu_object_byteswap_t bswap =
DMU_OT_BYTESWAP(BP_GET_TYPE(zio->io_bp));
- arc_byteswap_func_t *func = BP_GET_LEVEL(zio->io_bp) > 0 ?
- byteswap_uint64_array :
- dmu_ot_byteswap[bswap].ob_func;
- func(buf->b_data, hdr->b_size);
+ if (BP_GET_LEVEL(zio->io_bp) > 0)
+ byteswap_uint64_array(buf->b_data, hdr->b_size);
+ else
+ dmu_ot_byteswap[bswap].ob_func(buf->b_data, hdr->b_size);
}
arc_cksum_compute(buf, B_FALSE);
sa_data_op_t action, sa_data_locator_t *locator, void *datastart,
uint16_t buflen, dmu_tx_t *tx);
-arc_byteswap_func_t *sa_bswap_table[] = {
+arc_byteswap_func_t sa_bswap_table[] = {
byteswap_uint64_array,
byteswap_uint32_array,
byteswap_uint16_array,
/*
* Callback vectors for replaying records
*/
-zil_replay_func_t *zfs_replay_vector[TX_MAX_TYPE] = {
- (zil_replay_func_t *)zfs_replay_error, /* no such type */
- (zil_replay_func_t *)zfs_replay_create, /* TX_CREATE */
- (zil_replay_func_t *)zfs_replay_create, /* TX_MKDIR */
- (zil_replay_func_t *)zfs_replay_create, /* TX_MKXATTR */
- (zil_replay_func_t *)zfs_replay_create, /* TX_SYMLINK */
- (zil_replay_func_t *)zfs_replay_remove, /* TX_REMOVE */
- (zil_replay_func_t *)zfs_replay_remove, /* TX_RMDIR */
- (zil_replay_func_t *)zfs_replay_link, /* TX_LINK */
- (zil_replay_func_t *)zfs_replay_rename, /* TX_RENAME */
- (zil_replay_func_t *)zfs_replay_write, /* TX_WRITE */
- (zil_replay_func_t *)zfs_replay_truncate, /* TX_TRUNCATE */
- (zil_replay_func_t *)zfs_replay_setattr, /* TX_SETATTR */
- (zil_replay_func_t *)zfs_replay_acl_v0, /* TX_ACL_V0 */
- (zil_replay_func_t *)zfs_replay_acl, /* TX_ACL */
- (zil_replay_func_t *)zfs_replay_create_acl, /* TX_CREATE_ACL */
- (zil_replay_func_t *)zfs_replay_create, /* TX_CREATE_ATTR */
- (zil_replay_func_t *)zfs_replay_create_acl, /* TX_CREATE_ACL_ATTR */
- (zil_replay_func_t *)zfs_replay_create_acl, /* TX_MKDIR_ACL */
- (zil_replay_func_t *)zfs_replay_create, /* TX_MKDIR_ATTR */
- (zil_replay_func_t *)zfs_replay_create_acl, /* TX_MKDIR_ACL_ATTR */
- (zil_replay_func_t *)zfs_replay_write2, /* TX_WRITE2 */
+zil_replay_func_t zfs_replay_vector[TX_MAX_TYPE] = {
+ (zil_replay_func_t)zfs_replay_error, /* no such type */
+ (zil_replay_func_t)zfs_replay_create, /* TX_CREATE */
+ (zil_replay_func_t)zfs_replay_create, /* TX_MKDIR */
+ (zil_replay_func_t)zfs_replay_create, /* TX_MKXATTR */
+ (zil_replay_func_t)zfs_replay_create, /* TX_SYMLINK */
+ (zil_replay_func_t)zfs_replay_remove, /* TX_REMOVE */
+ (zil_replay_func_t)zfs_replay_remove, /* TX_RMDIR */
+ (zil_replay_func_t)zfs_replay_link, /* TX_LINK */
+ (zil_replay_func_t)zfs_replay_rename, /* TX_RENAME */
+ (zil_replay_func_t)zfs_replay_write, /* TX_WRITE */
+ (zil_replay_func_t)zfs_replay_truncate, /* TX_TRUNCATE */
+ (zil_replay_func_t)zfs_replay_setattr, /* TX_SETATTR */
+ (zil_replay_func_t)zfs_replay_acl_v0, /* TX_ACL_V0 */
+ (zil_replay_func_t)zfs_replay_acl, /* TX_ACL */
+ (zil_replay_func_t)zfs_replay_create_acl, /* TX_CREATE_ACL */
+ (zil_replay_func_t)zfs_replay_create, /* TX_CREATE_ATTR */
+ (zil_replay_func_t)zfs_replay_create_acl, /* TX_CREATE_ACL_ATTR */
+ (zil_replay_func_t)zfs_replay_create_acl, /* TX_MKDIR_ACL */
+ (zil_replay_func_t)zfs_replay_create, /* TX_MKDIR_ATTR */
+ (zil_replay_func_t)zfs_replay_create_acl, /* TX_MKDIR_ACL_ATTR */
+ (zil_replay_func_t)zfs_replay_write2, /* TX_WRITE2 */
};
}
typedef struct zil_replay_arg {
- zil_replay_func_t **zr_replay;
+ zil_replay_func_t *zr_replay;
void *zr_arg;
boolean_t zr_byteswap;
char *zr_lr;
* If this dataset has a non-empty intent log, replay it and destroy it.
*/
void
-zil_replay(objset_t *os, void *arg, zil_replay_func_t *replay_func[TX_MAX_TYPE])
+zil_replay(objset_t *os, void *arg, zil_replay_func_t replay_func[TX_MAX_TYPE])
{
zilog_t *zilog = dmu_objset_zil(os);
const zil_header_t *zh = zilog->zl_header;
* Callback vectors for replaying records.
* Only TX_WRITE is needed for zvol.
*/
-zil_replay_func_t *zvol_replay_vector[TX_MAX_TYPE] = {
- (zil_replay_func_t *)zvol_replay_err, /* no such transaction type */
- (zil_replay_func_t *)zvol_replay_err, /* TX_CREATE */
- (zil_replay_func_t *)zvol_replay_err, /* TX_MKDIR */
- (zil_replay_func_t *)zvol_replay_err, /* TX_MKXATTR */
- (zil_replay_func_t *)zvol_replay_err, /* TX_SYMLINK */
- (zil_replay_func_t *)zvol_replay_err, /* TX_REMOVE */
- (zil_replay_func_t *)zvol_replay_err, /* TX_RMDIR */
- (zil_replay_func_t *)zvol_replay_err, /* TX_LINK */
- (zil_replay_func_t *)zvol_replay_err, /* TX_RENAME */
- (zil_replay_func_t *)zvol_replay_write, /* TX_WRITE */
- (zil_replay_func_t *)zvol_replay_err, /* TX_TRUNCATE */
- (zil_replay_func_t *)zvol_replay_err, /* TX_SETATTR */
- (zil_replay_func_t *)zvol_replay_err, /* TX_ACL */
+zil_replay_func_t zvol_replay_vector[TX_MAX_TYPE] = {
+ (zil_replay_func_t)zvol_replay_err, /* no such transaction type */
+ (zil_replay_func_t)zvol_replay_err, /* TX_CREATE */
+ (zil_replay_func_t)zvol_replay_err, /* TX_MKDIR */
+ (zil_replay_func_t)zvol_replay_err, /* TX_MKXATTR */
+ (zil_replay_func_t)zvol_replay_err, /* TX_SYMLINK */
+ (zil_replay_func_t)zvol_replay_err, /* TX_REMOVE */
+ (zil_replay_func_t)zvol_replay_err, /* TX_RMDIR */
+ (zil_replay_func_t)zvol_replay_err, /* TX_LINK */
+ (zil_replay_func_t)zvol_replay_err, /* TX_RENAME */
+ (zil_replay_func_t)zvol_replay_write, /* TX_WRITE */
+ (zil_replay_func_t)zvol_replay_err, /* TX_TRUNCATE */
+ (zil_replay_func_t)zvol_replay_err, /* TX_SETATTR */
+ (zil_replay_func_t)zvol_replay_err, /* TX_ACL */
};
/*