aboutsummaryrefslogtreecommitdiffstats
path: root/extent_io.h
diff options
context:
space:
mode:
authorJosef Bacik <jbacik@fusionio.com>2013-10-01 09:00:19 -0400
committerChris Mason <chris.mason@fusionio.com>2013-10-16 08:23:12 -0400
commitc64485544baa9ffc5fbedd5661a05bdee1b37598 (patch)
tree4461ef770a41b3056a0f0763d308d4f6a53e07b6 /extent_io.h
parent2454473dd1647e83d6eba9852eeb08d331e9ea9a (diff)
downloadbtrfs-progs-c64485544baa9ffc5fbedd5661a05bdee1b37598.tar.gz
btrfs-progs-c64485544baa9ffc5fbedd5661a05bdee1b37598.tar.xz
btrfs-progs-c64485544baa9ffc5fbedd5661a05bdee1b37598.zip
Btrfs-progs: keep track of transid failures and fix them if possible
A user was reporting an issue with bad transid errors on his blocks. The thing is that btrfs-progs will ignore transid failures for things like restore and fsck so we can do a best effort to fix a users file system. So fsck can put together a coherent view of the file system with stale blocks. So if everything else is ok in the mind of fsck then we can recow these blocks to fix the generation and the user can get their file system back. Thanks, Signed-off-by: Josef Bacik <jbacik@fusionio.com> Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'extent_io.h')
-rw-r--r--extent_io.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/extent_io.h b/extent_io.h
index ad283cd..68fb9ce 100644
--- a/extent_io.h
+++ b/extent_io.h
@@ -39,6 +39,7 @@
#define EXTENT_DEFRAG_DONE (1 << 7)
#define EXTENT_BUFFER_FILLED (1 << 8)
#define EXTENT_CSUM (1 << 9)
+#define EXTENT_BAD_TRANSID (1 << 10)
#define EXTENT_IOBITS (EXTENT_LOCKED | EXTENT_WRITEBACK)
#define BLOCK_GROUP_DATA EXTENT_WRITEBACK
@@ -72,6 +73,7 @@ struct extent_buffer {
u32 len;
struct extent_io_tree *tree;
struct list_head lru;
+ struct list_head recow;
int refs;
int flags;
int fd;