git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'char-misc-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregk...
[pandora-kernel.git]
/
fs
/
btrfs
/
free-space-cache.c
diff --git
a/fs/btrfs/free-space-cache.c
b/fs/btrfs/free-space-cache.c
index
7a15fcf
..
181760f
100644
(file)
--- a/
fs/btrfs/free-space-cache.c
+++ b/
fs/btrfs/free-space-cache.c
@@
-537,6
+537,13
@@
static int io_ctl_read_entry(struct io_ctl *io_ctl,
struct btrfs_free_space *entry, u8 *type)
{
struct btrfs_free_space_entry *e;
struct btrfs_free_space *entry, u8 *type)
{
struct btrfs_free_space_entry *e;
+ int ret;
+
+ if (!io_ctl->cur) {
+ ret = io_ctl_check_crc(io_ctl, io_ctl->index);
+ if (ret)
+ return ret;
+ }
e = io_ctl->cur;
entry->offset = le64_to_cpu(e->offset);
e = io_ctl->cur;
entry->offset = le64_to_cpu(e->offset);
@@
-550,10
+557,7
@@
static int io_ctl_read_entry(struct io_ctl *io_ctl,
io_ctl_unmap_page(io_ctl);
io_ctl_unmap_page(io_ctl);
- if (io_ctl->index >= io_ctl->num_pages)
- return 0;
-
- return io_ctl_check_crc(io_ctl, io_ctl->index);
+ return 0;
}
static int io_ctl_read_bitmap(struct io_ctl *io_ctl,
}
static int io_ctl_read_bitmap(struct io_ctl *io_ctl,
@@
-561,9
+565,6
@@
static int io_ctl_read_bitmap(struct io_ctl *io_ctl,
{
int ret;
{
int ret;
- if (io_ctl->cur && io_ctl->cur != io_ctl->orig)
- io_ctl_unmap_page(io_ctl);
-
ret = io_ctl_check_crc(io_ctl, io_ctl->index);
if (ret)
return ret;
ret = io_ctl_check_crc(io_ctl, io_ctl->index);
if (ret)
return ret;
@@
-699,6
+700,8
@@
int __load_free_space_cache(struct btrfs_root *root, struct inode *inode,
num_entries--;
}
num_entries--;
}
+ io_ctl_unmap_page(&io_ctl);
+
/*
* We add the bitmaps at the end of the entries in order that
* the bitmap entries are added to the cache.
/*
* We add the bitmaps at the end of the entries in order that
* the bitmap entries are added to the cache.