|
@@ -40,6 +40,9 @@ enum {
|
|
|
PCG_USED, /* this object is in use. */
|
|
|
PCG_ACCT_LRU, /* page has been accounted for */
|
|
|
PCG_FILE_MAPPED, /* page is accounted as "mapped" */
|
|
|
+ PCG_FILE_DIRTY, /* page is dirty */
|
|
|
+ PCG_FILE_WRITEBACK, /* page is under writeback */
|
|
|
+ PCG_FILE_UNSTABLE_NFS, /* page is NFS unstable */
|
|
|
PCG_MIGRATION, /* under page migration */
|
|
|
};
|
|
|
|
|
@@ -59,6 +62,10 @@ static inline void ClearPageCgroup##uname(struct page_cgroup *pc) \
|
|
|
static inline int TestClearPageCgroup##uname(struct page_cgroup *pc) \
|
|
|
{ return test_and_clear_bit(PCG_##lname, &pc->flags); }
|
|
|
|
|
|
+#define TESTSETPCGFLAG(uname, lname) \
|
|
|
+static inline int TestSetPageCgroup##uname(struct page_cgroup *pc) \
|
|
|
+ { return test_and_set_bit(PCG_##lname, &pc->flags); }
|
|
|
+
|
|
|
/* Cache flag is set only once (at allocation) */
|
|
|
TESTPCGFLAG(Cache, CACHE)
|
|
|
CLEARPCGFLAG(Cache, CACHE)
|
|
@@ -78,6 +85,22 @@ SETPCGFLAG(FileMapped, FILE_MAPPED)
|
|
|
CLEARPCGFLAG(FileMapped, FILE_MAPPED)
|
|
|
TESTPCGFLAG(FileMapped, FILE_MAPPED)
|
|
|
|
|
|
+SETPCGFLAG(FileDirty, FILE_DIRTY)
|
|
|
+CLEARPCGFLAG(FileDirty, FILE_DIRTY)
|
|
|
+TESTPCGFLAG(FileDirty, FILE_DIRTY)
|
|
|
+TESTCLEARPCGFLAG(FileDirty, FILE_DIRTY)
|
|
|
+TESTSETPCGFLAG(FileDirty, FILE_DIRTY)
|
|
|
+
|
|
|
+SETPCGFLAG(FileWriteback, FILE_WRITEBACK)
|
|
|
+CLEARPCGFLAG(FileWriteback, FILE_WRITEBACK)
|
|
|
+TESTPCGFLAG(FileWriteback, FILE_WRITEBACK)
|
|
|
+
|
|
|
+SETPCGFLAG(FileUnstableNFS, FILE_UNSTABLE_NFS)
|
|
|
+CLEARPCGFLAG(FileUnstableNFS, FILE_UNSTABLE_NFS)
|
|
|
+TESTPCGFLAG(FileUnstableNFS, FILE_UNSTABLE_NFS)
|
|
|
+TESTCLEARPCGFLAG(FileUnstableNFS, FILE_UNSTABLE_NFS)
|
|
|
+TESTSETPCGFLAG(FileUnstableNFS, FILE_UNSTABLE_NFS)
|
|
|
+
|
|
|
SETPCGFLAG(Migration, MIGRATION)
|
|
|
CLEARPCGFLAG(Migration, MIGRATION)
|
|
|
TESTPCGFLAG(Migration, MIGRATION)
|