aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar David Howells <dhowells@redhat.com> 2009-11-19 18:11:48 +0000
committerGravatar David Howells <dhowells@redhat.com> 2009-11-19 18:11:48 +0000
commit868411be3f445a83fafbd734f3e426400138add5 (patch)
tree5eb855730adfa903abae29a9a20a78f1cfe597af
parentFS-Cache: Start processing an object's operations on that object's death (diff)
downloadlinux-868411be3f445a83fafbd734f3e426400138add5.tar.gz
linux-868411be3f445a83fafbd734f3e426400138add5.tar.bz2
linux-868411be3f445a83fafbd734f3e426400138add5.zip
FS-Cache: Actually requeue an object when requested
FS-Cache objects have an FSCACHE_OBJECT_EV_REQUEUE event that can theoretically be raised to ask the state machine to requeue the object for further processing before the work function returns to the slow-work facility. However, fscache_object_work_execute() was clearing that bit before checking the event mask to see whether the object has any pending events that require it to be requeued immediately. Instead, the bit should be cleared after the check and enqueue. Signed-off-by: David Howells <dhowells@redhat.com>
-rw-r--r--fs/fscache/object.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/fscache/object.c b/fs/fscache/object.c
index c85c9f582166..f3f952cf887e 100644
--- a/fs/fscache/object.c
+++ b/fs/fscache/object.c
@@ -353,13 +353,12 @@ static void fscache_object_slow_work_execute(struct slow_work *work)
_enter("{OBJ%x}", object->debug_id);
- clear_bit(FSCACHE_OBJECT_EV_REQUEUE, &object->events);
-
start = jiffies;
fscache_object_state_machine(object);
fscache_hist(fscache_objs_histogram, start);
if (object->events & object->event_mask)
fscache_enqueue_object(object);
+ clear_bit(FSCACHE_OBJECT_EV_REQUEUE, &object->events);
}
/*