mirror of https://gitee.com/openkylin/linux.git
xfs: PF_FSTRANS should never be set in ->writepage
Now that we reject direct reclaim in addition to always using GFP_NOFS allocation there's no chance we'll ever end up in ->writepage with PF_FSTRANS set. Add a WARN_ON if we hit this case, and stop checking if we'd actually need to start a transaction. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Alex Elder <aelder@sgi.com> Reviewed-by: Dave Chinner <dchinner@redhat.com>
This commit is contained in:
parent
1316d4da3f
commit
680a647b49
|
@ -894,11 +894,6 @@ xfs_aops_discard_page(
|
|||
* For unwritten space on the page we need to start the conversion to
|
||||
* regular allocated space.
|
||||
* For any other dirty buffer heads on the page we should flush them.
|
||||
*
|
||||
* If we detect that a transaction would be required to flush the page, we
|
||||
* have to check the process flags first, if we are already in a transaction
|
||||
* or disk I/O during allocations is off, we need to fail the writepage and
|
||||
* redirty the page.
|
||||
*/
|
||||
STATIC int
|
||||
xfs_vm_writepage(
|
||||
|
@ -906,7 +901,6 @@ xfs_vm_writepage(
|
|||
struct writeback_control *wbc)
|
||||
{
|
||||
struct inode *inode = page->mapping->host;
|
||||
int delalloc, unwritten;
|
||||
struct buffer_head *bh, *head;
|
||||
struct xfs_bmbt_irec imap;
|
||||
xfs_ioend_t *ioend = NULL, *iohead = NULL;
|
||||
|
@ -938,15 +932,10 @@ xfs_vm_writepage(
|
|||
goto redirty;
|
||||
|
||||
/*
|
||||
* We need a transaction if there are delalloc or unwritten buffers
|
||||
* on the page.
|
||||
*
|
||||
* If we need a transaction and the process flags say we are already
|
||||
* in a transaction, or no IO is allowed then mark the page dirty
|
||||
* again and leave the page as is.
|
||||
* Given that we do not allow direct reclaim to call us, we should
|
||||
* never be called while in a filesystem transaction.
|
||||
*/
|
||||
xfs_count_page_state(page, &delalloc, &unwritten);
|
||||
if ((current->flags & PF_FSTRANS) && (delalloc || unwritten))
|
||||
if (WARN_ON(current->flags & PF_FSTRANS))
|
||||
goto redirty;
|
||||
|
||||
/* Is this page beyond the end of the file? */
|
||||
|
|
Loading…
Reference in New Issue