aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/pohmelfs/trans.c
diff options
context:
space:
mode:
authorEvgeniy Polyakov <zbr@ioremap.net>2009-03-27 08:04:29 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-04-17 14:06:30 -0400
commite0ca87391694dfacd01465d5c01c579c3b8b63e0 (patch)
tree7d295aa23034586fd7374b3e614e0844d39f351e /drivers/staging/pohmelfs/trans.c
parentf2739de19176009b14475207d5418cd79e7f0ba3 (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.c30
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 }
486out: 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",