Add support for DISCARD to ZVOLs.
[zfs.git] / module / zfs / zfs_znode.c
index 1edbd7e..709ae74 100644 (file)
@@ -269,6 +269,7 @@ zfs_inode_destroy(struct inode *ip)
 
        mutex_enter(&zsb->z_znodes_lock);
        list_remove(&zsb->z_all_znodes, zp);
+       zsb->z_nr_znodes--;
        mutex_exit(&zsb->z_znodes_lock);
 
        if (zp->z_acl_cached) {
@@ -401,6 +402,7 @@ zfs_znode_alloc(zfs_sb_t *zsb, dmu_buf_t *db, int blksz,
 
        mutex_enter(&zsb->z_znodes_lock);
        list_insert_tail(&zsb->z_all_znodes, zp);
+       zsb->z_nr_znodes++;
        membar_producer();
        mutex_exit(&zsb->z_znodes_lock);
 
@@ -440,7 +442,7 @@ zfs_inode_update(znode_t *zp)
        ip->i_generation = zp->z_gen;
        ip->i_uid = zp->z_uid;
        ip->i_gid = zp->z_gid;
-       ip->i_nlink = zp->z_links;
+       set_nlink(ip, zp->z_links);
        ip->i_mode = zp->z_mode;
        ip->i_blkbits = SPA_MINBLOCKSHIFT;
        dmu_object_size_from_db(sa_get_db(zp->z_sa_hdl), &blksize,