Re: [PATCH 3/3] reiser4: in our own sync writes, mark pages dirty before marking them writeback.

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

 



On 2015-10-09 at 15:27 +0200, Edward Shishkin wrote:
> Hi Ivan,
> 
> On 10/09/2015 01:16 PM, Ivan Shapovalov wrote:
> > Ref.: https://www.mail-archive.com/linux-f2fs-devel%40lists.sourcef
> > orge.net/msg02745.html
> 
> Do you have a stack trace for reiser4?
> How to reproduce it?

I'll rebuild the kernel without the fix and provide you with the oops'
stacktrace asap.

I guess that it's tied to the config. In my case, it is reproducible on
each boot, just as the DE starts up and something issues the first
fsync().

> 
> > 
> > Signed-off-by: Ivan Shapovalov <intelfx100@xxxxxxxxx>
> > ---
> > 
> > Lustre seemed to encounter the same oops and fixed it in a
> > different way, removing
> > set_page_writeback() altogether:
> > https://lkml.org/lkml/2015/7/30/806
> > 
> > We cannot just remove the call to set_page_writeback() at least
> > because later
> > we wait on PG_Writeback flag of that page (in jwait_io())... What
> > is meant by
> > "synchronous write" in that Lustre patch? Is our write
> > "synchronous" in the
> > same sense?
> 
> 
> Nop.
> This is a generic function, it doesn't differentiate the writes.

Well, that lustre vvp_page_prep_write() is generic as well, and that
patch adds a conditional to differentiate sync/async writes. What is
meant by "sync" in that context? sync == page is locked until I/O ends?
Or something else?

-- 
Ivan Shapovalov / intelfx /

> >   I don't know VFS well. Cc'ing Oleg.
> > 
> >   fs/reiser4/wander.c | 2 ++
> >   1 file changed, 2 insertions(+)
> > 
> > diff --git a/fs/reiser4/wander.c b/fs/reiser4/wander.c
> > index ce20d50..0e2c105 100644
> > --- a/fs/reiser4/wander.c
> > +++ b/fs/reiser4/wander.c
> > @@ -782,7 +782,9 @@ static int write_jnodes_to_disk_extent(
> >   					node_plugin_by_node(JZNOD
> > E(cur))->csum(JZNODE(cur), 0);
> >   				zrelse(JZNODE(cur));
> >   			}
> > +
> >   			ClearPageError(pg);
> > +			set_page_dirty_notag(pg);
> >   			set_page_writeback(pg);
> >   
> >   			if (get_current_context()->entd) {
> 


Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux File System Development]     [Linux BTRFS]     [Linux NFS]     [Linux Filesystems]     [Ext4 Filesystem]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Resources]

  Powered by Linux