projects
/
platform
/
upstream
/
btrfs-progs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
btrfs-progs: check: introduce function to check dir_item
[platform/upstream/btrfs-progs.git]
/
extent_io.c
diff --git
a/extent_io.c
b/extent_io.c
index
07695ef
..
7b9eb8e
100644
(file)
--- a/
extent_io.c
+++ b/
extent_io.c
@@
-27,6
+27,7
@@
#include "list.h"
#include "ctree.h"
#include "volumes.h"
#include "list.h"
#include "ctree.h"
#include "volumes.h"
+#include "internal.h"
void extent_io_tree_init(struct extent_io_tree *tree)
{
void extent_io_tree_init(struct extent_io_tree *tree)
{
@@
-538,12
+539,9
@@
static struct extent_buffer *__alloc_extent_buffer(struct extent_io_tree *tree,
{
struct extent_buffer *eb;
{
struct extent_buffer *eb;
- eb = malloc(sizeof(struct extent_buffer) + blocksize);
- if (!eb) {
- BUG();
+ eb = calloc(1, sizeof(struct extent_buffer) + blocksize);
+ if (!eb)
return NULL;
return NULL;
- }
- memset(eb, 0, sizeof(struct extent_buffer) + blocksize);
eb->start = bytenr;
eb->len = blocksize;
eb->start = bytenr;
eb->len = blocksize;
@@
-564,7
+562,7
@@
struct extent_buffer *btrfs_clone_extent_buffer(struct extent_buffer *src)
struct extent_buffer *new;
new = __alloc_extent_buffer(NULL, src->start, src->len);
struct extent_buffer *new;
new = __alloc_extent_buffer(NULL, src->start, src->len);
- if (
new == NULL
)
+ if (
!new
)
return NULL;
copy_extent_buffer(new, src, 0, 0, src->len);
return NULL;
copy_extent_buffer(new, src, 0, 0, src->len);
@@
-771,10
+769,14
@@
int write_data_to_disk(struct btrfs_fs_info *info, void *buf, u64 offset,
u64 stripe_len = this_len;
this_len = min(this_len, bytes_left);
u64 stripe_len = this_len;
this_len = min(this_len, bytes_left);
- this_len = min(this_len, (u64)info->tree_root->
leaf
size);
+ this_len = min(this_len, (u64)info->tree_root->
node
size);
eb = malloc(sizeof(struct extent_buffer) + this_len);
eb = malloc(sizeof(struct extent_buffer) + this_len);
- BUG_ON(!eb);
+ if (!eb) {
+ fprintf(stderr, "cannot allocate memory for eb\n");
+ ret = -ENOMEM;
+ goto out;
+ }
memset(eb, 0, sizeof(struct extent_buffer) + this_len);
eb->start = offset;
memset(eb, 0, sizeof(struct extent_buffer) + this_len);
eb->start = offset;
@@
-825,6
+827,10
@@
int write_data_to_disk(struct btrfs_fs_info *info, void *buf, u64 offset,
multi = NULL;
}
return 0;
multi = NULL;
}
return 0;
+
+out:
+ kfree(raid_map);
+ return ret;
}
int set_extent_buffer_dirty(struct extent_buffer *eb)
}
int set_extent_buffer_dirty(struct extent_buffer *eb)
@@
-885,3
+891,9
@@
void memset_extent_buffer(struct extent_buffer *eb, char c,
{
memset(eb->data + start, c, len);
}
{
memset(eb->data + start, c, len);
}
+
+int extent_buffer_test_bit(struct extent_buffer *eb, unsigned long start,
+ unsigned long nr)
+{
+ return le_test_bit(nr, (u8 *)eb->data + start);
+}