On Tue, Dec 15, 2020 at 12:00:26PM -0500, Josef Bacik wrote:
> While testing other things I was noticing that sometimes my VM would
> fail to load the btrfs module because the self test failed like this
> 
> BTRFS: selftest: fs/btrfs/tests/inode-tests.c:963 miscount, wanted 1, got 0
> 
> This turned out to be because sometimes the btrfs ino would be the btree
> inode number, and thus we'd skip calling the set extent delalloc bit
> helper, and thus not adjust ->outstanding_extents.  Fix this by making
> sure we init test inodes with a valid inode number so that we don't get
> random failures during self tests.
> 
> Signed-off-by: Josef Bacik <[email protected]>
> ---
>  fs/btrfs/tests/btrfs-tests.c | 7 ++++++-
>  fs/btrfs/tests/inode-tests.c | 9 ---------
>  2 files changed, 6 insertions(+), 10 deletions(-)
> 
> diff --git a/fs/btrfs/tests/btrfs-tests.c b/fs/btrfs/tests/btrfs-tests.c
> index 8ca334d554af..0fede1514a3e 100644
> --- a/fs/btrfs/tests/btrfs-tests.c
> +++ b/fs/btrfs/tests/btrfs-tests.c
> @@ -55,8 +55,13 @@ struct inode *btrfs_new_test_inode(void)
>       struct inode *inode;
>  
>       inode = new_inode(test_mnt->mnt_sb);
> -     if (inode)
> +     if (inode) {
> +             inode->i_mode = S_IFREG;
> +             BTRFS_I(inode)->location.type = BTRFS_INODE_ITEM_KEY;
> +             BTRFS_I(inode)->location.objectid = BTRFS_FIRST_FREE_OBJECTID;
> +             BTRFS_I(inode)->location.offset = 0;
>               inode_init_owner(inode, NULL, S_IFREG);
> +     }

As this is adding more statements to the if-block, I'd rather rewrite it
as

        inode = new();
        if (!inode)
                return NULL;

        inode-> ...

Reply via email to