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

Side by Side Diff: dm-bht.c

Issue 6721019: verity: use atomic_set instead of atomic_cmpxchg in read_completed (Closed) Base URL: http://git.chromium.org/git/dm-verity.git@master
Patch Set: Created 9 years, 9 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 | no next file » | 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 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 } 434 }
435 435
436 /** 436 /**
437 * dm_bht_read_completed 437 * dm_bht_read_completed
438 * @entry: pointer to the entry that's been loaded 438 * @entry: pointer to the entry that's been loaded
439 * @status: I/O status. Non-zero is failure. 439 * @status: I/O status. Non-zero is failure.
440 * MUST always be called after a read_cb completes. 440 * MUST always be called after a read_cb completes.
441 */ 441 */
442 void dm_bht_read_completed(struct dm_bht_entry *entry, int status) 442 void dm_bht_read_completed(struct dm_bht_entry *entry, int status)
443 { 443 {
444 int state;
445 if (status) { 444 if (status) {
446 /* TODO(wad) add retry support */ 445 /* TODO(wad) add retry support */
447 DMCRIT("an I/O error occurred while reading entry"); 446 DMCRIT("an I/O error occurred while reading entry");
448 atomic_set(&entry->state, DM_BHT_ENTRY_ERROR_IO); 447 atomic_set(&entry->state, DM_BHT_ENTRY_ERROR_IO);
449 /* entry->nodes will be freed later */ 448 /* entry->nodes will be freed later */
450 return; 449 return;
451 } 450 }
452 » state = atomic_cmpxchg(&entry->state, 451 » BUG_ON(atomic_read(&entry->state) != DM_BHT_ENTRY_PENDING);
453 » » » » DM_BHT_ENTRY_PENDING, 452 » atomic_set(&entry->state, DM_BHT_ENTRY_READY);
454 » » » » DM_BHT_ENTRY_READY);
455 » if (state != DM_BHT_ENTRY_PENDING) {
456 » » DMCRIT("state changed on entry out from under io");
457 » » BUG();
458 » }
459 } 453 }
460 EXPORT_SYMBOL(dm_bht_read_completed); 454 EXPORT_SYMBOL(dm_bht_read_completed);
461 455
462 /** 456 /**
463 * dm_bht_write_completed 457 * dm_bht_write_completed
464 * @entry: pointer to the entry that's been loaded 458 * @entry: pointer to the entry that's been loaded
465 * @status: I/O status. Non-zero is failure. 459 * @status: I/O status. Non-zero is failure.
466 * Should be called after a write_cb completes. Currently only catches 460 * Should be called after a write_cb completes. Currently only catches
467 * errors which more writers don't care about. 461 * errors which more writers don't care about.
468 */ 462 */
(...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 DMERR("no root digest exists to export"); 1183 DMERR("no root digest exists to export");
1190 if (available > 0) 1184 if (available > 0)
1191 *hexdigest = 0; 1185 *hexdigest = 0;
1192 return -1; 1186 return -1;
1193 } 1187 }
1194 dm_bht_bin_to_hex(bht->root_digest, hexdigest, bht->digest_size); 1188 dm_bht_bin_to_hex(bht->root_digest, hexdigest, bht->digest_size);
1195 return 0; 1189 return 0;
1196 } 1190 }
1197 EXPORT_SYMBOL(dm_bht_root_hexdigest); 1191 EXPORT_SYMBOL(dm_bht_root_hexdigest);
1198 1192
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698