Re: vfat unlink latency 54.6ms for 128MB files

From: Sami Farin
Date: Mon Jan 10 2005 - 15:03:42 EST


On Tue, Jan 11, 2005 at 03:38:32AM +0900, OGAWA Hirofumi wrote:
> Sami Farin <7atbggg02@xxxxxxxxxxxxxx> writes:
>
> > Just wondering, when I remove a 128MB file on vfat partition
> > (usb-storage, memcard reader), it causes 54.6ms latency
> > in rtc_latencytest... latency seems to increase linearly
> > as the filesize grows. I calculated 1s would be reached with
> > 2344MB file but I didn't bother trying that yet.
> > Are there any possible fixes for fat fs so
> > that it doesn't disable interrupts for that long a time?
>
> The fatfs itself doesn't disable any interrupt. I guess the thing
> depending on file size is the fat_free().
>
> So, the following patch may change the behavior...
> --
> OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>
>
> diff -up linux-2.6.10/fs/fat/cache.c.orig linux-2.6.10/fs/fat/cache.c
> --- linux-2.6.10/fs/fat/cache.c.orig 2004-12-25 06:35:24.000000000 +0900
> +++ linux-2.6.10/fs/fat/cache.c 2005-01-11 03:34:54.000000000 +0900
> @@ -491,6 +491,8 @@ int fat_free(struct inode *inode, int sk
> if (MSDOS_SB(sb)->free_clusters != -1)
> MSDOS_SB(sb)->free_clusters++;
> inode->i_blocks -= MSDOS_SB(sb)->cluster_size >> 9;
> +
> + cond_resched();
> } while (nr != FAT_ENT_EOF);
> fat_clusters_flush(sb);
> nr = 0;

Oh yeah, now max latency is around 1.5ms.
Thanks for the patch.

--
-
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/