Re: [PATCH][FAT] FAT dirent scan with hin take #3

From: Pekka Enberg
Date: Wed Aug 31 2005 - 08:54:07 EST


On 8/31/05, Pekka Enberg <penberg@xxxxxxxxxxxxxx> wrote:
> After finally understanding what you're doing, how about:
>
> static inline int hint_allocate(struct inode *dir)
> {
> loff_t *hints;
> int err = 0;
>
> if (!MSDOS_I(dir)->scan_hints)

Should read:

if (MSDOS_I(dir)->scan_hints)

> return 0;
>
> hints = kcalloc(FAT_SCAN_NWAY, sizeof(loff_t), GFP_KERNEL);
> if (!hints)
> err = -ENOMEM;
>
> down(&MSDOS_I(dir)->scan_lock);
> /*
> * We allocated memory without scan_lock so lets make sure
> * no other thread completed hint_allocate() before us.
> */
> if (!MSDOS_I(dir)->scan_hints) {
> MSDOS_I(dir)->scan_hints = hints;
> hints = NULL;
> }
> up(&MSDOS_I(dir)->scan_lock);
>
> kfree(hints);
> return err;
> }
>
> Pekka
>
-
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/