Problem in Creating Cache Device ............ related to Sleep ......... plzz help .....

From: Fawad Lateef
Date: Sat Aug 21 2004 - 17:45:27 EST


Hello

I m using kernel 2.4, and trying to make a front cache
block drive, for this I need to pool bh (buffer head)
to perform operation on free time.

1) to do this, I m using two threads, one to full fill
the request.
2) Other one is used to synch the data when 80% is
filled on the actual drive.

I have my own 5MB memory pages buffer, and using this
to transfer the data from source drive to target drive
through generic make request. when no more
pages available then it goes to down like
wait_event_disk in RAID.

When cache drive cross the 70% boudry it wake-up
flushing thread which start transfer data from cache
drive to target drive. at this time synching and
normal transfer working parallely. when I/O rate is
high, at this moment cache drive increases it self,
whether flush thread is running parallely.

After 98% fill of cache drive we lock first thread
which fullfilling the request, in the mean time
requests are allwed to queue, and at that moment
flushing thread trying to reduce cache disk used area
by flushing to the target drive.

PROBLEM occurs, when pages are locked and in the mean
time 98% arrived because of first thread, and it
locked itself, and never comes back, and in the mean
time requests are arriving from the outside and queing
them selves.

we have thousants of request already in the target
drive, but no one is fullfilling after lock of both
threads.

help me , how I can forcely order to the drive to
start operation on request which it has in its queue.

even i used plug_device(), run_task_queue(&tq_disk)
fuctions but no results, my process is locked..

Thanks

Fawad




__________________________________
Do you Yahoo!?
Yahoo! Mail Address AutoComplete - You start. We finish.
http://promotions.yahoo.com/new_mail
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/