Re: [PATCH v2 09/11] Btrfs: kill the btree_inode
From: David Sterba <hidden>
Date: 2017-11-27 17:10:51
Also in:
linux-btrfs, linux-fsdevel
On Wed, Nov 22, 2017 at 04:16:04PM -0500, Josef Bacik wrote:
quoted hunk ↗ jump to hunk
From: Josef Bacik <redacted>@@ -4802,8 +4885,8 @@ struct extent_buffer *btrfs_clone_extent_buffer(struct extent_buffer *src) return new; } -struct extent_buffer *__alloc_dummy_extent_buffer(struct btrfs_fs_info *fs_info, - u64 start, unsigned long len) +struct extent_buffer *alloc_dummy_extent_buffer(struct btrfs_eb_info *eb_info, + u64 start, unsigned long len)
The __alloc_dummy_extent_buffer takes the length parameter because it's used in tests that need to pass different values. I've removed nodesize from alloc_dummy_extent_buffer and the callchain because we know that it's always going to be fs_info->nodesize. Reintroducing it does not look like a good idea.
{
struct extent_buffer *eb;
unsigned long num_pages;quoted hunk ↗ jump to hunk
@@ -160,13 +162,25 @@ struct extent_state { #endif }; +struct btrfs_eb_info { + struct btrfs_fs_info *fs_info; + struct extent_io_tree io_tree; + struct extent_io_tree io_failure_tree; + + /* Extent buffer radix tree */ + spinlock_t buffer_lock; + struct radix_tree_root buffer_radix; + struct list_lru lru_list; + pgoff_t writeback_index; +}; + #define INLINE_EXTENT_BUFFER_PAGES 16 #define MAX_INLINE_EXTENT_BUFFER_SIZE (INLINE_EXTENT_BUFFER_PAGES * PAGE_SIZE) struct extent_buffer { u64 start; unsigned long len; unsigned long bflags; - struct btrfs_fs_info *fs_info; + struct btrfs_eb_info *eb_info;
This single change increases the patch size just because all the callers need to be updated. I suggest to keep fs_info in extent_buffer, we're not going to lose much in terms of memory: currently there are 14 eb objects in a 4k slab page, with the additional fs_info it's still 14, 280 * 14 = 3920, unused 176 bytes 288 * 14 = 4032, unused 64 bytes
spinlock_t refs_lock; atomic_t refs; atomic_t io_pages;
-- 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>