Skip to content

Commit

Permalink
Matt Ahrens' review comments, round 3.
Browse files Browse the repository at this point in the history
1) Removed the first-fit allocator.
2) Moved the autotrim metaslab scheduling logic into vdev_auto_trim.
2a) As a consequence of #2, metaslab_trimset_t was rendered superfluous. New
   trimsets are simple range_tree_t's.
3) Made ms_trimming_ts remove extents it is working on from ms_tree and then
   add them back in.
3a) As a consequence of #3, undone all the direct changes to the allocators and
   removed metaslab_check_trim_conflict and range_tree_find_gap.

Porting Notes:
* Removed WITH_*_ALLOCATOR macros and aligned remaining allocations
  with OpenZFS.  Unused wariables warnings resolved with the gcc
  __attribute__ ((unused__ keyword.
* Added missing calls for ms_condensing_cv.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Requires-builders: none
  • Loading branch information
skiselkov authored and dweeezil committed Jan 21, 2019
1 parent d27976d commit 8fb4ccf
Show file tree
Hide file tree
Showing 7 changed files with 225 additions and 313 deletions.
2 changes: 1 addition & 1 deletion include/sys/metaslab.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ void metaslab_sync(metaslab_t *, uint64_t);
void metaslab_sync_done(metaslab_t *, uint64_t);
void metaslab_sync_reassess(metaslab_group_t *);
uint64_t metaslab_block_maxsize(metaslab_t *);
void metaslab_auto_trim(metaslab_t *, uint64_t, boolean_t);
void metaslab_auto_trim(metaslab_t *, boolean_t);
uint64_t metaslab_trim_mem_used(metaslab_t *);

/*
Expand Down
11 changes: 3 additions & 8 deletions include/sys/metaslab_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -279,11 +279,6 @@ struct metaslab_group {
kcondvar_t mg_ms_initialize_cv;
};

typedef struct {
uint64_t ts_birth; /* TXG at which this trimset starts */
range_tree_t *ts_tree; /* tree of extents in the trimset */
} metaslab_trimset_t;

/*
* This value defines the number of elements in the ms_lbas array. The value
* of 64 was chosen as it covers all power of 2 buckets up to UINT64_MAX.
Expand Down Expand Up @@ -358,10 +353,10 @@ struct metaslab {
range_tree_t *ms_allocating[TXG_SIZE];
range_tree_t *ms_allocatable;

metaslab_trimset_t *ms_cur_ts; /* currently prepared trims */
metaslab_trimset_t *ms_prev_ts; /* previous (aging) trims */
range_tree_t *ms_cur_ts; /* currently prepared trims */
range_tree_t *ms_prev_ts; /* previous (aging) trims */
kcondvar_t ms_trim_cv;
metaslab_trimset_t *ms_trimming_ts;
range_tree_t *ms_trimming_ts; /* in flight trims */

/*
* The following range trees are accessed only from syncing context.
Expand Down
1 change: 0 additions & 1 deletion include/sys/range_tree.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,6 @@ void range_tree_resize_segment(range_tree_t *rt, range_seg_t *rs,
uint64_t newstart, uint64_t newsize);
boolean_t range_tree_contains_part(range_tree_t *rt, uint64_t start,
uint64_t size);
uint64_t range_tree_find_gap(range_tree_t *rt, uint64_t start, uint64_t size);
uint64_t range_tree_space(range_tree_t *rt);
boolean_t range_tree_is_empty(range_tree_t *rt);
void range_tree_verify(range_tree_t *rt, uint64_t start, uint64_t size);
Expand Down
Loading

0 comments on commit 8fb4ccf

Please sign in to comment.