> + ASSERT(vp);
> + zfs_inactive_impl(vp, CRED(), NULL);
> +}
> +
> +/*
> + * This value will be multiplied by zfs_dirty_data_max to determine
> + * the threshold past which we will call zfs_inactive_impl() async.
> + *
> + * Selecting the multiplier is a balance between how long we're willing to
> wait
> + * for delete/free to complete (get shell back, have a NFS thread captive,
> etc)
> + * and reducing the number of active requests in the backing taskq.
> + *
> + * 4 GiB (zfs_dirty_data_max default) * 16 (multiplier default) = 64 GiB
> + * meaning by default we will call zfs_inactive_impl async for vnodes > 64
> GiB
> + */
> +uint16_t zfs_inactive_async_multiplier = 16;
I took the easy way out here and did async delete based on znode's ("virtual")
size. This has the advantage of giving me a clear (for end user) threshold in
GB for async delete.
The idea of doing async delete based on number of indirect block is
interesting. I will need more time to dig out the dnode from znode and do the
indirect blocks counting.
---
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/61/files#r52256371_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer