Thread (19 messages) 19 messages, 4 authors, 2017-11-22

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help