diff options
author | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2011-01-17 15:27:56 -0500 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2011-01-17 16:24:30 -0500 |
commit | 18d1d7fbcc260e67d249bf90b454d8cf34288453 (patch) | |
tree | 160479d5a455ea2ac111ecbbf0e48f6a5dfcf0ea /fs/ubifs/tnc.c | |
parent | d8cdda3efb9331bedbcca2343591eab2316f4cae (diff) |
UBIFS: introduce mounting flag
This is a preparational patch which removes the 'c->always_chk_crc' which was
set during mounting and remounting to R/W mode and introduces 'c->mounting'
flag which is set when mounting. Now the 'c->always_chk_crc' flag is the
same as 'c->remounting_rw && c->mounting'.
This patch is a preparation for the next one which will need to know when we
are mounting and remounting to R/W mode, which is exactly what
'c->always_chk_crc' effectively is, but its name does not suite the
next patch. The other possibility would be to just re-name it, but then
we'd end up with less logical flags coverage.
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'fs/ubifs/tnc.c')
-rw-r--r-- | fs/ubifs/tnc.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/ubifs/tnc.c b/fs/ubifs/tnc.c index ad9cf0133622..de485979ca39 100644 --- a/fs/ubifs/tnc.c +++ b/fs/ubifs/tnc.c | |||
@@ -447,8 +447,11 @@ static int tnc_read_node_nm(struct ubifs_info *c, struct ubifs_zbranch *zbr, | |||
447 | * | 447 | * |
448 | * Note, this function does not check CRC of data nodes if @c->no_chk_data_crc | 448 | * Note, this function does not check CRC of data nodes if @c->no_chk_data_crc |
449 | * is true (it is controlled by corresponding mount option). However, if | 449 | * is true (it is controlled by corresponding mount option). However, if |
450 | * @c->always_chk_crc is true, @c->no_chk_data_crc is ignored and CRC is always | 450 | * @c->mounting or @c->remounting_rw is true (we are mounting or re-mounting to |
451 | * checked. | 451 | * R/W mode), @c->no_chk_data_crc is ignored and CRC is checked. This is |
452 | * because during mounting or re-mounting from R/O mode to R/W mode we may read | ||
453 | * journal nodes (when replying the journal or doing the recovery) and the | ||
454 | * journal nodes may potentially be corrupted, so checking is required. | ||
452 | */ | 455 | */ |
453 | static int try_read_node(const struct ubifs_info *c, void *buf, int type, | 456 | static int try_read_node(const struct ubifs_info *c, void *buf, int type, |
454 | int len, int lnum, int offs) | 457 | int len, int lnum, int offs) |
@@ -476,7 +479,8 @@ static int try_read_node(const struct ubifs_info *c, void *buf, int type, | |||
476 | if (node_len != len) | 479 | if (node_len != len) |
477 | return 0; | 480 | return 0; |
478 | 481 | ||
479 | if (type == UBIFS_DATA_NODE && !c->always_chk_crc && c->no_chk_data_crc) | 482 | if (type == UBIFS_DATA_NODE && c->no_chk_data_crc && !c->mounting && |
483 | !c->remounting_rw) | ||
480 | return 1; | 484 | return 1; |
481 | 485 | ||
482 | crc = crc32(UBIFS_CRC32_INIT, buf + 8, node_len - 8); | 486 | crc = crc32(UBIFS_CRC32_INIT, buf + 8, node_len - 8); |