git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge git://git.kernel.org/pub/scm/linux/kernel/git/hirofumi/fatfs-2.6
[pandora-kernel.git]
/
fs
/
fat
/
inode.c
diff --git
a/fs/fat/inode.c
b/fs/fat/inode.c
index
017493b
..
1726d73
100644
(file)
--- a/
fs/fat/inode.c
+++ b/
fs/fat/inode.c
@@
-211,8
+211,8
@@
static ssize_t fat_direct_IO(int rw, struct kiocb *iocb,
* FAT need to use the DIO_LOCKING for avoiding the race
* condition of fat_get_block() and ->truncate().
*/
* FAT need to use the DIO_LOCKING for avoiding the race
* condition of fat_get_block() and ->truncate().
*/
- ret = blockdev_direct_IO(rw, iocb, inode, i
node->i_sb->s_bdev
,
-
iov, offset, nr_segs, fat_get_block, NULL
);
+ ret = blockdev_direct_IO(rw, iocb, inode, i
ov, offset, nr_segs
,
+
fat_get_block
);
if (ret < 0 && (rw & WRITE))
fat_write_failed(mapping, offset + iov_length(iov, nr_segs));
if (ret < 0 && (rw & WRITE))
fat_write_failed(mapping, offset + iov_length(iov, nr_segs));
@@
-224,9
+224,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. */
sector_t blocknr;
/* fat_get_cluster() assumes the requested blocknr isn't truncated. */
- down_read(&
mapping->host->i_alloc_sem
);
+ down_read(&
MSDOS_I(mapping->host)->truncate_lock
);
blocknr = generic_block_bmap(mapping, block, fat_get_block);
blocknr = generic_block_bmap(mapping, block, fat_get_block);
- up_read(&
mapping->host->i_alloc_sem
);
+ up_read(&
MSDOS_I(mapping->host)->truncate_lock
);
return blocknr;
}
return blocknr;
}
@@
-510,6
+510,8
@@
static struct inode *fat_alloc_inode(struct super_block *sb)
ei = kmem_cache_alloc(fat_inode_cachep, GFP_NOFS);
if (!ei)
return NULL;
ei = kmem_cache_alloc(fat_inode_cachep, GFP_NOFS);
if (!ei)
return NULL;
+
+ init_rwsem(&ei->truncate_lock);
return &ei->vfs_inode;
}
return &ei->vfs_inode;
}