mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
FreeBSD: Implement taskq_init_ent()
Previously taskq_init_ent() was an empty macro, while actual init was done by taskq_dispatch_ent(). It could be slightly faster in case taskq never enqueued. But without it taskq_empty_ent() relied on the structure being zeroed by somebody else, that is not good. As a side effect this allows the same task to be queued several times, that is normal on FreeBSD, that may or may not get useful here also one day. Reviewed-by: Brian Atkinson <batkinson@lanl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Alexander Motin <mav@FreeBSD.org> Sponsored by: iXsystems, Inc. Closes #15455
This commit is contained in:
@@ -82,7 +82,6 @@ typedef struct taskq_ent {
|
||||
|
||||
#define TASKQID_INVALID ((taskqid_t)0)
|
||||
|
||||
#define taskq_init_ent(x)
|
||||
extern taskq_t *system_taskq;
|
||||
/* Global dynamic task queue for long delay */
|
||||
extern taskq_t *system_delay_taskq;
|
||||
@@ -93,6 +92,7 @@ extern taskqid_t taskq_dispatch_delay(taskq_t *, task_func_t, void *,
|
||||
extern void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t,
|
||||
taskq_ent_t *);
|
||||
extern int taskq_empty_ent(taskq_ent_t *);
|
||||
extern void taskq_init_ent(taskq_ent_t *);
|
||||
taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t);
|
||||
taskq_t *taskq_create_synced(const char *, int, pri_t, int, int, uint_t,
|
||||
kthread_t ***);
|
||||
|
||||
Reference in New Issue
Block a user