Re: [PATCH] reiserfs:fix journaling issue regarding fsync()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello

Sorry, but afaics reiserfs' fsync works as it is supposed to.
I experiment with the attached program. After reboot I make sure that
file has "new file size".

On Tue, 2006-06-20 at 17:43 +0900, Hisashi Hifumi wrote:
> Hi,
> 
>   When write() extends a file(i_size is increased) and fsync() is
> called, change of inode must be written to journaling area
> through fsync().
> But,currently the i_trans_id is not correctly updated when i_size
> is increased. So fsync() does not kick the journal writer.
> 
> Following patch fix this bug.
> 
>   Signed-off-by :Hisashi Hifumi <hifumi.hisashi@xxxxxxxxxxxxx>
> 
> diff -Nru linux-2.6.17/fs/reiserfs/super.c linux-2.6.17_fix/fs/reiserfs/super.c
> --- linux-2.6.17/fs/reiserfs/super.c	2006-06-18 10:49:35.000000000 +0900
> +++ linux-2.6.17_fix/fs/reiserfs/super.c	2006-06-20 14:38:28.000000000 +0900
> @@ -558,6 +558,7 @@
>   		reiserfs_write_unlock(inode->i_sb);
>   		return;
>   	}
> +	reiserfs_update_inode_transaction(inode);
>   	reiserfs_update_sd(&th, inode);
>   	journal_end(&th, inode->i_sb, 1);
>   	reiserfs_write_unlock(inode->i_sb);
> 
> 
> Thanks, 
> 
> 
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>

int main(int argc, char **argv)
{
	int fd;
	struct stat st;

	fd = open(argv[1], O_WRONLY | O_APPEND);
	if (fd == -1) {
		perror("open failed");
		return 0;
	}
	if (fstat(fd, &st)) {
		perror("stat failed");
		return 0;
	}
	printf("old file size %d\n", st.st_size);
	if (write(fd, "hello", 5) != 5) {
		perror("write failed");
		return 0;
	}

        if (fstat(fd, &st)) {
                perror("stat failed");
                return 0;
        }
        printf("new file size %d\n", st.st_size);
	if (fsync(fd)) {
		perror("fsync failed");
		return 0;
	}

	printf("rebooting"); fflush(stdout);
	system("reboot -f -n");
	return 0;
}

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux