bitmap.c (3f3b442b5ad2455507c9bfdacf39a3792eb3a6d0) | bitmap.c (195c52bdd5d5ecfdabf5a7c6159efe299e534f84) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * 4 * Copyright (C) 2019-2021 Paragon Software GmbH, All rights reserved. 5 * 6 * This code builds two trees of free clusters extents. 7 * Trees are sorted by start of extent and by length of extent. 8 * NTFS_MAX_WND_EXTENTS defines the maximum number of elements in trees. --- 119 unchanged lines hidden (view full) --- 128 * wnd_close 129 * 130 * Frees all resources 131 */ 132void wnd_close(struct wnd_bitmap *wnd) 133{ 134 struct rb_node *node, *next; 135 | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * 4 * Copyright (C) 2019-2021 Paragon Software GmbH, All rights reserved. 5 * 6 * This code builds two trees of free clusters extents. 7 * Trees are sorted by start of extent and by length of extent. 8 * NTFS_MAX_WND_EXTENTS defines the maximum number of elements in trees. --- 119 unchanged lines hidden (view full) --- 128 * wnd_close 129 * 130 * Frees all resources 131 */ 132void wnd_close(struct wnd_bitmap *wnd) 133{ 134 struct rb_node *node, *next; 135 |
136 ntfs_free(wnd->free_bits); | 136 kfree(wnd->free_bits); |
137 run_close(&wnd->run); 138 139 node = rb_first(&wnd->start_tree); 140 141 while (node) { 142 next = rb_next(node); 143 rb_erase(node, &wnd->start_tree); 144 kmem_cache_free(ntfs_enode_cachep, --- 533 unchanged lines hidden (view full) --- 678 wnd->total_zeroes = nbits; 679 wnd->extent_max = MINUS_ONE_T; 680 wnd->zone_bit = wnd->zone_end = 0; 681 wnd->nwnd = bytes_to_block(sb, bitmap_size(nbits)); 682 wnd->bits_last = nbits & (wbits - 1); 683 if (!wnd->bits_last) 684 wnd->bits_last = wbits; 685 | 137 run_close(&wnd->run); 138 139 node = rb_first(&wnd->start_tree); 140 141 while (node) { 142 next = rb_next(node); 143 rb_erase(node, &wnd->start_tree); 144 kmem_cache_free(ntfs_enode_cachep, --- 533 unchanged lines hidden (view full) --- 678 wnd->total_zeroes = nbits; 679 wnd->extent_max = MINUS_ONE_T; 680 wnd->zone_bit = wnd->zone_end = 0; 681 wnd->nwnd = bytes_to_block(sb, bitmap_size(nbits)); 682 wnd->bits_last = nbits & (wbits - 1); 683 if (!wnd->bits_last) 684 wnd->bits_last = wbits; 685 |
686 wnd->free_bits = ntfs_zalloc(wnd->nwnd * sizeof(u16)); | 686 wnd->free_bits = kzalloc(wnd->nwnd * sizeof(u16), GFP_NOFS); |
687 if (!wnd->free_bits) 688 return -ENOMEM; 689 690 err = wnd_rescan(wnd); 691 if (err) 692 return err; 693 694 wnd->inited = true; --- 654 unchanged lines hidden (view full) --- 1349 1350 /* align to 8 byte boundary */ 1351 new_wnd = bytes_to_block(sb, bitmap_size(new_bits)); 1352 new_last = new_bits & (wbits - 1); 1353 if (!new_last) 1354 new_last = wbits; 1355 1356 if (new_wnd != wnd->nwnd) { | 687 if (!wnd->free_bits) 688 return -ENOMEM; 689 690 err = wnd_rescan(wnd); 691 if (err) 692 return err; 693 694 wnd->inited = true; --- 654 unchanged lines hidden (view full) --- 1349 1350 /* align to 8 byte boundary */ 1351 new_wnd = bytes_to_block(sb, bitmap_size(new_bits)); 1352 new_last = new_bits & (wbits - 1); 1353 if (!new_last) 1354 new_last = wbits; 1355 1356 if (new_wnd != wnd->nwnd) { |
1357 new_free = ntfs_malloc(new_wnd * sizeof(u16)); | 1357 new_free = kmalloc(new_wnd * sizeof(u16), GFP_NOFS); |
1358 if (!new_free) 1359 return -ENOMEM; 1360 1361 if (new_free != wnd->free_bits) 1362 memcpy(new_free, wnd->free_bits, 1363 wnd->nwnd * sizeof(short)); 1364 memset(new_free + wnd->nwnd, 0, 1365 (new_wnd - wnd->nwnd) * sizeof(short)); | 1358 if (!new_free) 1359 return -ENOMEM; 1360 1361 if (new_free != wnd->free_bits) 1362 memcpy(new_free, wnd->free_bits, 1363 wnd->nwnd * sizeof(short)); 1364 memset(new_free + wnd->nwnd, 0, 1365 (new_wnd - wnd->nwnd) * sizeof(short)); |
1366 ntfs_free(wnd->free_bits); | 1366 kfree(wnd->free_bits); |
1367 wnd->free_bits = new_free; 1368 } 1369 1370 /* Zero bits [old_bits,new_bits) */ 1371 bits = new_bits - old_bits; 1372 b0 = old_bits & (wbits - 1); 1373 1374 for (iw = old_bits >> (sb->s_blocksize_bits + 3); bits; iw += 1) { --- 145 unchanged lines hidden --- | 1367 wnd->free_bits = new_free; 1368 } 1369 1370 /* Zero bits [old_bits,new_bits) */ 1371 bits = new_bits - old_bits; 1372 b0 = old_bits & (wbits - 1); 1373 1374 for (iw = old_bits >> (sb->s_blocksize_bits + 3); bits; iw += 1) { --- 145 unchanged lines hidden --- |