Message ID | 1525774298-6919-2-git-send-email-robbieko@synology.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, May 8, 2018 at 11:11 AM, robbieko <robbieko@synology.com> wrote: > From: Robbie Ko <robbieko@synology.com> > > moving the allocation to the end in order to avoid unnecessary > allocations > > Signed-off-by: Robbie Ko <robbieko@synology.com> Reviewed-by: Filipe Manana <fdmanana@suse.com> > --- > fs/btrfs/send.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c > index 484e2af..2830871 100644 > --- a/fs/btrfs/send.c > +++ b/fs/btrfs/send.c > @@ -2855,12 +2855,6 @@ static int orphanize_inode(struct send_ctx *sctx, u64 ino, u64 gen, > struct rb_node *parent = NULL; > struct orphan_dir_info *entry, *odi; > > - odi = kmalloc(sizeof(*odi), GFP_KERNEL); > - if (!odi) > - return ERR_PTR(-ENOMEM); > - odi->ino = dir_ino; > - odi->gen = 0; > - > while (*p) { > parent = *p; > entry = rb_entry(parent, struct orphan_dir_info, node); > @@ -2869,11 +2863,16 @@ static int orphanize_inode(struct send_ctx *sctx, u64 ino, u64 gen, > } else if (dir_ino > entry->ino) { > p = &(*p)->rb_right; > } else { > - kfree(odi); > return entry; > } > } > > + odi = kmalloc(sizeof(*odi), GFP_KERNEL); > + if (!odi) > + return ERR_PTR(-ENOMEM); > + odi->ino = dir_ino; > + odi->gen = 0; > + > rb_link_node(&odi->node, parent, p); > rb_insert_color(&odi->node, &sctx->orphan_dirs); > return odi; > -- > 1.9.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c index 484e2af..2830871 100644 --- a/fs/btrfs/send.c +++ b/fs/btrfs/send.c @@ -2855,12 +2855,6 @@ static int orphanize_inode(struct send_ctx *sctx, u64 ino, u64 gen, struct rb_node *parent = NULL; struct orphan_dir_info *entry, *odi; - odi = kmalloc(sizeof(*odi), GFP_KERNEL); - if (!odi) - return ERR_PTR(-ENOMEM); - odi->ino = dir_ino; - odi->gen = 0; - while (*p) { parent = *p; entry = rb_entry(parent, struct orphan_dir_info, node); @@ -2869,11 +2863,16 @@ static int orphanize_inode(struct send_ctx *sctx, u64 ino, u64 gen, } else if (dir_ino > entry->ino) { p = &(*p)->rb_right; } else { - kfree(odi); return entry; } } + odi = kmalloc(sizeof(*odi), GFP_KERNEL); + if (!odi) + return ERR_PTR(-ENOMEM); + odi->ino = dir_ino; + odi->gen = 0; + rb_link_node(&odi->node, parent, p); rb_insert_color(&odi->node, &sctx->orphan_dirs); return odi;