lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120301163837.GA13104@quack.suse.cz>
Date:	Thu, 1 Mar 2012 17:38:37 +0100
From:	Jan Kara <jack@...e.cz>
To:	Fengguang Wu <fengguang.wu@...el.com>
Cc:	Andrew Morton <akpm@...ux-foundation.org>,
	Greg Thelen <gthelen@...gle.com>, Jan Kara <jack@...e.cz>,
	Ying Han <yinghan@...gle.com>,
	"hannes@...xchg.org" <hannes@...xchg.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@...fujitsu.com>,
	Rik van Riel <riel@...hat.com>, Mel Gorman <mgorman@...e.de>,
	Minchan Kim <minchan.kim@...il.com>,
	Linux Memory Management List <linux-mm@...ck.org>,
	LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 5/9] writeback: introduce the pageout work

On Thu 01-03-12 20:36:40, Wu Fengguang wrote:
> > Please have a think about all of this and see if you can demonstrate
> > how the iput() here is guaranteed safe.
> 
> There are already several __iget()/iput() calls inside fs-writeback.c.
> The existing iput() calls already demonstrate its safety?
> 
> Basically the flusher works in this way
> 
> - the dirty inode list i_wb_list does not reference count the inode at all
> 
> - the flusher thread does something analog to igrab() and set I_SYNC
>   before going off to writeout the inode
> 
> - evict() will wait for completion of I_SYNC
  Yes, you are right that currently writeback code already holds inode
references and so it can happen that flusher thread drops the last inode
reference. But currently that could create problems only if someone waits
for flusher thread to make progress while effectively blocking e.g.
truncate from happening. Currently flusher thread handles sync(2) and
background writeback and filesystems take care to not hold any locks
blocking IO / truncate while possibly waiting for these.

But with your addition situation changes significantly - now anyone doing
allocation can block and do allocation from all sorts of places including
ones where we hold locks blocking other fs activity. The good news is that
we use GFP_NOFS in such places. So if GFP_NOFS allocation cannot possibly
depend on a completion of some writeback work, then I'd still be
comfortable with dropping inode references from writeback code. But Andrew
is right this at least needs some arguing...

								Honza
-- 
Jan Kara <jack@...e.cz>
SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ