--- olpc-2.6-master.00/fs/ext2/ext2.h 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext2/ext2.h 2007-03-01 11:52:20.000000000 -0500 @@ -166,6 +166,7 @@ extern const struct file_operations ext2 extern const struct address_space_operations ext2_aops; extern const struct address_space_operations ext2_aops_xip; extern const struct address_space_operations ext2_nobh_aops; +extern int ext2_sync_flags(struct inode *inode); /* namei.c */ extern const struct inode_operations ext2_dir_inode_operations; --- olpc-2.6-master.00/fs/ext2/file.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext2/file.c 2007-03-01 11:52:20.000000000 -0500 @@ -85,4 +86,5 @@ const struct inode_operations ext2_file_ #endif .setattr = ext2_setattr, .permission = ext2_permission, + .sync_flags = ext2_sync_flags, }; --- olpc-2.6-master.00/fs/ext2/inode.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext2/inode.c 2007-03-01 11:52:20.000000000 -0500 @@ -1055,6 +1063,29 @@ ***** inode->i_flags |= S_DIRSYNC; } +int ext2_sync_flags(struct inode *inode) +{ + unsigned int oldflags, newflags; + + oldflags = EXT2_I(inode)->i_flags; + newflags = oldflags & ~(EXT2_IMMUTABLE_FL | + EXT2_IUNLINK_FL | EXT2_BARRIER_FL); + + if (IS_IMMUTABLE(inode)) + newflags |= EXT2_IMMUTABLE_FL; + if (IS_IUNLINK(inode)) + newflags |= EXT2_IUNLINK_FL; + if (IS_BARRIER(inode)) + newflags |= EXT2_BARRIER_FL; + + if (oldflags ^ newflags) { + EXT2_I(inode)->i_flags = newflags; + inode->i_ctime = CURRENT_TIME; + mark_inode_dirty(inode); + } + return 0; +} + void ext2_read_inode (struct inode * inode) { struct ext2_inode_info *ei = EXT2_I(inode); --- olpc-2.6-master.00/fs/ext2/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext2/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -391,6 +393,7 @@ const struct inode_operations ext2_dir_i #endif .setattr = ext2_setattr, .permission = ext2_permission, + .sync_flags = ext2_sync_flags, }; const struct inode_operations ext2_special_inode_operations = { --- olpc-2.6-master.00/fs/ext2/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext2/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -402,4 +405,5 @@ const struct inode_operations ext2_speci #endif .setattr = ext2_setattr, .permission = ext2_permission, + .sync_flags = ext2_sync_flags, }; --- olpc-2.6-master.00/fs/ext2/symlink.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext2/symlink.c 2007-03-01 11:52:20.000000000 -0500 @@ -38,6 +38,7 @@ const struct inode_operations ext2_symli .listxattr = ext2_listxattr, .removexattr = generic_removexattr, #endif + .sync_flags = ext2_sync_flags, }; const struct inode_operations ext2_fast_symlink_inode_operations = { --- olpc-2.6-master.00/fs/ext2/symlink.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext2/symlink.c 2007-03-01 11:52:20.000000000 -0500 @@ -49,4 +50,5 @@ const struct inode_operations ext2_fast_ .listxattr = ext2_listxattr, .removexattr = generic_removexattr, #endif + .sync_flags = ext2_sync_flags, }; --- olpc-2.6-master.00/fs/ext3/file.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext3/file.c 2007-03-01 11:52:20.000000000 -0500 @@ -135,5 +136,6 @@ const struct inode_operations ext3_file_ .removexattr = generic_removexattr, #endif .permission = ext3_permission, + .sync_flags = ext3_sync_flags, }; --- olpc-2.6-master.00/fs/ext3/inode.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext3/inode.c 2007-03-01 11:52:20.000000000 -0500 @@ -2646,6 +2654,45 @@ ***** inode->i_flags |= S_DIRSYNC; } +int ext3_sync_flags(struct inode *inode) +{ + unsigned int oldflags, newflags; + int err = 0; + + oldflags = EXT3_I(inode)->i_flags; + newflags = oldflags & ~(EXT3_IMMUTABLE_FL | + EXT3_IUNLINK_FL | EXT3_BARRIER_FL); + + if (IS_IMMUTABLE(inode)) + newflags |= EXT3_IMMUTABLE_FL; + if (IS_IUNLINK(inode)) + newflags |= EXT3_IUNLINK_FL; + if (IS_BARRIER(inode)) + newflags |= EXT3_BARRIER_FL; + + if (oldflags ^ newflags) { + handle_t *handle; + struct ext3_iloc iloc; + + handle = ext3_journal_start(inode, 1); + if (IS_ERR(handle)) + return PTR_ERR(handle); + if (IS_SYNC(inode)) + handle->h_sync = 1; + err = ext3_reserve_inode_write(handle, inode, &iloc); + if (err) + goto flags_err; + + EXT3_I(inode)->i_flags = newflags; + inode->i_ctime = CURRENT_TIME; + + err = ext3_mark_iloc_dirty(handle, inode, &iloc); + flags_err: + ext3_journal_stop(handle); + } + return err; +} + void ext3_read_inode(struct inode * inode) { struct ext3_iloc iloc; --- olpc-2.6-master.00/fs/ext3/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext3/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -2383,6 +2385,7 @@ const struct inode_operations ext3_dir_i .removexattr = generic_removexattr, #endif .permission = ext3_permission, + .sync_flags = ext3_sync_flags, }; const struct inode_operations ext3_special_inode_operations = { --- olpc-2.6-master.00/fs/ext3/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext3/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -2394,4 +2397,5 @@ const struct inode_operations ext3_speci .removexattr = generic_removexattr, #endif .permission = ext3_permission, + .sync_flags = ext3_sync_flags, }; --- olpc-2.6-master.00/fs/ext3/symlink.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext3/symlink.c 2007-03-01 11:52:20.000000000 -0500 @@ -40,6 +40,7 @@ const struct inode_operations ext3_symli .listxattr = ext3_listxattr, .removexattr = generic_removexattr, #endif + .sync_flags = ext3_sync_flags, }; const struct inode_operations ext3_fast_symlink_inode_operations = { --- olpc-2.6-master.00/fs/ext3/symlink.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext3/symlink.c 2007-03-01 11:52:20.000000000 -0500 @@ -51,4 +52,5 @@ const struct inode_operations ext3_fast_ .listxattr = ext3_listxattr, .removexattr = generic_removexattr, #endif + .sync_flags = ext3_sync_flags, }; --- olpc-2.6-master.00/fs/ext4/file.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext4/file.c 2007-03-01 11:52:20.000000000 -0500 @@ -135,5 +136,6 @@ const struct inode_operations ext4_file_ .removexattr = generic_removexattr, #endif .permission = ext4_permission, + .sync_flags = ext4_sync_flags, }; --- olpc-2.6-master.00/fs/ext4/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext4/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -2381,6 +2383,7 @@ const struct inode_operations ext4_dir_i .removexattr = generic_removexattr, #endif .permission = ext4_permission, + .sync_flags = ext4_sync_flags, }; const struct inode_operations ext4_special_inode_operations = { --- olpc-2.6-master.00/fs/ext4/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext4/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -2392,4 +2395,5 @@ const struct inode_operations ext4_speci .removexattr = generic_removexattr, #endif .permission = ext4_permission, + .sync_flags = ext4_sync_flags, }; --- olpc-2.6-master.00/fs/ext4/symlink.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext4/symlink.c 2007-03-01 11:52:20.000000000 -0500 @@ -40,6 +40,7 @@ const struct inode_operations ext4_symli .listxattr = ext4_listxattr, .removexattr = generic_removexattr, #endif + .sync_flags = ext4_sync_flags, }; const struct inode_operations ext4_fast_symlink_inode_operations = { --- olpc-2.6-master.00/fs/ext4/symlink.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext4/symlink.c 2007-03-01 11:52:20.000000000 -0500 @@ -51,4 +52,5 @@ const struct inode_operations ext4_fast_ .listxattr = ext4_listxattr, .removexattr = generic_removexattr, #endif + .sync_flags = ext4_sync_flags, }; --- olpc-2.6-master.00/fs/ocfs2/file.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ocfs2/file.c 2007-03-01 11:52:20.000000000 -0500 @@ -1368,6 +1370,7 @@ bail: const struct inode_operations ocfs2_file_iops = { .setattr = ocfs2_setattr, .getattr = ocfs2_getattr, + .sync_flags = ocfs2_sync_flags, .permission = ocfs2_permission, }; --- olpc-2.6-master.00/fs/ocfs2/inode.h 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ocfs2/inode.h 2007-03-01 11:52:20.000000000 -0500 @@ -143,5 +143,6 @@ int ocfs2_aio_read(struct file *file, st int ocfs2_aio_write(struct file *file, struct kiocb *req, struct iocb *iocb); void ocfs2_set_inode_flags(struct inode *inode); +int ocfs2_sync_flags(struct inode *inode); #endif /* OCFS2_INODE_H */ --- olpc-2.6-master.00/fs/ocfs2/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ocfs2/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -2318,5 +2328,6 @@ const struct inode_operations ocfs2_dir_ .rename = ocfs2_rename, .setattr = ocfs2_setattr, .getattr = ocfs2_getattr, + .sync_flags = ocfs2_sync_flags, .permission = ocfs2_permission, }; --- olpc-2.6-master.00/fs/reiserfs/file.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/reiserfs/file.c 2007-03-01 11:52:20.000000000 -0500 @@ -1564,4 +1565,5 @@ const struct inode_operations reiserfs_f .listxattr = reiserfs_listxattr, .removexattr = reiserfs_removexattr, .permission = reiserfs_permission, + .sync_flags = reiserfs_sync_flags, }; --- olpc-2.6-master.00/fs/reiserfs/inode.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/reiserfs/inode.c 2007-03-01 11:52:20.000000000 -0500 @@ -2900,6 +2936,22 @@ static ssize_t reiserfs_direct_IO(int rw reiserfs_get_blocks_direct_io, NULL); } +int reiserfs_sync_flags(struct inode *inode) +{ + u16 oldflags, newflags; + + oldflags = REISERFS_I(inode)->i_attrs; + newflags = oldflags; + i_attrs_to_sd_attrs(inode, &newflags); + + if (oldflags ^ newflags) { + REISERFS_I(inode)->i_attrs = newflags; + inode->i_ctime = CURRENT_TIME_SEC; + mark_inode_dirty(inode); + } + return 0; +} + int reiserfs_setattr(struct dentry *dentry, struct iattr *attr) { struct inode *inode = dentry->d_inode; --- olpc-2.6-master.00/fs/reiserfs/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/reiserfs/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -1542,6 +1545,7 @@ const struct inode_operations reiserfs_d .listxattr = reiserfs_listxattr, .removexattr = reiserfs_removexattr, .permission = reiserfs_permission, + .sync_flags = reiserfs_sync_flags, }; /* --- olpc-2.6-master.00/fs/reiserfs/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/reiserfs/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -1558,6 +1562,7 @@ const struct inode_operations reiserfs_s .listxattr = reiserfs_listxattr, .removexattr = reiserfs_removexattr, .permission = reiserfs_permission, + .sync_flags = reiserfs_sync_flags, }; --- olpc-2.6-master.00/fs/reiserfs/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/reiserfs/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -1571,5 +1576,6 @@ const struct inode_operations reiserfs_s .listxattr = reiserfs_listxattr, .removexattr = reiserfs_removexattr, .permission = reiserfs_permission, + .sync_flags = reiserfs_sync_flags, }; --- olpc-2.6-master.00/fs/xfs/linux-2.6/xfs_iops.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/xfs/linux-2.6/xfs_iops.c 2007-03-01 11:52:20.000000000 -0500 @@ -710,6 +720,42 @@ xfs_vn_truncate( } STATIC int +xfs_vn_sync_flags(struct inode *inode) +{ + unsigned int oldflags, newflags; + int flags = 0; + int error; + bhv_vattr_t vattr; + bhv_vnode_t *vp = vn_from_inode(inode); + + memset(&vattr, 0, sizeof vattr); + + vattr.va_mask = XFS_AT_XFLAGS; + error = bhv_vop_getattr(vp, &vattr, 0, NULL); + + if (error) + return error; + oldflags = vattr.va_xflags; + newflags = oldflags & ~(XFS_XFLAG_IMMUTABLE | + XFS_XFLAG_IUNLINK | XFS_XFLAG_BARRIER); + + if (IS_IMMUTABLE(inode)) + newflags |= XFS_XFLAG_IMMUTABLE; + if (IS_IUNLINK(inode)) + newflags |= XFS_XFLAG_IUNLINK; + if (IS_BARRIER(inode)) + newflags |= XFS_XFLAG_BARRIER; + + if (oldflags ^ newflags) { + vattr.va_xflags = newflags; + vattr.va_mask |= XFS_AT_XFLAGS; + error = bhv_vop_setattr(vp, &vattr, flags, NULL); + } + vn_revalidate(vp); + return error; +} + +STATIC int xfs_vn_setxattr( struct dentry *dentry, const char *name, --- olpc-2.6-master.00/fs/xfs/linux-2.6/xfs_iops.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/xfs/linux-2.6/xfs_iops.c 2007-03-01 11:52:20.000000000 -0500 @@ -822,6 +868,7 @@ const struct inode_operations xfs_inode_ .getxattr = xfs_vn_getxattr, .listxattr = xfs_vn_listxattr, .removexattr = xfs_vn_removexattr, + .sync_flags = xfs_vn_sync_flags, }; const struct inode_operations xfs_dir_inode_operations = { --- olpc-2.6-master.00/fs/xfs/linux-2.6/xfs_iops.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/xfs/linux-2.6/xfs_iops.c 2007-03-01 11:52:20.000000000 -0500 @@ -841,6 +888,7 @@ const struct inode_operations xfs_dir_in .getxattr = xfs_vn_getxattr, .listxattr = xfs_vn_listxattr, .removexattr = xfs_vn_removexattr, + .sync_flags = xfs_vn_sync_flags, }; const struct inode_operations xfs_symlink_inode_operations = { --- olpc-2.6-master.00/fs/xfs/linux-2.6/xfs_iops.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/xfs/linux-2.6/xfs_iops.c 2007-03-01 11:52:20.000000000 -0500 @@ -854,4 +902,5 @@ const struct inode_operations xfs_symlin .getxattr = xfs_vn_getxattr, .listxattr = xfs_vn_listxattr, .removexattr = xfs_vn_removexattr, + .sync_flags = xfs_vn_sync_flags, }; --- olpc-2.6-master.00/include/linux/ext3_fs.h 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/include/linux/ext3_fs.h 2007-03-01 17:09:59.000000000 -0500 @@ -812,6 +816,7 @@ struct buffer_head * ext3_bread (handle_ int ext3_get_blocks_handle(handle_t *handle, struct inode *inode, sector_t iblock, unsigned long maxblocks, struct buffer_head *bh_result, int create, int extend_disksize); +extern int ext3_sync_flags(struct inode *inode); extern void ext3_read_inode (struct inode *); extern int ext3_write_inode (struct inode *, int); --- olpc-2.6-master.00/include/linux/ext4_fs.h 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/include/linux/ext4_fs.h 2007-03-01 17:09:59.000000000 -0500 @@ -843,6 +848,7 @@ struct buffer_head * ext4_bread (handle_ int ext4_get_blocks_handle(handle_t *handle, struct inode *inode, sector_t iblock, unsigned long maxblocks, struct buffer_head *bh_result, int create, int extend_disksize); +extern int ext4_sync_flags(struct inode *inode); extern void ext4_read_inode (struct inode *); extern int ext4_write_inode (struct inode *, int); --- olpc-2.6-master.00/include/linux/fs.h 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/include/linux/fs.h 2007-03-01 17:09:59.000000000 -0500 @@ -1125,6 +1150,7 @@ struct inode_operations { ssize_t (*listxattr) (struct dentry *, char *, size_t); int (*removexattr) (struct dentry *, const char *); void (*truncate_range)(struct inode *, loff_t, loff_t); + int (*sync_flags) (struct inode *); }; struct seq_file; --- olpc-2.6-master.00/include/linux/reiserfs_fs.h 2007-02-28 20:05:29.000000000 -0500 +++ olpc-2.6-master-vs22x.02/include/linux/reiserfs_fs.h 2007-03-01 17:09:59.000000000 -0500 @@ -1901,6 +1908,7 @@ static inline void reiserfs_update_sd(st void sd_attrs_to_i_attrs(__u16 sd_attrs, struct inode *inode); void i_attrs_to_sd_attrs(struct inode *inode, __u16 * sd_attrs); int reiserfs_setattr(struct dentry *dentry, struct iattr *attr); +int reiserfs_sync_flags(struct inode *inode); /* namei.c */ void set_de_name_and_namelen(struct reiserfs_dir_entry *de); --- olpc-2.6-master.00/fs/ext4/inode.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/ext4/inode.c 2007-03-01 11:52:20.000000000 -0500 @@ -2649,6 +2657,45 @@ ***** inode->i_flags |= S_DIRSYNC; } +int ext4_sync_flags(struct inode *inode) +{ + unsigned int oldflags, newflags; + int err = 0; + + oldflags = EXT4_I(inode)->i_flags; + newflags = oldflags & ~(EXT4_IMMUTABLE_FL | + EXT4_IUNLINK_FL | EXT4_BARRIER_FL); + + if (IS_IMMUTABLE(inode)) + newflags |= EXT4_IMMUTABLE_FL; + if (IS_IUNLINK(inode)) + newflags |= EXT4_IUNLINK_FL; + if (IS_BARRIER(inode)) + newflags |= EXT4_BARRIER_FL; + + if (oldflags ^ newflags) { + handle_t *handle; + struct ext4_iloc iloc; + + handle = ext4_journal_start(inode, 1); + if (IS_ERR(handle)) + return PTR_ERR(handle); + if (IS_SYNC(inode)) + handle->h_sync = 1; + err = ext4_reserve_inode_write(handle, inode, &iloc); + if (err) + goto flags_err; + + EXT4_I(inode)->i_flags = newflags; + inode->i_ctime = CURRENT_TIME; + + err = ext4_mark_iloc_dirty(handle, inode, &iloc); + flags_err: + ext4_journal_stop(handle); + } + return err; +} + void ext4_read_inode(struct inode * inode) { struct ext4_iloc iloc; --- olpc-2.6-master.00/fs/jfs/jfs_inode.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/jfs/jfs_inode.c 2007-03-01 11:52:20.000000000 -0500 @@ -41,8 +50,29 @@ ***** inode->i_flags |= S_NOATIME; if (flags & JFS_DIRSYNC_FL) inode->i_flags |= S_DIRSYNC; - if (flags & JFS_SYNC_FL) - inode->i_flags |= S_SYNC; +} + +int jfs_sync_flags(struct inode *inode) +{ + unsigned int oldflags, newflags; + + oldflags = JFS_IP(inode)->mode2; + newflags = oldflags & ~(JFS_IMMUTABLE_FL | + JFS_IUNLINK_FL | JFS_BARRIER_FL); + + if (IS_IMMUTABLE(inode)) + newflags |= JFS_IMMUTABLE_FL; + if (IS_IUNLINK(inode)) + newflags |= JFS_IUNLINK_FL; + if (IS_BARRIER(inode)) + newflags |= JFS_BARRIER_FL; + + if (oldflags ^ newflags) { + JFS_IP(inode)->mode2 = newflags; + inode->i_ctime = CURRENT_TIME; + mark_inode_dirty(inode); + } + return 0; } /* --- olpc-2.6-master.00/fs/jfs/jfs_inode.h 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/jfs/jfs_inode.h 2007-03-01 11:52:20.000000000 -0500 @@ -31,6 +31,7 @@ extern void jfs_truncate(struct inode *) extern void jfs_truncate_nolock(struct inode *, loff_t); extern void jfs_free_zero_link(struct inode *); extern struct dentry *jfs_get_parent(struct dentry *dentry); +extern int jfs_sync_flags(struct inode *); extern void jfs_set_inode_flags(struct inode *); extern int jfs_get_block(struct inode *, sector_t, struct buffer_head *, int); --- olpc-2.6-master.00/fs/jfs/namei.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/jfs/namei.c 2007-03-01 11:52:20.000000000 -0500 @@ -1521,6 +1523,7 @@ const struct inode_operations jfs_dir_in .setattr = jfs_setattr, .permission = jfs_permission, #endif + .sync_flags = jfs_sync_flags, }; const struct file_operations jfs_dir_operations = { --- olpc-2.6-master.00/fs/jfs/file.c 2007-02-28 20:05:28.000000000 -0500 +++ olpc-2.6-master-vs22x.02/fs/jfs/file.c 2007-03-01 11:52:20.000000000 -0500 @@ -98,6 +98,7 @@ const struct inode_operations jfs_file_i .setattr = jfs_setattr, .permission = jfs_permission, #endif + .sync_flags = jfs_sync_flags, }; const struct file_operations jfs_file_operations = {