Re: [PATCH 09/10] Btrfs: kill the btree_inode
From: Josef Bacik <josef@toxicpanda.com>
Date: 2017-11-17 01:13:23
Also in:
linux-fsdevel, linux-mm
On Thu, Nov 16, 2017 at 05:03:08PM -0800, Liu Bo wrote:
On Tue, Nov 14, 2017 at 04:56:55PM -0500, Josef Bacik wrote:quoted
From: Josef Bacik <redacted> In order to more efficiently support sub-page blocksizes we need to stop allocating pages from pagecache for our metadata. Instead switch to using the account_metadata* counters for making sure we are keeping the system aware of how much dirty metadata we have, and use the ->free_cached_objects super operation in order to handle freeing up extent buffers. This greatly simplifies how we deal with extent buffers as now we no longer have to tie the page cache reclaimation stuff to the extent buffer stuff. This will also allow us to simply kmalloc() our data for sub-page blocksizes.The patch is too big for one to review, but so far it looks good to me, a few comments.
Yeah unfortunately I already did all the prep work I could in previous series, this stuff has to all be done whole hog otherwise things won't compile.
quoted
Signed-off-by: Josef Bacik <redacted> ---...quoted
-static int check_async_write(struct btrfs_inode *bi) +static int check_async_write(void) { - if (atomic_read(&bi->sync_writers)) + if (current->journal_info)Please add a comment that explains we're called from commit transaction.
Yup.
quoted
return 0; #ifdef CONFIG_X86 if (static_cpu_has(X86_FEATURE_XMM4_2))...quoted
@@ -4977,12 +5054,12 @@ struct extent_buffer *alloc_extent_buffer(struct btrfs_fs_info *fs_info, unsigned long len = fs_info->nodesize; unsigned long num_pages = num_extent_pages(start, len); unsigned long i; - unsigned long index = start >> PAGE_SHIFT; struct extent_buffer *eb; struct extent_buffer *exists = NULL; struct page *p; - struct address_space *mapping = fs_info->btree_inode->i_mapping; - int uptodate = 1; + struct btrfs_eb_info *eb_info = fs_info->eb_info; +// struct zone *last_zone = NULL; +// struct pg_data_t *last_pgdata = NULL;hmm, a typo?
Oops. Thanks, Josef