On 2019/2/25 下午11:46, Josef Bacik wrote: > On Mon, Feb 25, 2019 at 01:26:57PM +0100, David Sterba wrote: >> On Mon, Feb 25, 2019 at 08:17:52PM +0800, Qu Wenruo wrote: >>> >>> >>> On 2019/2/25 下午8:15, David Sterba wrote: >>>> On Mon, Feb 25, 2019 at 01:50:43PM +0800, Qu Wenruo wrote: >>>>> All users of extent_io_tree::private_data are expecting struct inode*. >>>>> So just use struct inode* to replace extent_io_tree::private_data, and >>>>> this should provide better type check. >>>>> >>>>> Signed-off-by: Qu Wenruo <[email protected]> >>>>> struct extent_io_tree { >>>>> struct rb_root state; >>>>> - void *private_data; >>>>> + struct inode *inode; >>>>> u64 dirty_bytes; >>>>> int track_uptodate; >>>>> spinlock_t lock; >>>> >>>> So this is effectively reverting c6100a4b4e3d1650deafd ("Btrfs: replace >>>> tree->mapping with tree->private_data"), >>> >>> That commit message doesn't explain why this is needed for btree_inode >>> removal. >>> >>> Any idea what the extra type would be used in that case? >> >> I don't know, Josef in CC to answer that. > > Yeah there's a mapping tree thing I make to keep track of the metadata, it > holds > the radix tree for the eb's and a bunch of other stuff. This needs to stay a > void *. Thanks,
Then what about an union here? BTW, for no btree_inode case, how do we distinguish regular inode pointer with yours? An extra member? Thanks, Qu > > Josef >
signature.asc
Description: OpenPGP digital signature
