[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160512185958.GA32376@linux.intel.com>
Date: Thu, 12 May 2016 12:59:58 -0600
From: Ross Zwisler <ross.zwisler@...ux.intel.com>
To: Jan Kara <jack@...e.cz>
Cc: linux-nvdimm@...ts.01.org, Ted Tso <tytso@....edu>,
linux-ext4@...r.kernel.org,
Vishal Verma <vishal.l.verma@...el.com>,
Ross Zwisler <ross.zwisler@...ux.intel.com>,
Dan Williams <dan.j.williams@...el.com>,
linux-fsdevel@...r.kernel.org
Subject: Re: [PATCH 2/7] dax: Make huge page handling depend of CONFIG_BROKEN
On Thu, May 12, 2016 at 06:29:15PM +0200, Jan Kara wrote:
> Currently the handling of huge pages for DAX is racy. For example the
> following can happen:
>
> CPU0 (THP write fault) CPU1 (normal read fault)
>
> __dax_pmd_fault() __dax_fault()
> get_block(inode, block, &bh, 0) -> not mapped
> get_block(inode, block, &bh, 0)
> -> not mapped
> if (!buffer_mapped(&bh) && write)
> get_block(inode, block, &bh, 1) -> allocates blocks
> truncate_pagecache_range(inode, lstart, lend);
> dax_load_hole();
>
> This results in data corruption since process on CPU1 won't see changes
> into the file done by CPU0.
>
> The race can happen even if two normal faults race however with THP the
> situation is even worse because the two faults don't operate on the same
> entries in the radix tree and we want to use these entries for
> serialization. So make THP support in DAX code depend on CONFIG_BROKEN
> for now.
>
> Signed-off-by: Jan Kara <jack@...e.cz>
Reviewed-by: Ross Zwisler <ross.zwisler@...ux.intel.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists