On Mon, Aug 05, 2019 at 05:47:02PM +0300, Nikolay Borisov wrote: > This series aims at making the nocow path code more understanble. This done > by > doing the following things: > > 1. Re-arranging and renaming some variables so that they have more expressive > names, as well as reducing their scope. Patch 1 does this. > > 2. Since run_delalloc_nocow open-codes traversal of the btree it contains a > lot > of checks which do not pertain to the nocow logic per-se, but are there to > ensure the code has found the correct EXTENT_ITEM. The nocow logic itself > contains some subtle checks which are non-obvious at first. Patch 2 rectifies > this by adding appropriate comments. > > 3. Patch 3 duplicates the call to btrfs_add_ordered_extent into each branch > for > REGULAR or PREALLOC extents. Despite this duplication I think the code flow > becomes more streamlined and easier to understand. It also does away with one > of the local variables. > > 4. Patch 4 moves extent checking code into the branch it pertains to. > > 5. Patch 5 simplifies the conditions of the main 'if' in that function > > 6. Finally, patch 6 removes the BUG_ON that will be triggered in case > btrfs_add_ordered_extent returned ENOMEM. Now it's replaced with proper > graceful > error handling. > > This patchset has been tested with a full xfstest run with -onodatacow option > mount options set. > > Nikolay Borisov (6): > btrfs: Refactor run_delalloc_nocow > btrfs: Improve comments around nocow path > btrfs: Simplify run_delalloc_nocow > btrfs: Streamline code in run_delalloc_nocow in case of inline extents > btrfs: Simplify extent type check > btrfs: Remove BUG_ON from run_delalloc_nocow
The patchset has been in for-next, no problems so far so I'd like to promote it to misc-next. Patch 2 has some nontrivial changes suggested, please update and resend. Thanks.