Andreas Gruenbacher 706cb5492c gfs2: Inode dirtying fix
With the recent iomap write page reclaim deadlock fix, it turns out that the
GLF_DIRTY flag isn't always set when it needs to be anymore: previously, this
happened as a side effect of always adding the inode buffer head to the current
transaction with gfs2_trans_add_meta, but this isn't happening consistently
anymore.  Fix by removing an additional unnecessary gfs2_trans_add_meta call
and by setting the GLF_DIRTY flag in gfs2_iomap_end.

(The GLF_DIRTY flag causes inode_go_sync to flush the transaction log when
syncing out the glock of that inode.  When the flag isn't set, inode_go_sync
will skip inodes, including ones with an i_state of I_DIRTY_PAGES, which will
lead to cluster incoherency.)

In addition, in gfs2_iomap_page_done, if the metadata has changed, mark the
inode as I_DIRTY_DATASYNC to have the inode added to the current transaction:
we don't expect metadata to change here, but let's err on the safe side.

Fixes: d0a22a4b03b8 ("gfs2: Fix iomap write page reclaim deadlock");
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
2019-07-31 18:51:50 +02:00
..
2019-07-26 11:08:37 -07:00
2019-07-18 18:14:47 -05:00
2019-07-12 17:37:53 -07:00
2019-07-12 16:54:37 -07:00
2019-07-31 18:51:50 +02:00
2019-07-25 11:05:11 +02:00
2019-07-03 17:52:09 -04:00
2019-07-12 16:54:37 -07:00
2019-06-21 09:58:42 -07:00
\n
2019-07-10 20:27:07 -07:00
\n
2019-07-10 20:09:17 -07:00
\n
2019-07-10 20:27:07 -07:00
2019-07-18 11:18:00 -07:00
2019-07-26 10:32:12 -07:00
2019-07-15 21:20:52 -07:00
2019-05-21 08:23:41 +01:00
2019-07-19 11:38:12 -07:00
2019-04-08 18:21:02 -05:00
2019-03-08 14:48:40 -08:00
2019-07-12 16:54:37 -07:00
2019-07-26 10:32:12 -07:00
2019-07-10 21:22:43 -07:00
2019-02-07 16:38:35 +01:00
2019-07-04 22:01:58 -04:00