summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgkostka <kostka.grzegorz@gmail.com>2017-05-20 09:23:54 +0200
committergkostka <kostka.grzegorz@gmail.com>2017-05-20 10:12:47 +0200
commitdee6a10ab37fef64f47ddfadeae02a9449fb9294 (patch)
tree3c955699e4a36b4cc325edd73bb975227a11fe23 /src
parentb1a34c56f4556f256fc16096190e77b69a715197 (diff)
ext4_dir_idx: make qsort as a default dir idx sort algorithm
Diffstat (limited to 'src')
-rw-r--r--src/ext4_dir_idx.c43
1 files changed, 1 insertions, 42 deletions
diff --git a/src/ext4_dir_idx.c b/src/ext4_dir_idx.c
index e1efa28..b56e9fe 100644
--- a/src/ext4_dir_idx.c
+++ b/src/ext4_dir_idx.c
@@ -830,42 +830,6 @@ cleanup:
return rc;
}
-#if CONFIG_DIR_INDEX_COMB_SORT
-#define SWAP_ENTRY(se1, se2) \
- do { \
- struct ext4_dx_sort_entry tmp = se1; \
- se1 = se2; \
- se2 = tmp; \
- \
-} while (0)
-
-static void comb_sort(struct ext4_dx_sort_entry *se, uint32_t count)
-{
- struct ext4_dx_sort_entry *p, *q, *top = se + count - 1;
- bool more;
- /* Combsort */
- while (count > 2) {
- count = (count * 10) / 13;
- if (count - 9 < 2)
- count = 11;
- for (p = top, q = p - count; q >= se; p--, q--)
- if (p->hash < q->hash)
- SWAP_ENTRY(*p, *q);
- }
- /* Bubblesort */
- do {
- more = 0;
- q = top;
- while (q-- > se) {
- if (q[1].hash >= q[0].hash)
- continue;
- SWAP_ENTRY(*(q + 1), *q);
- more = 1;
- }
- } while (more);
-}
-#else
-
/**@brief Compare function used to pass in quicksort implementation.
* It can compare two entries by hash value.
* @param arg1 First entry
@@ -888,7 +852,6 @@ static int ext4_dir_dx_entry_comparator(const void *arg1, const void *arg2)
else
return 1;
}
-#endif
/**@brief Insert new index entry to block.
* Note that space for new entry must be checked by caller.
@@ -996,13 +959,9 @@ static int ext4_dir_dx_split_data(struct ext4_inode_ref *inode_ref,
de = (void *)((uint8_t *)de + elen);
}
-/* Sort all entries */
-#if CONFIG_DIR_INDEX_COMB_SORT
- comb_sort(sort, idx);
-#else
qsort(sort, idx, sizeof(struct ext4_dx_sort_entry),
ext4_dir_dx_entry_comparator);
-#endif
+
/* Allocate new block for store the second part of entries */
ext4_fsblk_t new_fblock;
uint32_t new_iblock;