Convert simple filesystems: ramfs, configfs, sysfs to new truncate sequence. Signed-off-by: Nick Piggin <npiggin@xxxxxxx> --- fs/configfs/inode.c | 11 ++++++++--- fs/ramfs/file-mmu.c | 2 ++ fs/ramfs/file-nommu.c | 8 +++++--- fs/sysfs/inode.c | 7 ++----- 4 files changed, 17 insertions(+), 11 deletions(-) Index: linux-2.6/fs/ramfs/file-mmu.c =================================================================== --- linux-2.6.orig/fs/ramfs/file-mmu.c +++ linux-2.6/fs/ramfs/file-mmu.c @@ -50,5 +50,7 @@ const struct file_operations ramfs_file_ }; const struct inode_operations ramfs_file_inode_operations = { + .new_truncate = 1, + .setattr = simple_setattr, .getattr = simple_getattr, }; Index: linux-2.6/fs/ramfs/file-nommu.c =================================================================== --- linux-2.6.orig/fs/ramfs/file-nommu.c +++ linux-2.6/fs/ramfs/file-nommu.c @@ -48,6 +48,7 @@ const struct file_operations ramfs_file_ }; const struct inode_operations ramfs_file_inode_operations = { + .new_truncate = 1, .setattr = ramfs_nommu_setattr, .getattr = simple_getattr, }; @@ -169,7 +170,7 @@ static int ramfs_nommu_resize(struct ino return ret; } - ret = vmtruncate(inode, newsize); + ret = simple_setsize(inode, newsize); return ret; } @@ -192,7 +193,8 @@ static int ramfs_nommu_setattr(struct de /* pick out size-changing events */ if (ia->ia_valid & ATTR_SIZE) { - loff_t size = i_size_read(inode); + loff_t size = inode->i_size; + if (ia->ia_size != size) { ret = ramfs_nommu_resize(inode, ia->ia_size, size); if (ret < 0 || ia->ia_valid == ATTR_SIZE) @@ -205,7 +207,7 @@ static int ramfs_nommu_setattr(struct de } } - ret = inode_setattr(inode, ia); + generic_setattr(inode, ia); out: ia->ia_valid = old_ia_valid; return ret; Index: linux-2.6/fs/configfs/inode.c =================================================================== --- linux-2.6.orig/fs/configfs/inode.c +++ linux-2.6/fs/configfs/inode.c @@ -56,6 +56,7 @@ static struct backing_dev_info configfs_ }; static const struct inode_operations configfs_inode_operations ={ + .new_truncate = 1, .setattr = configfs_setattr, }; @@ -76,9 +77,13 @@ int configfs_setattr(struct dentry * den if (error) return error; - error = inode_setattr(inode, iattr); - if (error) - return error; + if (iattr->ia_valid & ATTR_SIZE) { + error = simple_setsize(inode, iattr->ia_size); + if (error) + return error; + } + + generic_setattr(inode, iattr); if (!sd_iattr) { /* setting attributes for the first time, allocate now */ Index: linux-2.6/fs/sysfs/inode.c =================================================================== --- linux-2.6.orig/fs/sysfs/inode.c +++ linux-2.6/fs/sysfs/inode.c @@ -34,6 +34,7 @@ static struct backing_dev_info sysfs_bac }; static const struct inode_operations sysfs_inode_operations ={ + .new_truncate = 1, .setattr = sysfs_setattr, }; @@ -59,11 +60,7 @@ int sysfs_setattr(struct dentry * dentry if (error) return error; - iattr->ia_valid &= ~ATTR_SIZE; /* ignore size changes */ - - error = inode_setattr(inode, iattr); - if (error) - return error; + generic_setattr(inode, iattr); if (!sd_iattr) { /* setting attributes for the first time, allocate now */ -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html