[RFC PATCH v3.2 5/6] btrfs: qgroup: Introduce extent changeset for qgroup reserve functions

2017-05-16 Thread Qu Wenruo
Introduce a new parameter, struct extent_changeset for btrfs_qgroup_reserved_data() and its callers. Such extent_changeset was used in btrfs_qgroup_reserve_data() to record which range it reserved in current reserve, so it can free it at error path. The reason we need to export it to callers is,

Re: [RFC PATCH v3.2 5/6] btrfs: qgroup: Introduce extent changeset for qgroup reserve functions

2017-05-17 Thread David Sterba
On Wed, May 17, 2017 at 10:56:27AM +0800, Qu Wenruo wrote: > Introduce a new parameter, struct extent_changeset for > btrfs_qgroup_reserved_data() and its callers. > > Such extent_changeset was used in btrfs_qgroup_reserve_data() to record > which range it reserved in current reserve, so it can fr

Re: [RFC PATCH v3.2 5/6] btrfs: qgroup: Introduce extent changeset for qgroup reserve functions

2017-05-17 Thread Qu Wenruo
At 05/17/2017 11:37 PM, David Sterba wrote: On Wed, May 17, 2017 at 10:56:27AM +0800, Qu Wenruo wrote: Introduce a new parameter, struct extent_changeset for btrfs_qgroup_reserved_data() and its callers. Such extent_changeset was used in btrfs_qgroup_reserve_data() to record which range it re

Re: [RFC PATCH v3.2 5/6] btrfs: qgroup: Introduce extent changeset for qgroup reserve functions

2017-05-18 Thread David Sterba
On Thu, May 18, 2017 at 08:24:26AM +0800, Qu Wenruo wrote: > >> +static inline void extent_changeset_init(struct extent_changeset > >> *changeset) > >> +{ > >> + changeset->bytes_changed = 0; > >> + ulist_init(&changeset->range_changed); > >> +} > >> + > >> +static inline struct extent_changeset

Re: [RFC PATCH v3.2 5/6] btrfs: qgroup: Introduce extent changeset for qgroup reserve functions

2017-05-18 Thread Qu Wenruo
At 05/18/2017 09:45 PM, David Sterba wrote: On Thu, May 18, 2017 at 08:24:26AM +0800, Qu Wenruo wrote: +static inline void extent_changeset_init(struct extent_changeset *changeset) +{ + changeset->bytes_changed = 0; + ulist_init(&changeset->range_changed); +} + +static inline struc

Re: [RFC PATCH v3.2 5/6] btrfs: qgroup: Introduce extent changeset for qgroup reserve functions

2017-05-29 Thread David Sterba
On Fri, May 19, 2017 at 08:32:18AM +0800, Qu Wenruo wrote: > At 05/18/2017 09:45 PM, David Sterba wrote: > > On Thu, May 18, 2017 at 08:24:26AM +0800, Qu Wenruo wrote: > +static inline void extent_changeset_init(struct extent_changeset > *changeset) > +{ > +changeset->b

Re: [RFC PATCH v3.2 5/6] btrfs: qgroup: Introduce extent changeset for qgroup reserve functions

2017-05-30 Thread Qu Wenruo
At 05/29/2017 11:51 PM, David Sterba wrote: On Fri, May 19, 2017 at 08:32:18AM +0800, Qu Wenruo wrote: At 05/18/2017 09:45 PM, David Sterba wrote: On Thu, May 18, 2017 at 08:24:26AM +0800, Qu Wenruo wrote: +static inline void extent_changeset_init(struct extent_changeset *changeset) +{ +

Re: [RFC PATCH v3.2 5/6] btrfs: qgroup: Introduce extent changeset for qgroup reserve functions

2017-05-31 Thread David Sterba
On Wed, May 31, 2017 at 08:31:35AM +0800, Qu Wenruo wrote: > >> Yes it's hard to find such deadlock especially when lockdep will not > >> detect it. > >> > >> And this makes the advantage of using stack memory in v3 patch more > >> obvious. > >> > >> I didn't realize the extra possible deadlock wh

Re: [RFC PATCH v3.2 5/6] btrfs: qgroup: Introduce extent changeset for qgroup reserve functions

2017-05-31 Thread Qu Wenruo
At 05/31/2017 10:30 PM, David Sterba wrote: On Wed, May 31, 2017 at 08:31:35AM +0800, Qu Wenruo wrote: Yes it's hard to find such deadlock especially when lockdep will not detect it. And this makes the advantage of using stack memory in v3 patch more obvious. I didn't realize the extra possi

Re: [RFC PATCH v3.2 5/6] btrfs: qgroup: Introduce extent changeset for qgroup reserve functions

2017-06-02 Thread David Sterba
On Thu, Jun 01, 2017 at 09:01:26AM +0800, Qu Wenruo wrote: > > > At 05/31/2017 10:30 PM, David Sterba wrote: > > On Wed, May 31, 2017 at 08:31:35AM +0800, Qu Wenruo wrote: > Yes it's hard to find such deadlock especially when lockdep will not > detect it. > > And this makes th