Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(247)

Side by Side Diff: drivers/md/dm-bht.c

Issue 6757012: CHROMIUM: verity: remove entry_readahead (Closed) Base URL: http://git.chromium.org/git/kernel.git@master
Patch Set: Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | include/linux/dm-bht.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 The Chromium OS Authors <chromium-os-dev@chromium.org> 2 * Copyright (C) 2010 The Chromium OS Authors <chromium-os-dev@chromium.org>
3 * 3 *
4 * Device-Mapper block hash tree interface. 4 * Device-Mapper block hash tree interface.
5 * See Documentation/device-mapper/dm-bht.txt for details. 5 * See Documentation/device-mapper/dm-bht.txt for details.
6 * 6 *
7 * This file is released under the GPL. 7 * This file is released under the GPL.
8 */ 8 */
9 9
10 #include <asm/atomic.h> 10 #include <asm/atomic.h>
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 } 306 }
307 307
308 /* Setup callback stubs */ 308 /* Setup callback stubs */
309 bht->read_cb = &dm_bht_read_callback_stub; 309 bht->read_cb = &dm_bht_read_callback_stub;
310 bht->write_cb = &dm_bht_write_callback_stub; 310 bht->write_cb = &dm_bht_write_callback_stub;
311 311
312 status = dm_bht_initialize_entries(bht); 312 status = dm_bht_initialize_entries(bht);
313 if (status) 313 if (status)
314 goto bad_entries_alloc; 314 goto bad_entries_alloc;
315 315
316 bht->entry_readahead = 0;
317 return 0; 316 return 0;
318 317
319 bad_entries_alloc: 318 bad_entries_alloc:
320 while (bht->depth-- > 0) 319 while (bht->depth-- > 0)
321 kfree(bht->levels[bht->depth].entries); 320 kfree(bht->levels[bht->depth].entries);
322 bad_node_count: 321 bad_node_count:
323 kfree(bht->levels); 322 kfree(bht->levels);
324 bad_level_alloc: 323 bad_level_alloc:
325 bad_block_count: 324 bad_block_count:
326 bad_depth: 325 bad_depth:
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after
968 read_status = dm_bht_maybe_read_entries(bht, read_cb_ctx, 967 read_status = dm_bht_maybe_read_entries(bht, read_cb_ctx,
969 depth, entry_index, 968 depth, entry_index,
970 1, false); 969 1, false);
971 if (unlikely(read_status < 0)) { 970 if (unlikely(read_status < 0)) {
972 DMCRIT("failure occurred reading entry %u depth %u", 971 DMCRIT("failure occurred reading entry %u depth %u",
973 entry_index, depth); 972 entry_index, depth);
974 return read_status; 973 return read_status;
975 } 974 }
976 /* Accrue return code flags */ 975 /* Accrue return code flags */
977 populated |= read_status; 976 populated |= read_status;
978
979 /* Attempt to pull in up to entry_readahead extra entries on
980 * this I/O call iff we're doing the read right now. This
981 * helps optimize sequential access to the mapped drive.
982 */
983 if (bht->entry_readahead &&
984 (read_status & DM_BHT_ENTRY_REQUESTED)) {
985 unsigned int readahead_count;
986 entry_index++;
987 readahead_count = min(bht->entry_readahead,
988 level->count - entry_index);
989 /* The result is completely ignored since this call is
990 * critical for the current request.
991 */
992 if (readahead_count)
993 dm_bht_maybe_read_entries(bht, read_cb_ctx,
994 depth, entry_index,
995 readahead_count,
996 true);
997 }
998 } 977 }
999 978
1000 /* All nodes are ready. The hash for the block_index can be verified */ 979 /* All nodes are ready. The hash for the block_index can be verified */
1001 return populated; 980 return populated;
1002 } 981 }
1003 EXPORT_SYMBOL(dm_bht_populate); 982 EXPORT_SYMBOL(dm_bht_populate);
1004 983
1005 984
1006 /** 985 /**
1007 * dm_bht_verify_block - checks that all nodes in the path for @block are valid 986 * dm_bht_verify_block - checks that all nodes in the path for @block are valid
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 * @bht: pointer to a dm_bht_create()d bht 1096 * @bht: pointer to a dm_bht_create()d bht
1118 * @write_cb: callback function used for all write requests by @bht 1097 * @write_cb: callback function used for all write requests by @bht
1119 */ 1098 */
1120 void dm_bht_set_write_cb(struct dm_bht *bht, dm_bht_callback write_cb) 1099 void dm_bht_set_write_cb(struct dm_bht *bht, dm_bht_callback write_cb)
1121 { 1100 {
1122 bht->write_cb = write_cb; 1101 bht->write_cb = write_cb;
1123 } 1102 }
1124 EXPORT_SYMBOL(dm_bht_set_write_cb); 1103 EXPORT_SYMBOL(dm_bht_set_write_cb);
1125 1104
1126 /** 1105 /**
1127 * dm_bht_set_entry_readahead - set verify mode
1128 * @bht: pointer to a dm_bht_create()d bht
1129 * @readahead_count: number of entries to readahead from a given level
1130 */
1131 void dm_bht_set_entry_readahead(struct dm_bht *bht,
1132 unsigned int readahead_count)
1133 {
1134 bht->entry_readahead = readahead_count;
1135 }
1136 EXPORT_SYMBOL(dm_bht_set_entry_readahead);
1137
1138 /**
1139 * dm_bht_set_root_hexdigest - sets an unverified root digest hash from hex 1106 * dm_bht_set_root_hexdigest - sets an unverified root digest hash from hex
1140 * @bht: pointer to a dm_bht_create()d bht 1107 * @bht: pointer to a dm_bht_create()d bht
1141 * @hexdigest: array of u8s containing the new digest in binary 1108 * @hexdigest: array of u8s containing the new digest in binary
1142 * Returns non-zero on error. hexdigest should be NUL terminated. 1109 * Returns non-zero on error. hexdigest should be NUL terminated.
1143 */ 1110 */
1144 int dm_bht_set_root_hexdigest(struct dm_bht *bht, const u8 *hexdigest) 1111 int dm_bht_set_root_hexdigest(struct dm_bht *bht, const u8 *hexdigest)
1145 { 1112 {
1146 if (!bht->root_digest) { 1113 if (!bht->root_digest) {
1147 DMCRIT("No allocation for root digest. Call dm_bht_create"); 1114 DMCRIT("No allocation for root digest. Call dm_bht_create");
1148 return -1; 1115 return -1;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1182 if (!bht->root_digest) { 1149 if (!bht->root_digest) {
1183 DMERR("no root digest exists to export"); 1150 DMERR("no root digest exists to export");
1184 if (available > 0) 1151 if (available > 0)
1185 *hexdigest = 0; 1152 *hexdigest = 0;
1186 return -1; 1153 return -1;
1187 } 1154 }
1188 dm_bht_bin_to_hex(bht->root_digest, hexdigest, bht->digest_size); 1155 dm_bht_bin_to_hex(bht->root_digest, hexdigest, bht->digest_size);
1189 return 0; 1156 return 0;
1190 } 1157 }
1191 EXPORT_SYMBOL(dm_bht_root_hexdigest); 1158 EXPORT_SYMBOL(dm_bht_root_hexdigest);
1192
OLDNEW
« no previous file with comments | « no previous file | include/linux/dm-bht.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698