lkml.org 
[lkml]   [2006]   [Nov]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
SubjectRe: bug? VFAT copy problem
From
Hi,

We encountered this problem before,it did being caused by dcache.
When creating files, VFS would check the dcache first and pass the dentry
it found there to vfat_create(). Instead of dentry , using the path info
passed by user solved the problem.

--- namei.c 2006-11-18 18:41:58.000000000 +0900
+++ namei.c.new 2006-11-23 12:45:34.000000000 +0900
@@ -742,7 +742,7 @@
lock_kernel();

ts = CURRENT_TIME_SEC;
- err = vfat_add_entry(dir, &dentry->d_name, 0, 0, &ts, &sinfo);
+ err = vfat_add_entry(dir, &nd->last, 0, 0, &ts, &sinfo);
if (err)
goto out;
dir->i_version++;


From: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Subject: Re: bug? VFAT copy problem
Date: Wed, 22 Nov 2006 00:46:43 +0900

> The Peach <smartart@tiscali.it> writes:
>
> > On Tue, 21 Nov 2006 02:32:43 +0900
> > OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> wrote:
> >
> >> I couldn't reproduce this for now. Could you tell mount options which
> >> you used? and after mount, "cat /proc/mounts", please.
> >
> > # mount | grep vfat
> > /dev/sdb1 on /mnt/iomega type vfat (rw,uid=1000,gid=100,codepage=850,iocharset=iso8859-15)
> >
> > it seems only related to those kind of files, but I don't know how to inspect the "file properties" and why these files behave like this.
> > As you can see and with a strace made on cp, the files _seems_ to be copied with the correct case, whilst it isn't, as seen with "ls". This and other things let me think is a vfat problem.
>
> Hmm... This may be the dentry cache handling problem of fat.
>
> Can you try the attached debug patch? And if you comment-in the
> following parts, does this problem fix?
>
> @@ -787,6 +830,9 @@ static int vfat_rmdir(struct inode *dir,
> clear_nlink(inode);
> inode->i_mtime = inode->i_atime = CURRENT_TIME_SEC;
> fat_detach(inode);
> + /* need to revalidate for next create */
> + table = (sbi->options.name_check == 's') ? 3 : 1;
> +// dentry->d_op = &vfat_dentry_ops[table];
> @@ -811,6 +858,9 @@ static int vfat_unlink(struct inode *dir
> clear_nlink(inode);
> inode->i_mtime = inode->i_atime = CURRENT_TIME_SEC;
> fat_detach(inode);
> + /* need to revalidate for next create */
> + table = (sbi->options.name_check == 's') ? 3 : 1;
> +// dentry->d_op = &vfat_dentry_ops[table];
> --
> OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-11-23 04:55    [W:0.062 / U:29.160 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site