Merge git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 31 Dec 2008 04:33:34 +0000 (20:33 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 31 Dec 2008 04:33:34 +0000 (20:33 -0800)
* git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6:
  fat: make sure to set d_ops in fat_get_parent
  fat: fix duplicate addition of ->llseek handler
  fat: drop negative dentry on rename() path

fs/fat/dir.c
fs/fat/inode.c
fs/fat/namei_vfat.c

index 67e0583570983ccb7683dcbf10dcdb6d67288909..3a7f603b698246fde1952ff8d464f50d21126885 100644 (file)
@@ -841,7 +841,6 @@ const struct file_operations fat_dir_operations = {
        .compat_ioctl   = fat_compat_dir_ioctl,
 #endif
        .fsync          = file_fsync,
-       .llseek         = generic_file_llseek,
 };
 
 static int fat_get_short_entry(struct inode *dir, loff_t *pos,
index d937aaf77374f4b720aa85328da0779daad027ae..6b74d09adbe5fa34d425f7b2c07a8271ddcd8e14 100644 (file)
@@ -749,6 +749,8 @@ static struct dentry *fat_get_parent(struct dentry *child)
        brelse(bh);
 
        parent = d_obtain_alias(inode);
+       if (!IS_ERR(parent))
+               parent->d_op = sb->s_root->d_op;
 out:
        unlock_super(sb);
 
index bf326d4356a3347ff9a143328cbef11c01792213..8ae32e37673c32fbee31e0a89eec705fbacf8267 100644 (file)
@@ -78,7 +78,7 @@ static int vfat_revalidate_ci(struct dentry *dentry, struct nameidata *nd)
         * for creation.
         */
        if (!(nd->flags & (LOOKUP_CONTINUE | LOOKUP_PARENT))) {
-               if (nd->flags & LOOKUP_CREATE)
+               if (nd->flags & (LOOKUP_CREATE | LOOKUP_RENAME_TARGET))
                        return 0;
        }