ext4: do less extent validations
PATCH 1/1 ext4: do less extent validations
Based on 2.6.29-rc7 with Aneesh Kumar's patches:
ext4: Validate extent details only when read from the disk
ext4: Add checks to validate extent entries
Sets need_to_validate=0 inside instead of outside the loop.
fs/ext4/extents.c renamed from fs/ext4/extents.c~ +1 -1
@@ -607,7 +607,6 @@ ext4_ext_find_extent(struct inode *inode, ext4_lblk_t block, struct ext4_ext_path *path) { - int need_to_validate = 0; struct ext4_extent_header *eh;struct buffer_head *bh;short int depth, i, ppos =0 , alloc =0 ;
@@ -629,6 +628,7 @@ i = depth;/* walk through the tree */ while (i) { +int need_to_validate =0 ;ext_debug ("depth %d: num %d, max %d\n" , ppos,le16_to_cpu (eh->eh_entries),le16_to_cpu (eh->eh_max));
Quoted 6 lines · Thiemo Nagel
Based on 2.6.29-rc7 with Aneesh Kumar's patches:
ext4: Validate extent details only when read from the disk
ext4: Add checks to validate extent entriesSets need_to_validate=0 inside instead of outside the loop.
OTOH, why not remove the variable altogether? (cf. attached patch)
Kind regards,
Signature · 7 lines
+-----------------------------------+--------------------------+ | Dipl.-Phys. Thiemo Nagel | | | Technische Universitaet Muenchen | Room PH1 3276 | | Physik-Department E18 | | | James-Franck-Strasse | Phone +49 89 289-12379 | | D-85747 Garching | Fax +49 89 289-12570 | +-----------------------------------+--------------------------+
fs/ext4/extents.c renamed from fs/ext4/extents.c~ +3 -2
@@ -607,7 +607,6 @@ ext4_ext_find_extent(struct inode *inode, ext4_lblk_t block, struct ext4_ext_path *path) { - int need_to_validate = 0; struct ext4_extent_header *eh;struct buffer_head *bh;short int depth, i, ppos =0 , alloc =0 ;
@@ -646,17 +645,16 @@ goto err; }/* validate the extent entries */ - need_to_validate =1 ; +if (ext4_ext_check (inode, eh, i)) + goto err; } + eh =ext_block_hdr (bh); ppos++;BUG_ON (ppos > depth); path[ppos].p_bh = bh; path[ppos].p_hdr = eh; i--;
Theodore Tso
maintainerQuoted 9 lines · Thiemo Nagel
Quoted 6 lines · Thiemo Nagel
Based on 2.6.29-rc7 with Aneesh Kumar's patches:
ext4: Validate extent details only when read from the disk
ext4: Add checks to validate extent entriesSets need_to_validate=0 inside instead of outside the loop.
OTOH, why not remove the variable altogether? (cf. attached patch)
This patch causes ext4_ext_check to be called before the variables eh is set, and before variable is updated.
- Ted
Theodore Tso
maintainerQuoted 6 lines · Thiemo Nagel
Based on 2.6.29-rc7 with Aneesh Kumar's patches:
ext4: Validate extent details only when read from the disk
ext4: Add checks to validate extent entriesSets need_to_validate=0 inside instead of outside the loop.
I've integrated this change into Aneesh's patch in the ext4 patch queue.
- Ted