lkml.org 
[lkml]   [2004]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] let fat handle MS_SYNCHRONOUS flag
From
Date
Colin Leroy <colin@colino.net> writes:

> @@ -764,6 +765,11 @@
> dir->i_atime = dir->i_ctime = dir->i_mtime = CURRENT_TIME;
> mark_inode_dirty(dir);
>
> + sb = dir->i_sb;
> +
> + if (sb->s_flags & MS_SYNCHRONOUS)
> + sync_dirty_buffer(bh);
> +

This bh is already released.

> retval = generic_file_write(filp, buf, count, ppos);
> if (retval > 0) {
> inode->i_mtime = inode->i_ctime = CURRENT_TIME;
> MSDOS_I(inode)->i_attrs |= ATTR_ARCH;
> mark_inode_dirty(inode);
> + if (sb->s_flags & MS_SYNCHRONOUS) {
> + bh = sb_bread(sb, MSDOS_SB(sb)->fsinfo_sector);
> + if (bh != NULL) {
> + sync_dirty_buffer(bh);
> + brelse(bh);
> + } else {
> + BUG_ON(1);
> + }
> + }

FAT12/16 doesn't have FSINFO sector. And if sb_bread() returns NULL,
we should return the valid error.

> @@ -105,4 +118,8 @@
> unlock_kernel();
> inode->i_ctime = inode->i_mtime = CURRENT_TIME;
> mark_inode_dirty(inode);
> + if (sb->s_flags & MS_SYNCHRONOUS) {
> + bh = sb_bread(sb, sbi->fsinfo_sector);
> + sync_dirty_buffer(bh);
> + }

Ditto.

Aren't you forgetting to update the inode and various metadata (e.g. FAT)?
--
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:08    [W:0.246 / U:0.568 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site