]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/fat/inode.c
Merge branches 'x86/apic', 'x86/asm', 'x86/cleanups', 'x86/debug', 'x86/kconfig'...
[linux-2.6-omap-h63xx.git] / fs / fat / inode.c
index bdd8fb7be2ca48e5ac4e49b5b2dd147375f6c8b2..de0004fe6e0049c8a09a494444d19831313da64c 100644 (file)
@@ -202,9 +202,9 @@ static sector_t _fat_bmap(struct address_space *mapping, sector_t block)
        sector_t blocknr;
 
        /* fat_get_cluster() assumes the requested blocknr isn't truncated. */
-       mutex_lock(&mapping->host->i_mutex);
+       down_read(&mapping->host->i_alloc_sem);
        blocknr = generic_block_bmap(mapping, block, fat_get_block);
-       mutex_unlock(&mapping->host->i_mutex);
+       up_read(&mapping->host->i_alloc_sem);
 
        return blocknr;
 }
@@ -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);
 
@@ -926,8 +928,8 @@ static int parse_options(char *options, int is_vfat, int silent, int *debug,
 
        opts->isvfat = is_vfat;
 
-       opts->fs_uid = current->uid;
-       opts->fs_gid = current->gid;
+       opts->fs_uid = current_uid();
+       opts->fs_gid = current_gid();
        opts->fs_fmask = opts->fs_dmask = current->fs->umask;
        opts->allow_utime = -1;
        opts->codepage = fat_default_codepage;