aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fscache
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2009-11-19 13:11:48 -0500
committerDavid Howells <dhowells@redhat.com>2009-11-19 13:11:48 -0500
commit868411be3f445a83fafbd734f3e426400138add5 (patch)
tree5eb855730adfa903abae29a9a20a78f1cfe597af /fs/fscache
parent60d543ca724be155c2b6166e36a00c80b21bd810 (diff)
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>
Diffstat (limited to 'fs/fscache')
-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)
353 353
354 _enter("{OBJ%x}", object->debug_id); 354 _enter("{OBJ%x}", object->debug_id);
355 355
356 clear_bit(FSCACHE_OBJECT_EV_REQUEUE, &object->events);
357
358 start = jiffies; 356 start = jiffies;
359 fscache_object_state_machine(object); 357 fscache_object_state_machine(object);
360 fscache_hist(fscache_objs_histogram, start); 358 fscache_hist(fscache_objs_histogram, start);
361 if (object->events & object->event_mask) 359 if (object->events & object->event_mask)
362 fscache_enqueue_object(object); 360 fscache_enqueue_object(object);
361 clear_bit(FSCACHE_OBJECT_EV_REQUEUE, &object->events);
363} 362}
364 363
365/* 364/*