diff options
author | Evgeniy Polyakov <zbr@ioremap.net> | 2009-03-27 08:04:29 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-04-17 14:06:30 -0400 |
commit | e0ca87391694dfacd01465d5c01c579c3b8b63e0 (patch) | |
tree | 7d295aa23034586fd7374b3e614e0844d39f351e /drivers/staging/pohmelfs/trans.c | |
parent | f2739de19176009b14475207d5418cd79e7f0ba3 (diff) |
Staging: Pohmelfs: Added IO permissions and priorities.
Signed-off-by: Evgeniy Polyakov <zbr@ioremap.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/pohmelfs/trans.c')
-rw-r--r-- | drivers/staging/pohmelfs/trans.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/drivers/staging/pohmelfs/trans.c b/drivers/staging/pohmelfs/trans.c index b89f9f36b35..168fc8998c3 100644 --- a/drivers/staging/pohmelfs/trans.c +++ b/drivers/staging/pohmelfs/trans.c | |||
@@ -456,34 +456,22 @@ int netfs_trans_finish_send(struct netfs_trans *t, struct pohmelfs_sb *psb) | |||
456 | __func__, t, t->gen, t->iovec.iov_len, t->page_num, psb->active_state); | 456 | __func__, t, t->gen, t->iovec.iov_len, t->page_num, psb->active_state); |
457 | #endif | 457 | #endif |
458 | mutex_lock(&psb->state_lock); | 458 | mutex_lock(&psb->state_lock); |
459 | |||
460 | if ((t->flags & NETFS_TRANS_SINGLE_DST) && psb->active_state) { | ||
461 | st = &psb->active_state->state; | ||
462 | |||
463 | err = -EPIPE; | ||
464 | if (netfs_state_poll(st) & POLLOUT) { | ||
465 | err = netfs_trans_push_dst(t, st); | ||
466 | if (!err) { | ||
467 | err = netfs_trans_send(t, st); | ||
468 | if (err) { | ||
469 | netfs_trans_drop_last(t, st); | ||
470 | } else { | ||
471 | pohmelfs_switch_active(psb); | ||
472 | goto out; | ||
473 | } | ||
474 | } | ||
475 | } | ||
476 | pohmelfs_switch_active(psb); | ||
477 | } | ||
478 | |||
479 | list_for_each_entry(c, &psb->state_list, config_entry) { | 459 | list_for_each_entry(c, &psb->state_list, config_entry) { |
480 | st = &c->state; | 460 | st = &c->state; |
481 | 461 | ||
462 | if (t->flags & NETFS_TRANS_SINGLE_DST) { | ||
463 | if (!(st->ctl.perm & POHMELFS_IO_PERM_READ)) | ||
464 | continue; | ||
465 | } else { | ||
466 | if (!(st->ctl.perm & POHMELFS_IO_PERM_WRITE)) | ||
467 | continue; | ||
468 | } | ||
469 | |||
482 | err = netfs_trans_push(t, st); | 470 | err = netfs_trans_push(t, st); |
483 | if (!err && (t->flags & NETFS_TRANS_SINGLE_DST)) | 471 | if (!err && (t->flags & NETFS_TRANS_SINGLE_DST)) |
484 | break; | 472 | break; |
485 | } | 473 | } |
486 | out: | 474 | |
487 | mutex_unlock(&psb->state_lock); | 475 | mutex_unlock(&psb->state_lock); |
488 | #if 0 | 476 | #if 0 |
489 | dprintk("%s: fully sent t: %p, gen: %u, size: %u, page_num: %u, err: %d.\n", | 477 | dprintk("%s: fully sent t: %p, gen: %u, size: %u, page_num: %u, err: %d.\n", |