diff options
author | Theodore Ts'o <tytso@mit.edu> | 2014-02-19 20:15:15 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2014-02-19 20:15:15 -0500 |
commit | 9a6633b1a3603ccdffec669033616f9ebb35a988 (patch) | |
tree | 48f84c6ddaf415831eee8245033af51454859738 /fs/ext4/extents_status.c | |
parent | ce37c42919608e96ade3748fe23c3062a0a966c5 (diff) | |
download | linux-9a6633b1a3603ccdffec669033616f9ebb35a988.tar.gz linux-9a6633b1a3603ccdffec669033616f9ebb35a988.tar.bz2 linux-9a6633b1a3603ccdffec669033616f9ebb35a988.zip |
ext4: add ext4_es_store_pblock_status()
Avoid false positives by static code analysis tools such as sparse and
coverity caused by the fact that we set the physical block, and then
the status in the extent_status structure. It is also more efficient
to set both of these values at once.
Addresses-Coverity-Id: #989077
Addresses-Coverity-Id: #989078
Addresses-Coverity-Id: #1080722
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Reviewed-by: Zheng Liu <wenqing.lz@taobao.com>
Diffstat (limited to 'fs/ext4/extents_status.c')
-rw-r--r-- | fs/ext4/extents_status.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c index 3981ff783950..a900004a63e1 100644 --- a/fs/ext4/extents_status.c +++ b/fs/ext4/extents_status.c @@ -658,8 +658,7 @@ int ext4_es_insert_extent(struct inode *inode, ext4_lblk_t lblk, newes.es_lblk = lblk; newes.es_len = len; - ext4_es_store_pblock(&newes, pblk); - ext4_es_store_status(&newes, status); + ext4_es_store_pblock_status(&newes, pblk, status); trace_ext4_es_insert_extent(inode, &newes); ext4_es_insert_extent_check(inode, &newes); @@ -699,8 +698,7 @@ void ext4_es_cache_extent(struct inode *inode, ext4_lblk_t lblk, newes.es_lblk = lblk; newes.es_len = len; - ext4_es_store_pblock(&newes, pblk); - ext4_es_store_status(&newes, status); + ext4_es_store_pblock_status(&newes, pblk, status); trace_ext4_es_cache_extent(inode, &newes); if (!len) @@ -812,13 +810,13 @@ retry: newes.es_lblk = end + 1; newes.es_len = len2; + block = 0x7FDEADBEEF; if (ext4_es_is_written(&orig_es) || - ext4_es_is_unwritten(&orig_es)) { + ext4_es_is_unwritten(&orig_es)) block = ext4_es_pblock(&orig_es) + orig_es.es_len - len2; - ext4_es_store_pblock(&newes, block); - } - ext4_es_store_status(&newes, ext4_es_status(&orig_es)); + ext4_es_store_pblock_status(&newes, block, + ext4_es_status(&orig_es)); err = __es_insert_extent(inode, &newes); if (err) { es->es_lblk = orig_es.es_lblk; |