2002-09-29 19:48:31

by OGAWA Hirofumi

[permalink] [raw]
Subject: [PATCH] remove fat_search_long() in vfat_add_entry()

Hi,

This patch removes the fat_search_long() in the vfat_add_entry(). This
path is already checked by the vfs layer whether file/directory
exists. So, we don't need the fat_search_long() in vfat_add_entry().


The following is the result of created the 1000 files,

2.5.39
[email protected] (a)[1007]# time ../../create

real 0m2.761s
user 0m0.006s
sys 0m2.752s
[email protected] (a)[1008]#

2.5.39 + patch
[email protected] (a)[1007]# time ../../create

real 0m1.601s
user 0m0.008s
sys 0m1.575s
[email protected] (a)[1008]#

Please apply.
--
OGAWA Hirofumi <[email protected]>

--- linux-2.5/fs/vfat/namei.c~ 2002-09-29 16:44:00.000000000 +0900
+++ linux-2.5/fs/vfat/namei.c 2002-09-29 17:36:08.000000000 +0900
@@ -890,7 +890,6 @@ static int vfat_add_entry(struct inode *
struct msdos_dir_entry *dummy_de;
struct buffer_head *dummy_bh;
int dummy_ino;
- loff_t dummy;

dir_slots = (struct msdos_dir_slot *)
kmalloc(sizeof(struct msdos_dir_slot) * MSDOS_SLOTS, GFP_KERNEL);
@@ -900,15 +899,6 @@ static int vfat_add_entry(struct inode *
len = qname->len;
while (len && qname->name[len-1] == '.')
len--;
- res = fat_search_long(dir, qname->name, len,
- (MSDOS_SB(sb)->options.name_check != 's')
- || !MSDOS_SB(sb)->options.posixfs,
- &dummy, &dummy);
- if (res > 0) /* found */
- res = -EEXIST;
- if (res)
- goto cleanup;
-
res = vfat_build_slots(dir, qname->name, len,
dir_slots, &slots, is_dir);
if (res < 0)