Commit f57ad937 authored by Qu Wenruo's avatar Qu Wenruo Committed by David Sterba

btrfs: rename PagePrivate2 to PageOrdered inside btrfs

Inside btrfs we use Private2 page status to indicate we have an ordered
extent with pending IO for the sector.

But the page status name, Private2, tells us nothing about the bit
itself, so this patch will rename it to Ordered.
And with extra comment about the bit added, so reader who is still
uncertain about the page Ordered status, will find the comment pretty
easily.
Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 3b835840
...@@ -3799,4 +3799,14 @@ static inline bool btrfs_is_zoned(const struct btrfs_fs_info *fs_info) ...@@ -3799,4 +3799,14 @@ static inline bool btrfs_is_zoned(const struct btrfs_fs_info *fs_info)
return fs_info->zoned != 0; return fs_info->zoned != 0;
} }
/*
* We use page status Private2 to indicate there is an ordered extent with
* unfinished IO.
*
* Rename the Private2 accessors to Ordered, to improve readability.
*/
#define PageOrdered(page) PagePrivate2(page)
#define SetPageOrdered(page) SetPagePrivate2(page)
#define ClearPageOrdered(page) ClearPagePrivate2(page)
#endif #endif
...@@ -1975,8 +1975,8 @@ static int __process_pages_contig(struct address_space *mapping, ...@@ -1975,8 +1975,8 @@ static int __process_pages_contig(struct address_space *mapping,
} }
for (i = 0; i < ret; i++) { for (i = 0; i < ret; i++) {
if (page_ops & PAGE_SET_PRIVATE2) if (page_ops & PAGE_SET_ORDERED)
SetPagePrivate2(pages[i]); SetPageOrdered(pages[i]);
if (locked_page && pages[i] == locked_page) { if (locked_page && pages[i] == locked_page) {
put_page(pages[i]); put_page(pages[i]);
......
...@@ -39,7 +39,7 @@ enum { ...@@ -39,7 +39,7 @@ enum {
/* Page starts writeback, clear dirty bit and set writeback bit */ /* Page starts writeback, clear dirty bit and set writeback bit */
#define PAGE_START_WRITEBACK (1 << 1) #define PAGE_START_WRITEBACK (1 << 1)
#define PAGE_END_WRITEBACK (1 << 2) #define PAGE_END_WRITEBACK (1 << 2)
#define PAGE_SET_PRIVATE2 (1 << 3) #define PAGE_SET_ORDERED (1 << 3)
#define PAGE_SET_ERROR (1 << 4) #define PAGE_SET_ERROR (1 << 4)
#define PAGE_LOCK (1 << 5) #define PAGE_LOCK (1 << 5)
......
...@@ -170,7 +170,7 @@ static inline void btrfs_cleanup_ordered_extents(struct btrfs_inode *inode, ...@@ -170,7 +170,7 @@ static inline void btrfs_cleanup_ordered_extents(struct btrfs_inode *inode,
index++; index++;
if (!page) if (!page)
continue; continue;
ClearPagePrivate2(page); ClearPageOrdered(page);
put_page(page); put_page(page);
} }
...@@ -1151,15 +1151,16 @@ static noinline int cow_file_range(struct btrfs_inode *inode, ...@@ -1151,15 +1151,16 @@ static noinline int cow_file_range(struct btrfs_inode *inode,
btrfs_dec_block_group_reservations(fs_info, ins.objectid); btrfs_dec_block_group_reservations(fs_info, ins.objectid);
/* we're not doing compressed IO, don't unlock the first /*
* page (which the caller expects to stay locked), don't * We're not doing compressed IO, don't unlock the first page
* clear any dirty bits and don't set any writeback bits * (which the caller expects to stay locked), don't clear any
* dirty bits and don't set any writeback bits
* *
* Do set the Private2 bit so we know this page was properly * Do set the Ordered (Private2) bit so we know this page was
* setup for writepage * properly setup for writepage.
*/ */
page_ops = unlock ? PAGE_UNLOCK : 0; page_ops = unlock ? PAGE_UNLOCK : 0;
page_ops |= PAGE_SET_PRIVATE2; page_ops |= PAGE_SET_ORDERED;
extent_clear_unlock_delalloc(inode, start, start + ram_size - 1, extent_clear_unlock_delalloc(inode, start, start + ram_size - 1,
locked_page, locked_page,
...@@ -1823,7 +1824,7 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode, ...@@ -1823,7 +1824,7 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode,
locked_page, EXTENT_LOCKED | locked_page, EXTENT_LOCKED |
EXTENT_DELALLOC | EXTENT_DELALLOC |
EXTENT_CLEAR_DATA_RESV, EXTENT_CLEAR_DATA_RESV,
PAGE_UNLOCK | PAGE_SET_PRIVATE2); PAGE_UNLOCK | PAGE_SET_ORDERED);
cur_offset = extent_end; cur_offset = extent_end;
...@@ -2571,7 +2572,7 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work) ...@@ -2571,7 +2572,7 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
lock_extent_bits(&inode->io_tree, page_start, page_end, &cached_state); lock_extent_bits(&inode->io_tree, page_start, page_end, &cached_state);
/* already ordered? We're done */ /* already ordered? We're done */
if (PagePrivate2(page)) if (PageOrdered(page))
goto out_reserved; goto out_reserved;
ordered = btrfs_lookup_ordered_range(inode, page_start, PAGE_SIZE); ordered = btrfs_lookup_ordered_range(inode, page_start, PAGE_SIZE);
...@@ -2646,8 +2647,8 @@ int btrfs_writepage_cow_fixup(struct page *page, u64 start, u64 end) ...@@ -2646,8 +2647,8 @@ int btrfs_writepage_cow_fixup(struct page *page, u64 start, u64 end)
struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
struct btrfs_writepage_fixup *fixup; struct btrfs_writepage_fixup *fixup;
/* this page is properly in the ordered list */ /* This page has ordered extent covering it already */
if (PagePrivate2(page)) if (PageOrdered(page))
return 0; return 0;
/* /*
...@@ -8300,9 +8301,9 @@ static int btrfs_migratepage(struct address_space *mapping, ...@@ -8300,9 +8301,9 @@ static int btrfs_migratepage(struct address_space *mapping,
if (page_has_private(page)) if (page_has_private(page))
attach_page_private(newpage, detach_page_private(page)); attach_page_private(newpage, detach_page_private(page));
if (PagePrivate2(page)) { if (PageOrdered(page)) {
ClearPagePrivate2(page); ClearPageOrdered(page);
SetPagePrivate2(newpage); SetPageOrdered(newpage);
} }
if (mode != MIGRATE_SYNC_NO_COPY) if (mode != MIGRATE_SYNC_NO_COPY)
...@@ -8329,9 +8330,10 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset, ...@@ -8329,9 +8330,10 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
* page, nor bio can be submitted for this page. * page, nor bio can be submitted for this page.
* *
* But already submitted bio can still be finished on this page. * But already submitted bio can still be finished on this page.
* Furthermore, endio function won't skip page which has Private2 * Furthermore, endio function won't skip page which has Ordered
* already cleared, so it's possible for endio and invalidatepage to do * (Private2) already cleared, so it's possible for endio and
* the same ordered extent accounting twice on one page. * invalidatepage to do the same ordered extent accounting twice
* on one page.
* *
* So here we wait for any submitted bios to finish, so that we won't * So here we wait for any submitted bios to finish, so that we won't
* do double ordered extent accounting on the same page. * do double ordered extent accounting on the same page.
...@@ -8377,17 +8379,17 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset, ...@@ -8377,17 +8379,17 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
range_end = min(ordered->file_offset + ordered->num_bytes - 1, range_end = min(ordered->file_offset + ordered->num_bytes - 1,
page_end); page_end);
if (!PagePrivate2(page)) { if (!PageOrdered(page)) {
/* /*
* If Private2 is cleared, it means endio has already * If Ordered (Private2) is cleared, it means endio has
* been executed for the range. * already been executed for the range.
* We can't delete the extent states as * We can't delete the extent states as
* btrfs_finish_ordered_io() may still use some of them. * btrfs_finish_ordered_io() may still use some of them.
*/ */
delete_states = false; delete_states = false;
goto next; goto next;
} }
ClearPagePrivate2(page); ClearPageOrdered(page);
/* /*
* IO on this page will never be started, so we need to account * IO on this page will never be started, so we need to account
...@@ -8454,10 +8456,10 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset, ...@@ -8454,10 +8456,10 @@ static void btrfs_invalidatepage(struct page *page, unsigned int offset,
} }
/* /*
* We have iterated through all ordered extents of the page, the page * We have iterated through all ordered extents of the page, the page
* should not have Private2 anymore, or the above iteration does * should not have Ordered (Private2) anymore, or the above iteration
* something wrong. * did something wrong.
*/ */
ASSERT(!PagePrivate2(page)); ASSERT(!PageOrdered(page));
if (!inode_evicting) if (!inode_evicting)
__btrfs_releasepage(page, GFP_NOFS); __btrfs_releasepage(page, GFP_NOFS);
ClearPageChecked(page); ClearPageChecked(page);
......
...@@ -390,16 +390,16 @@ void btrfs_mark_ordered_io_finished(struct btrfs_inode *inode, ...@@ -390,16 +390,16 @@ void btrfs_mark_ordered_io_finished(struct btrfs_inode *inode,
if (page) { if (page) {
/* /*
* Private2 bit indicates whether we still have pending * Ordered (Private2) bit indicates whether we still
* io unfinished for the ordered extent. * have pending io unfinished for the ordered extent.
* *
* If there's no such bit, we need to skip to next range. * If there's no such bit, we need to skip to next range.
*/ */
if (!PagePrivate2(page)) { if (!PageOrdered(page)) {
cur += len; cur += len;
continue; continue;
} }
ClearPagePrivate2(page); ClearPageOrdered(page);
} }
/* Now we're fine to update the accounting */ /* Now we're fine to update the accounting */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment