interrupt locked for 20ms by mtdblockd

Jian Peng jipeng at
Mon Dec 18 12:58:14 EST 2006

I am using 2.6.12 with mtd released at 03/16/2006. Recently, I found out
that interrupt can be locked for 20ms by mtdblockd. Here is how I traced

Run infinite loop

	while (1) {
		usleep(1 * 1000);
		unsigned now = gettime();
		if (now > prev && now - prev > 18) {
			printf("got delay of %d milliseconds\n",
		prev = now;

And at the same time, run dd to write to /dev/mtdblock0
time dd if=/dev/zero of=/dev/mtdblock0 bs=512 count=10000
then, using LTT (Linux trace toolkit), I can identify where the
interrupt lock happen and found out that mtdblockd sometimes can lock
interrupt for 20ms. This is a serious problem since other real time
tasks can not survive if interrupt was locked for so long time. Any

More information about the linux-mtd mailing list