mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-18 10:21:01 +03:00
Change boolean-like uint8_t fields in znode_t to boolean_t
Given znode_t is an in-core structure, it's more readable to have them as boolean. Also co-locate existing boolean fields with them for space efficiency (expecting 8 booleans to be packed/aligned). Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #9092 Conflicts: include/sys/zfs_znode.h module/zfs/zfs_znode.c
This commit is contained in:
parent
0b96952eef
commit
d38e4ee142
@ -192,10 +192,14 @@ typedef struct znode {
|
|||||||
krwlock_t z_name_lock; /* "master" lock for dirent locks */
|
krwlock_t z_name_lock; /* "master" lock for dirent locks */
|
||||||
zfs_dirlock_t *z_dirlocks; /* directory entry lock list */
|
zfs_dirlock_t *z_dirlocks; /* directory entry lock list */
|
||||||
rangelock_t z_rangelock; /* file range locks */
|
rangelock_t z_rangelock; /* file range locks */
|
||||||
uint8_t z_unlinked; /* file has been unlinked */
|
boolean_t z_unlinked; /* file has been unlinked */
|
||||||
uint8_t z_atime_dirty; /* atime needs to be synced */
|
boolean_t z_atime_dirty; /* atime needs to be synced */
|
||||||
uint8_t z_zn_prefetch; /* Prefetch znodes? */
|
boolean_t z_zn_prefetch; /* Prefetch znodes? */
|
||||||
uint8_t z_moved; /* Has this znode been moved? */
|
boolean_t z_moved; /* Has this znode been moved? */
|
||||||
|
boolean_t z_is_sa; /* are we native sa? */
|
||||||
|
boolean_t z_is_mapped; /* are we mmap'ed */
|
||||||
|
boolean_t z_is_ctldir; /* are we .zfs entry */
|
||||||
|
boolean_t z_is_stale; /* are we stale due to rollback? */
|
||||||
boolean_t z_suspended; /* extra ref from a suspend? */
|
boolean_t z_suspended; /* extra ref from a suspend? */
|
||||||
uint_t z_blksz; /* block size in bytes */
|
uint_t z_blksz; /* block size in bytes */
|
||||||
uint_t z_seq; /* modification sequence number */
|
uint_t z_seq; /* modification sequence number */
|
||||||
@ -213,10 +217,6 @@ typedef struct znode {
|
|||||||
uint64_t z_projid; /* project ID */
|
uint64_t z_projid; /* project ID */
|
||||||
list_node_t z_link_node; /* all znodes in fs link */
|
list_node_t z_link_node; /* all znodes in fs link */
|
||||||
sa_handle_t *z_sa_hdl; /* handle to sa data */
|
sa_handle_t *z_sa_hdl; /* handle to sa data */
|
||||||
boolean_t z_is_sa; /* are we native sa? */
|
|
||||||
boolean_t z_is_mapped; /* are we mmap'ed */
|
|
||||||
boolean_t z_is_ctldir; /* are we .zfs entry */
|
|
||||||
boolean_t z_is_stale; /* are we stale due to rollback? */
|
|
||||||
struct inode z_inode; /* generic vfs inode */
|
struct inode z_inode; /* generic vfs inode */
|
||||||
} znode_t;
|
} znode_t;
|
||||||
|
|
||||||
|
@ -463,10 +463,14 @@ zfsctl_inode_alloc(zfsvfs_t *zfsvfs, uint64_t id,
|
|||||||
ASSERT3P(zp->z_acl_cached, ==, NULL);
|
ASSERT3P(zp->z_acl_cached, ==, NULL);
|
||||||
ASSERT3P(zp->z_xattr_cached, ==, NULL);
|
ASSERT3P(zp->z_xattr_cached, ==, NULL);
|
||||||
zp->z_id = id;
|
zp->z_id = id;
|
||||||
zp->z_unlinked = 0;
|
zp->z_unlinked = B_FALSE;
|
||||||
zp->z_atime_dirty = 0;
|
zp->z_atime_dirty = B_FALSE;
|
||||||
zp->z_zn_prefetch = 0;
|
zp->z_zn_prefetch = B_FALSE;
|
||||||
zp->z_moved = 0;
|
zp->z_moved = B_FALSE;
|
||||||
|
zp->z_is_sa = B_FALSE;
|
||||||
|
zp->z_is_mapped = B_FALSE;
|
||||||
|
zp->z_is_ctldir = B_TRUE;
|
||||||
|
zp->z_is_stale = B_FALSE;
|
||||||
zp->z_sa_hdl = NULL;
|
zp->z_sa_hdl = NULL;
|
||||||
zp->z_blksz = 0;
|
zp->z_blksz = 0;
|
||||||
zp->z_seq = 0;
|
zp->z_seq = 0;
|
||||||
@ -475,10 +479,6 @@ zfsctl_inode_alloc(zfsvfs_t *zfsvfs, uint64_t id,
|
|||||||
zp->z_pflags = 0;
|
zp->z_pflags = 0;
|
||||||
zp->z_mode = 0;
|
zp->z_mode = 0;
|
||||||
zp->z_sync_cnt = 0;
|
zp->z_sync_cnt = 0;
|
||||||
zp->z_is_mapped = B_FALSE;
|
|
||||||
zp->z_is_ctldir = B_TRUE;
|
|
||||||
zp->z_is_sa = B_FALSE;
|
|
||||||
zp->z_is_stale = B_FALSE;
|
|
||||||
ip->i_generation = 0;
|
ip->i_generation = 0;
|
||||||
ip->i_ino = id;
|
ip->i_ino = id;
|
||||||
ip->i_mode = (S_IFDIR | S_IRWXUGO);
|
ip->i_mode = (S_IFDIR | S_IRWXUGO);
|
||||||
|
@ -1655,7 +1655,7 @@ top:
|
|||||||
zfs_fuid_sync(zfsvfs, tx);
|
zfs_fuid_sync(zfsvfs, tx);
|
||||||
|
|
||||||
/* Add to unlinked set */
|
/* Add to unlinked set */
|
||||||
zp->z_unlinked = 1;
|
zp->z_unlinked = B_TRUE;
|
||||||
zfs_unlinked_add(zp, tx);
|
zfs_unlinked_add(zp, tx);
|
||||||
zfs_acl_ids_free(&acl_ids);
|
zfs_acl_ids_free(&acl_ids);
|
||||||
dmu_tx_commit(tx);
|
dmu_tx_commit(tx);
|
||||||
@ -1854,7 +1854,7 @@ top:
|
|||||||
if (xattr_obj_unlinked) {
|
if (xattr_obj_unlinked) {
|
||||||
ASSERT3U(ZTOI(xzp)->i_nlink, ==, 2);
|
ASSERT3U(ZTOI(xzp)->i_nlink, ==, 2);
|
||||||
mutex_enter(&xzp->z_lock);
|
mutex_enter(&xzp->z_lock);
|
||||||
xzp->z_unlinked = 1;
|
xzp->z_unlinked = B_TRUE;
|
||||||
clear_nlink(ZTOI(xzp));
|
clear_nlink(ZTOI(xzp));
|
||||||
links = 0;
|
links = 0;
|
||||||
error = sa_update(xzp->z_sa_hdl, SA_ZPL_LINKS(zfsvfs),
|
error = sa_update(xzp->z_sa_hdl, SA_ZPL_LINKS(zfsvfs),
|
||||||
@ -3407,7 +3407,7 @@ top:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((mask & ATTR_ATIME) || zp->z_atime_dirty) {
|
if ((mask & ATTR_ATIME) || zp->z_atime_dirty) {
|
||||||
zp->z_atime_dirty = 0;
|
zp->z_atime_dirty = B_FALSE;
|
||||||
ZFS_TIME_ENCODE(&ip->i_atime, atime);
|
ZFS_TIME_ENCODE(&ip->i_atime, atime);
|
||||||
SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_ATIME(zfsvfs), NULL,
|
SA_ADD_BULK_ATTR(bulk, count, SA_ZPL_ATIME(zfsvfs), NULL,
|
||||||
&atime, sizeof (atime));
|
&atime, sizeof (atime));
|
||||||
@ -4371,7 +4371,7 @@ top:
|
|||||||
}
|
}
|
||||||
/* unmark z_unlinked so zfs_link_create will not reject */
|
/* unmark z_unlinked so zfs_link_create will not reject */
|
||||||
if (is_tmpfile)
|
if (is_tmpfile)
|
||||||
szp->z_unlinked = 0;
|
szp->z_unlinked = B_FALSE;
|
||||||
error = zfs_link_create(dl, szp, tx, 0);
|
error = zfs_link_create(dl, szp, tx, 0);
|
||||||
|
|
||||||
if (error == 0) {
|
if (error == 0) {
|
||||||
@ -4393,7 +4393,7 @@ top:
|
|||||||
}
|
}
|
||||||
} else if (is_tmpfile) {
|
} else if (is_tmpfile) {
|
||||||
/* restore z_unlinked since when linking failed */
|
/* restore z_unlinked since when linking failed */
|
||||||
szp->z_unlinked = 1;
|
szp->z_unlinked = B_TRUE;
|
||||||
}
|
}
|
||||||
txg = dmu_tx_get_txg(tx);
|
txg = dmu_tx_get_txg(tx);
|
||||||
dmu_tx_commit(tx);
|
dmu_tx_commit(tx);
|
||||||
@ -4591,7 +4591,7 @@ zfs_putpage(struct inode *ip, struct page *pp, struct writeback_control *wbc)
|
|||||||
/* Preserve the mtime and ctime provided by the inode */
|
/* Preserve the mtime and ctime provided by the inode */
|
||||||
ZFS_TIME_ENCODE(&ip->i_mtime, mtime);
|
ZFS_TIME_ENCODE(&ip->i_mtime, mtime);
|
||||||
ZFS_TIME_ENCODE(&ip->i_ctime, ctime);
|
ZFS_TIME_ENCODE(&ip->i_ctime, ctime);
|
||||||
zp->z_atime_dirty = 0;
|
zp->z_atime_dirty = B_FALSE;
|
||||||
zp->z_seq++;
|
zp->z_seq++;
|
||||||
|
|
||||||
err = sa_bulk_update(zp->z_sa_hdl, bulk, cnt, tx);
|
err = sa_bulk_update(zp->z_sa_hdl, bulk, cnt, tx);
|
||||||
@ -4645,7 +4645,7 @@ zfs_dirty_inode(struct inode *ip, int flags)
|
|||||||
* only need to dirty atime.
|
* only need to dirty atime.
|
||||||
*/
|
*/
|
||||||
if (flags == I_DIRTY_TIME) {
|
if (flags == I_DIRTY_TIME) {
|
||||||
zp->z_atime_dirty = 1;
|
zp->z_atime_dirty = B_TRUE;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -4662,7 +4662,7 @@ zfs_dirty_inode(struct inode *ip, int flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
mutex_enter(&zp->z_lock);
|
mutex_enter(&zp->z_lock);
|
||||||
zp->z_atime_dirty = 0;
|
zp->z_atime_dirty = B_FALSE;
|
||||||
|
|
||||||
SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_MODE(zfsvfs), NULL, &mode, 8);
|
SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_MODE(zfsvfs), NULL, &mode, 8);
|
||||||
SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_ATIME(zfsvfs), NULL, &atime, 16);
|
SA_ADD_BULK_ATTR(bulk, cnt, SA_ZPL_ATIME(zfsvfs), NULL, &atime, 16);
|
||||||
@ -4707,7 +4707,7 @@ zfs_inactive(struct inode *ip)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zp->z_atime_dirty && zp->z_unlinked == 0) {
|
if (zp->z_atime_dirty && zp->z_unlinked == B_FALSE) {
|
||||||
dmu_tx_t *tx = dmu_tx_create(zfsvfs->z_os);
|
dmu_tx_t *tx = dmu_tx_create(zfsvfs->z_os);
|
||||||
|
|
||||||
dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
|
dmu_tx_hold_sa(tx, zp->z_sa_hdl, B_FALSE);
|
||||||
@ -4720,7 +4720,7 @@ zfs_inactive(struct inode *ip)
|
|||||||
mutex_enter(&zp->z_lock);
|
mutex_enter(&zp->z_lock);
|
||||||
(void) sa_update(zp->z_sa_hdl, SA_ZPL_ATIME(zfsvfs),
|
(void) sa_update(zp->z_sa_hdl, SA_ZPL_ATIME(zfsvfs),
|
||||||
(void *)&atime, sizeof (atime), tx);
|
(void *)&atime, sizeof (atime), tx);
|
||||||
zp->z_atime_dirty = 0;
|
zp->z_atime_dirty = B_FALSE;
|
||||||
mutex_exit(&zp->z_lock);
|
mutex_exit(&zp->z_lock);
|
||||||
dmu_tx_commit(tx);
|
dmu_tx_commit(tx);
|
||||||
}
|
}
|
||||||
|
@ -135,7 +135,7 @@ zfs_znode_cache_constructor(void *buf, void *arg, int kmflags)
|
|||||||
zp->z_acl_cached = NULL;
|
zp->z_acl_cached = NULL;
|
||||||
zp->z_xattr_cached = NULL;
|
zp->z_xattr_cached = NULL;
|
||||||
zp->z_xattr_parent = 0;
|
zp->z_xattr_parent = 0;
|
||||||
zp->z_moved = 0;
|
zp->z_moved = B_FALSE;
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -539,19 +539,18 @@ zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_buf_t *db, int blksz,
|
|||||||
ASSERT(zp->z_dirlocks == NULL);
|
ASSERT(zp->z_dirlocks == NULL);
|
||||||
ASSERT3P(zp->z_acl_cached, ==, NULL);
|
ASSERT3P(zp->z_acl_cached, ==, NULL);
|
||||||
ASSERT3P(zp->z_xattr_cached, ==, NULL);
|
ASSERT3P(zp->z_xattr_cached, ==, NULL);
|
||||||
zp->z_moved = 0;
|
zp->z_unlinked = B_FALSE;
|
||||||
zp->z_suspended = B_FALSE;
|
zp->z_atime_dirty = B_FALSE;
|
||||||
|
zp->z_moved = B_FALSE;
|
||||||
|
zp->z_is_mapped = B_FALSE;
|
||||||
|
zp->z_is_ctldir = B_FALSE;
|
||||||
|
zp->z_is_stale = B_FALSE;
|
||||||
zp->z_sa_hdl = NULL;
|
zp->z_sa_hdl = NULL;
|
||||||
zp->z_unlinked = 0;
|
|
||||||
zp->z_atime_dirty = 0;
|
|
||||||
zp->z_mapcnt = 0;
|
zp->z_mapcnt = 0;
|
||||||
zp->z_id = db->db_object;
|
zp->z_id = db->db_object;
|
||||||
zp->z_blksz = blksz;
|
zp->z_blksz = blksz;
|
||||||
zp->z_seq = 0x7A4653;
|
zp->z_seq = 0x7A4653;
|
||||||
zp->z_sync_cnt = 0;
|
zp->z_sync_cnt = 0;
|
||||||
zp->z_is_mapped = B_FALSE;
|
|
||||||
zp->z_is_ctldir = B_FALSE;
|
|
||||||
zp->z_is_stale = B_FALSE;
|
|
||||||
|
|
||||||
zfs_znode_sa_init(zfsvfs, zp, db, obj_type, hdl);
|
zfs_znode_sa_init(zfsvfs, zp, db, obj_type, hdl);
|
||||||
|
|
||||||
@ -1264,7 +1263,7 @@ zfs_rezget(znode_t *zp)
|
|||||||
zfs_set_inode_flags(zp, ZTOI(zp));
|
zfs_set_inode_flags(zp, ZTOI(zp));
|
||||||
|
|
||||||
zp->z_blksz = doi.doi_data_block_size;
|
zp->z_blksz = doi.doi_data_block_size;
|
||||||
zp->z_atime_dirty = 0;
|
zp->z_atime_dirty = B_FALSE;
|
||||||
zfs_inode_update(zp);
|
zfs_inode_update(zp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1884,9 +1883,9 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
|
|||||||
vattr.va_gid = crgetgid(cr);
|
vattr.va_gid = crgetgid(cr);
|
||||||
|
|
||||||
rootzp = kmem_cache_alloc(znode_cache, KM_SLEEP);
|
rootzp = kmem_cache_alloc(znode_cache, KM_SLEEP);
|
||||||
rootzp->z_moved = 0;
|
rootzp->z_unlinked = B_FALSE;
|
||||||
rootzp->z_unlinked = 0;
|
rootzp->z_atime_dirty = B_FALSE;
|
||||||
rootzp->z_atime_dirty = 0;
|
rootzp->z_moved = B_FALSE;
|
||||||
rootzp->z_is_sa = USE_SA(version, os);
|
rootzp->z_is_sa = USE_SA(version, os);
|
||||||
rootzp->z_pflags = 0;
|
rootzp->z_pflags = 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user