SLOW_WORK: Allow the owner of a work item to determine if it is queued or not
authorDavid Howells <dhowells@redhat.com>
Thu, 19 Nov 2009 18:10:53 +0000 (18:10 +0000)
committerDavid Howells <dhowells@redhat.com>
Thu, 19 Nov 2009 18:10:53 +0000 (18:10 +0000)
commit31ba99d304494cb28fa8671ccc769c5543e1165d
treeea2d839fb70798cf6a3b55ccc87f749e14e14f1d
parent8fba10a42d191de612e60e7009c8f0313f90a9b3
SLOW_WORK: Allow the owner of a work item to determine if it is queued or not

Add a function (slow_work_is_queued()) to permit the owner of a work item to
determine if the item is queued or not.

The work item is counted as being queued if it is actually on the queue, not
just if it is pending.  If it is executing and pending, then it is not on the
queue, but will rather be put back on the queue when execution finishes.

This permits a caller to quickly work out if it may be able to put another,
dependent work item on the queue behind it, or whether it will have to wait
till that is finished.

This can be used by CacheFiles to work out whether the creation a new object
can be immediately deferred when it has to wait for an old object to be
deleted, or whether a wait must take place.  If a wait is necessary, then the
slow-work thread can otherwise get blocked, preventing the deletion from
taking place.

Signed-off-by: David Howells <dhowells@redhat.com>
Documentation/slow-work.txt
include/linux/slow-work.h