linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] osd fs: __r4w_get_page rely on PageUptodate for uptodate
@ 2015-10-29 18:43 Hugh Dickins
  2015-11-01 10:00 ` Boaz Harrosh
  0 siblings, 1 reply; 7+ messages in thread
From: Hugh Dickins @ 2015-10-29 18:43 UTC (permalink / raw)
  To: Boaz Harrosh
  Cc: Andrew Morton, Benny Halevy, Trond Myklebust, Christoph Lameter,
	linux-fsdevel, linux-kernel, linux-nfs, linux-mm, osd-dev

Patch "mm: migrate dirty page without clear_page_dirty_for_io etc",
presently staged in mmotm and linux-next, simplifies the migration of
a PageDirty pagecache page: one stat needs moving from zone to zone
and that's about all.

It's convenient and safest for it to shift the PageDirty bit from old
page to new, just before updating the zone stats: before copying data
and marking the new PageUptodate.  This is all done while both pages
are isolated and locked, just as before; and just as before, there's
a moment when the new page is visible in the radix_tree, but not yet
PageUptodate.  What's new is that it may now be briefly visible as
PageDirty before it is PageUptodate.

When I scoured the tree to see if this could cause a problem anywhere,
the only places I found were in two similar functions __r4w_get_page():
which look up a page with find_get_page() (not using page lock), then
claim it's uptodate if it's PageDirty or PageWriteback or PageUptodate.

I'm not sure whether that was right before, but now it might be wrong
(on rare occasions): only claim the page is uptodate if PageUptodate.
Or perhaps the page in question could never be migratable anyway?

Signed-off-by: Hugh Dickins <hughd@google.com>
---

 fs/exofs/inode.c             |    5 +----
 fs/nfs/objlayout/objio_osd.c |    5 +----
 2 files changed, 2 insertions(+), 8 deletions(-)

--- 4.3-next/fs/exofs/inode.c	2015-08-30 11:34:09.000000000 -0700
+++ linux/fs/exofs/inode.c	2015-10-28 16:55:18.795554294 -0700
@@ -592,10 +592,7 @@ static struct page *__r4w_get_page(void
 			}
 			unlock_page(page);
 		}
-		if (PageDirty(page) || PageWriteback(page))
-			*uptodate = true;
-		else
-			*uptodate = PageUptodate(page);
+		*uptodate = PageUptodate(page);
 		EXOFS_DBGMSG2("index=0x%lx uptodate=%d\n", index, *uptodate);
 		return page;
 	} else {
--- 4.3-next/fs/nfs/objlayout/objio_osd.c	2015-10-21 18:35:07.620645439 -0700
+++ linux/fs/nfs/objlayout/objio_osd.c	2015-10-28 16:53:55.083686639 -0700
@@ -476,10 +476,7 @@ static struct page *__r4w_get_page(void
 		}
 		unlock_page(page);
 	}
-	if (PageDirty(page) || PageWriteback(page))
-		*uptodate = true;
-	else
-		*uptodate = PageUptodate(page);
+	*uptodate = PageUptodate(page);
 	dprintk("%s: index=0x%lx uptodate=%d\n", __func__, index, *uptodate);
 	return page;
 }

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-11-03 15:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-29 18:43 [PATCH] osd fs: __r4w_get_page rely on PageUptodate for uptodate Hugh Dickins
2015-11-01 10:00 ` Boaz Harrosh
     [not found]   ` <5635E2B4.5070308-rh7Tgz9RNieUD9Wbbkgo/g@public.gmane.org>
2015-11-01 23:39     ` Hugh Dickins
2015-11-02 11:05       ` Boaz Harrosh
2015-11-03  2:49         ` Hugh Dickins
2015-11-03  9:24           ` Boaz Harrosh
2015-11-03 15:39             ` Hugh Dickins

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).