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

Unified Diff: drivers/md/dm-verity.c

Issue 6883252: CHROMIUM: verity: pull up maybe_read_entry (Closed) Base URL: http://git.chromium.org/git/kernel-next.git@chromeos-2.6.38
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 side-by-side diff with in-line comments
Download patch
Index: drivers/md/dm-verity.c
diff --git a/drivers/md/dm-verity.c b/drivers/md/dm-verity.c
index b41b970dce79d1244370c54206d380ccc77ce847..4a4329670bd425ce3c99c38379cb1bc427642acd 100644
--- a/drivers/md/dm-verity.c
+++ b/drivers/md/dm-verity.c
@@ -119,8 +119,7 @@ struct verity_stats {
/* per-requested-bio private data */
enum verity_io_flags {
- VERITY_IOFLAGS_PENDING = 0x1, /* pending hash read bios */
- VERITY_IOFLAGS_CLONED = 0x2, /* original bio has been cloned */
+ VERITY_IOFLAGS_CLONED = 0x1, /* original bio has been cloned */
};
struct dm_verity_io {
@@ -598,22 +597,19 @@ static void verity_dec_pending(struct dm_verity_io *io)
goto io_error;
/* I/Os that were pending may now be ready */
- if ((io->flags & VERITY_IOFLAGS_PENDING) &&
- !verity_is_bht_populated(io)) {
- io->flags &= ~VERITY_IOFLAGS_PENDING;
- INIT_DELAYED_WORK(&io->work, kverityd_io);
- queue_delayed_work(vc->io_queue, &io->work, HZ/10);
- verity_stats_total_requeues_inc(vc);
- REQTRACE("Block %llu+ is being requeued for io (io:%p)",
- ULL(io->block), io);
- } else {
- io->flags &= ~VERITY_IOFLAGS_PENDING;
+ if (verity_is_bht_populated(io)) {
verity_stats_io_queue_dec(vc);
verity_stats_verify_queue_inc(vc);
INIT_DELAYED_WORK(&io->work, kverityd_verify);
queue_delayed_work(vc->verify_queue, &io->work, 0);
REQTRACE("Block %llu+ is being queued for verify (io:%p)",
ULL(io->block), io);
+ } else {
+ INIT_DELAYED_WORK(&io->work, kverityd_io);
+ queue_delayed_work(vc->io_queue, &io->work, HZ/10);
+ verity_stats_total_requeues_inc(vc);
+ REQTRACE("Block %llu+ is being requeued for io (io:%p)",
+ ULL(io->block), io);
}
done:
@@ -785,8 +781,6 @@ static int kverityd_bht_read_callback(void *ctx, sector_t start, u8 *dst,
static void kverityd_io_bht_populate(struct dm_verity_io *io)
{
struct verity_config *vc = io->target->private;
- int populated = 0;
- int io_status = 0;
sector_t count;
/* Submits an io request for each missing block of block hashes.
@@ -797,6 +791,8 @@ static void kverityd_io_bht_populate(struct dm_verity_io *io)
ULL(io->count), ULL(io->block), io);
for (count = 0; count < io->count; ++count) {
unsigned int block = (unsigned int)(io->block + count);
+ int populated;
+
/* Check for truncation. */
VERITY_BUG_ON((sector_t)(block) < io->block);
/* populate for each block */
@@ -812,32 +808,10 @@ static void kverityd_io_bht_populate(struct dm_verity_io *io)
io->error = -EPERM;
break;
}
- /* Accrue view of all I/O state for the full request */
- io_status |= populated;
}
REQTRACE("Block %llu+ initiated %d requests (io: %p)",
ULL(io->block), atomic_read(&io->pending) - 1, io);
- if (io_status & DM_BHT_ENTRY_REQUESTED) {
- /* If no data is pending another I/O request, this io
- * will get bounced on the next queue when the last async call
- * returns.
- */
- DMDEBUG("io has outstanding requests %p");
- }
-
- /* Some I/O is pending outside of this request. */
- if (io_status & DM_BHT_ENTRY_PENDING) {
- /* PENDING will cause a BHT requeue as delayed work */
- /* TODO(wad) add a callback to dm-bht for pending_cb. Then for
- * each entry, the io could be delayed heavily until the end
- * read cb requeue them. (entries could be added to the
- * stored I/O context but races could be a challenge.
- */
- DMDEBUG("io is pending %p");
- io->flags |= VERITY_IOFLAGS_PENDING;
- }
-
/* If I/O requests were issues on behalf of populate, then the last
* request will result in a requeue. If all data was pending from
* other requests, this will be requeued now.
« drivers/md/dm-bht.c ('K') | « drivers/md/dm-bht.c ('k') | include/linux/dm-bht.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698