Re: [PATCH 1/2] miss-sync changes on attributes (Re: [PATCH2/2][FAT] miss-sync issues on sync mount (miss-sync on utime))

From: Andrew Morton
Date: Tue Oct 11 2005 - 23:20:39 EST


OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx> wrote:
>
> Andrew Morton <akpm@xxxxxxxx> writes:
>
> >> /**
> >> + * sync_inode_wodata - sync(write and wait) inode to disk, without it's data.
> >> + * @inode: the inode to sync
> >> + *
> >> + * sync_inode_wodata() will write an inode then wait. It will also
> >> + * correctly update the inode on its superblock's dirty inode lists
> >> + * and will update inode->i_state.
> >> + *
> >> + * The caller must have a ref on the inode.
> >> + */
> >> +int sync_inode_wodata(struct inode *inode)
> >> +{
> >> + struct writeback_control wbc = {
> >> + .sync_mode = WB_SYNC_ALL, /* wait */
> >> + .nr_to_write = 0,/* no data to be written */
> >> + };
> >> + return sync_inode(inode, &wbc);
> >> +}
> >> +
> >
> > I think this function duplicates write_inode_now()?
>
> write_inode_now() seems to write data pages, but this doesn't write
> (.nr_to_write = 0).

hm, OK.

However there's not much point in writing a brand-new function when
write_inode_now() almost does the right thing. We can share the
implementation within fs-writeback.c.

<looks>

Isn't write_inode_now() buggy? If !mapping_cap_writeback_dirty() we
should still write the inode itself?



diff -puN fs/fs-writeback.c~write_inode_now-write-inode-if-not-bdi_cap_no_writeback fs/fs-writeback.c
--- devel/fs/fs-writeback.c~write_inode_now-write-inode-if-not-bdi_cap_no_writeback 2005-10-11 21:13:25.000000000 -0700
+++ devel-akpm/fs/fs-writeback.c 2005-10-11 21:13:40.000000000 -0700
@@ -558,7 +558,7 @@ int write_inode_now(struct inode *inode,
};

if (!mapping_cap_writeback_dirty(inode->i_mapping))
- return 0;
+ wbc.nr_to_write = 0;

might_sleep();
spin_lock(&inode_lock);
_

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/