X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=fs%2Fufs%2Ftruncate.c;h=e56a4f567212a211c61a2f9f0f132ab3fd4f42be;hb=788257d6101d986ac8f2741aaa35974af47f574c;hp=a58f9155fc9a7baea4169efec7529434035d8458;hpb=aa5c14d5c0d3e4c587db4a1b220b9c86415c538f;p=mv-sheeva.git diff --git a/fs/ufs/truncate.c b/fs/ufs/truncate.c index a58f9155fc9..e56a4f56721 100644 --- a/fs/ufs/truncate.c +++ b/fs/ufs/truncate.c @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include @@ -467,7 +466,6 @@ int ufs_truncate(struct inode *inode, loff_t old_i_size) block_truncate_page(inode->i_mapping, inode->i_size, ufs_getfrag_block); - lock_kernel(); while (1) { retry = ufs_trunc_direct(inode); retry |= ufs_trunc_indirect(inode, UFS_IND_BLOCK, @@ -487,7 +485,6 @@ int ufs_truncate(struct inode *inode, loff_t old_i_size) inode->i_mtime = inode->i_ctime = CURRENT_TIME_SEC; ufsi->i_lastfrag = DIRECT_FRAGMENT; - unlock_kernel(); mark_inode_dirty(inode); out: UFSD("EXIT: err %d\n", err); @@ -510,7 +507,9 @@ int ufs_setattr(struct dentry *dentry, struct iattr *attr) /* XXX(truncate): truncate_setsize should be called last */ truncate_setsize(inode, attr->ia_size); + lock_ufs(inode->i_sb); error = ufs_truncate(inode, old_i_size); + unlock_ufs(inode->i_sb); if (error) return error; }