diff options
Diffstat (limited to 'fs/ufs/truncate.c')
-rw-r--r-- | fs/ufs/truncate.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/fs/ufs/truncate.c b/fs/ufs/truncate.c index f294c44577dc..589e01a465ba 100644 --- a/fs/ufs/truncate.c +++ b/fs/ufs/truncate.c | |||
@@ -44,7 +44,6 @@ | |||
44 | #include <linux/buffer_head.h> | 44 | #include <linux/buffer_head.h> |
45 | #include <linux/blkdev.h> | 45 | #include <linux/blkdev.h> |
46 | #include <linux/sched.h> | 46 | #include <linux/sched.h> |
47 | #include <linux/quotaops.h> | ||
48 | 47 | ||
49 | #include "ufs_fs.h" | 48 | #include "ufs_fs.h" |
50 | #include "ufs.h" | 49 | #include "ufs.h" |
@@ -501,12 +500,10 @@ out: | |||
501 | return err; | 500 | return err; |
502 | } | 501 | } |
503 | 502 | ||
504 | |||
505 | /* | 503 | /* |
506 | * We don't define our `inode->i_op->truncate', and call it here, | 504 | * TODO: |
507 | * because of: | 505 | * - truncate case should use proper ordering instead of using |
508 | * - there is no way to know old size | 506 | * simple_setsize |
509 | * - there is no way inform user about error, if it happens in `truncate' | ||
510 | */ | 507 | */ |
511 | int ufs_setattr(struct dentry *dentry, struct iattr *attr) | 508 | int ufs_setattr(struct dentry *dentry, struct iattr *attr) |
512 | { | 509 | { |
@@ -518,19 +515,10 @@ int ufs_setattr(struct dentry *dentry, struct iattr *attr) | |||
518 | if (error) | 515 | if (error) |
519 | return error; | 516 | return error; |
520 | 517 | ||
521 | if (is_quota_modification(inode, attr)) | ||
522 | dquot_initialize(inode); | ||
523 | |||
524 | if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) || | ||
525 | (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid)) { | ||
526 | error = dquot_transfer(inode, attr); | ||
527 | if (error) | ||
528 | return error; | ||
529 | } | ||
530 | if (ia_valid & ATTR_SIZE && attr->ia_size != inode->i_size) { | 518 | if (ia_valid & ATTR_SIZE && attr->ia_size != inode->i_size) { |
531 | loff_t old_i_size = inode->i_size; | 519 | loff_t old_i_size = inode->i_size; |
532 | 520 | ||
533 | error = vmtruncate(inode, attr->ia_size); | 521 | error = simple_setsize(inode, attr->ia_size); |
534 | if (error) | 522 | if (error) |
535 | return error; | 523 | return error; |
536 | error = ufs_truncate(inode, old_i_size); | 524 | error = ufs_truncate(inode, old_i_size); |