Message ID | 20210531073703.41498-1-nborisov@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: Use list_last_entry in add_falloc_range | expand |
On Mon, May 31, 2021 at 10:37:03AM +0300, Nikolay Borisov wrote: > Instead of calling list_entry with head->prev simply call > list_last_entry which makes it obvious which member of the list is > being referred. This allows to remove the extra 'prev' pointer. > > Signed-off-by: Nikolay Borisov <nborisov@suse.com> Added to misc-next, thanks. > --- > fs/btrfs/file.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c > index e910cc2cd45c..2b28a3daa5a9 100644 > --- a/fs/btrfs/file.c > +++ b/fs/btrfs/file.c > @@ -3034,7 +3034,6 @@ struct falloc_range { > */ > static int add_falloc_range(struct list_head *head, u64 start, u64 len) > { > - struct falloc_range *prev = NULL; > struct falloc_range *range = NULL; > > if (list_empty(head)) > @@ -3044,9 +3043,9 @@ static int add_falloc_range(struct list_head *head, u64 start, u64 len) > * As fallocate iterate by bytenr order, we only need to check > * the last range. > */ > - prev = list_entry(head->prev, struct falloc_range, list); > - if (prev->start + prev->len == start) { > - prev->len += len; > + range = list_last_entry(head, struct falloc_range, list); > + if (range->start + range->len == start) { > + range->len += len; > return 0; > } > insert: The function could be restructured a bit to get rid of the insert: label, like: if (!list_empty(head)) { range = list_last(...) if (range->start ...) { return; } } range = kmalloc(...) <the rest>
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index e910cc2cd45c..2b28a3daa5a9 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -3034,7 +3034,6 @@ struct falloc_range { */ static int add_falloc_range(struct list_head *head, u64 start, u64 len) { - struct falloc_range *prev = NULL; struct falloc_range *range = NULL; if (list_empty(head)) @@ -3044,9 +3043,9 @@ static int add_falloc_range(struct list_head *head, u64 start, u64 len) * As fallocate iterate by bytenr order, we only need to check * the last range. */ - prev = list_entry(head->prev, struct falloc_range, list); - if (prev->start + prev->len == start) { - prev->len += len; + range = list_last_entry(head, struct falloc_range, list); + if (range->start + range->len == start) { + range->len += len; return 0; } insert:
Instead of calling list_entry with head->prev simply call list_last_entry which makes it obvious which member of the list is being referred. This allows to remove the extra 'prev' pointer. Signed-off-by: Nikolay Borisov <nborisov@suse.com> --- fs/btrfs/file.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)