diff options
author | Yan <yanzheng@21cn.com> | 2008-02-05 15:40:36 -0500 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-09-25 11:04:00 -0400 |
commit | 7261009ceaee65e4683be6e474d1ea85a1b1b26c (patch) | |
tree | fb06ec79b70c2528921725d95df056d1065eacc8 /fs/btrfs | |
parent | 068fe39fa18e8921062e2e16e6aa2b46768b2a35 (diff) |
btrfs_drop_extents: handle BTRFS_INODE_REF_KEY types
It's possible "key.type == BTRFS_INODE_REF_KEY" and "key.offset >= end".
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/file.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 184bde1cfc3d..bfa4149c053d 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -507,11 +507,12 @@ next_slot: | |||
507 | slot = path->slots[0]; | 507 | slot = path->slots[0]; |
508 | ret = 0; | 508 | ret = 0; |
509 | btrfs_item_key_to_cpu(leaf, &key, slot); | 509 | btrfs_item_key_to_cpu(leaf, &key, slot); |
510 | 510 | if (btrfs_key_type(&key) == BTRFS_EXTENT_DATA_KEY && | |
511 | if (key.offset >= end || key.objectid != inode->i_ino) { | 511 | key.offset >= end) { |
512 | goto out; | 512 | goto out; |
513 | } | 513 | } |
514 | if (btrfs_key_type(&key) > BTRFS_EXTENT_DATA_KEY) { | 514 | if (btrfs_key_type(&key) > BTRFS_EXTENT_DATA_KEY || |
515 | key.objectid != inode->i_ino) { | ||
515 | goto out; | 516 | goto out; |
516 | } | 517 | } |
517 | if (recow) { | 518 | if (recow) { |