diff options
author | David Howells <dhowells@redhat.com> | 2018-02-06 01:26:30 -0500 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2018-02-06 09:43:37 -0500 |
commit | 63dc4e4aa5ab61868199960979fe1feecdabd01e (patch) | |
tree | 6ec89ed2aed7883e41f543a0e651493125b4f155 /fs/afs/rotate.c | |
parent | 45df8462730d2149834980d3db16e2d2b9daaf60 (diff) |
afs: Remove unused code
Remove some old unused code.
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'fs/afs/rotate.c')
-rw-r--r-- | fs/afs/rotate.c | 235 |
1 files changed, 0 insertions, 235 deletions
diff --git a/fs/afs/rotate.c b/fs/afs/rotate.c index 892a4904fd77..cfe0931e7844 100644 --- a/fs/afs/rotate.c +++ b/fs/afs/rotate.c | |||
@@ -516,238 +516,3 @@ int afs_end_vnode_operation(struct afs_fs_cursor *fc) | |||
516 | 516 | ||
517 | return fc->ac.error; | 517 | return fc->ac.error; |
518 | } | 518 | } |
519 | |||
520 | #if 0 | ||
521 | /* | ||
522 | * Set a filesystem server cursor for using a specific FS server. | ||
523 | */ | ||
524 | int afs_set_fs_cursor(struct afs_fs_cursor *fc, struct afs_vnode *vnode) | ||
525 | { | ||
526 | afs_init_fs_cursor(fc, vnode); | ||
527 | |||
528 | read_seqlock_excl(&vnode->cb_lock); | ||
529 | if (vnode->cb_interest) { | ||
530 | if (vnode->cb_interest->server->fs_state == 0) | ||
531 | fc->server = afs_get_server(vnode->cb_interest->server); | ||
532 | else | ||
533 | fc->ac.error = vnode->cb_interest->server->fs_state; | ||
534 | } else { | ||
535 | fc->ac.error = -ESTALE; | ||
536 | } | ||
537 | read_sequnlock_excl(&vnode->cb_lock); | ||
538 | |||
539 | return fc->ac.error; | ||
540 | } | ||
541 | |||
542 | /* | ||
543 | * pick a server to use to try accessing this volume | ||
544 | * - returns with an elevated usage count on the server chosen | ||
545 | */ | ||
546 | bool afs_volume_pick_fileserver(struct afs_fs_cursor *fc, struct afs_vnode *vnode) | ||
547 | { | ||
548 | struct afs_volume *volume = vnode->volume; | ||
549 | struct afs_server *server; | ||
550 | int ret, state, loop; | ||
551 | |||
552 | _enter("%s", volume->vlocation->vldb.name); | ||
553 | |||
554 | /* stick with the server we're already using if we can */ | ||
555 | if (vnode->cb_interest && vnode->cb_interest->server->fs_state == 0) { | ||
556 | fc->server = afs_get_server(vnode->cb_interest->server); | ||
557 | goto set_server; | ||
558 | } | ||
559 | |||
560 | down_read(&volume->server_sem); | ||
561 | |||
562 | /* handle the no-server case */ | ||
563 | if (volume->nservers == 0) { | ||
564 | fc->ac.error = volume->rjservers ? -ENOMEDIUM : -ESTALE; | ||
565 | up_read(&volume->server_sem); | ||
566 | _leave(" = f [no servers %d]", fc->ac.error); | ||
567 | return false; | ||
568 | } | ||
569 | |||
570 | /* basically, just search the list for the first live server and use | ||
571 | * that */ | ||
572 | ret = 0; | ||
573 | for (loop = 0; loop < volume->nservers; loop++) { | ||
574 | server = volume->servers[loop]; | ||
575 | state = server->fs_state; | ||
576 | |||
577 | _debug("consider %d [%d]", loop, state); | ||
578 | |||
579 | switch (state) { | ||
580 | case 0: | ||
581 | goto picked_server; | ||
582 | |||
583 | case -ENETUNREACH: | ||
584 | if (ret == 0) | ||
585 | ret = state; | ||
586 | break; | ||
587 | |||
588 | case -EHOSTUNREACH: | ||
589 | if (ret == 0 || | ||
590 | ret == -ENETUNREACH) | ||
591 | ret = state; | ||
592 | break; | ||
593 | |||
594 | case -ECONNREFUSED: | ||
595 | if (ret == 0 || | ||
596 | ret == -ENETUNREACH || | ||
597 | ret == -EHOSTUNREACH) | ||
598 | ret = state; | ||
599 | break; | ||
600 | |||
601 | default: | ||
602 | case -EREMOTEIO: | ||
603 | if (ret == 0 || | ||
604 | ret == -ENETUNREACH || | ||
605 | ret == -EHOSTUNREACH || | ||
606 | ret == -ECONNREFUSED) | ||
607 | ret = state; | ||
608 | break; | ||
609 | } | ||
610 | } | ||
611 | |||
612 | error: | ||
613 | fc->ac.error = ret; | ||
614 | |||
615 | /* no available servers | ||
616 | * - TODO: handle the no active servers case better | ||
617 | */ | ||
618 | up_read(&volume->server_sem); | ||
619 | _leave(" = f [%d]", fc->ac.error); | ||
620 | return false; | ||
621 | |||
622 | picked_server: | ||
623 | /* Found an apparently healthy server. We need to register an interest | ||
624 | * in receiving callbacks before we talk to it. | ||
625 | */ | ||
626 | ret = afs_register_server_cb_interest(vnode, | ||
627 | &volume->cb_interests[loop], server); | ||
628 | if (ret < 0) | ||
629 | goto error; | ||
630 | |||
631 | fc->server = afs_get_server(server); | ||
632 | up_read(&volume->server_sem); | ||
633 | set_server: | ||
634 | fc->ac.alist = afs_get_addrlist(fc->server->addrs); | ||
635 | fc->ac.addr = &fc->ac.alist->addrs[0]; | ||
636 | _debug("USING SERVER: %pIS\n", &fc->ac.addr->transport); | ||
637 | _leave(" = t (picked %pIS)", &fc->ac.addr->transport); | ||
638 | return true; | ||
639 | } | ||
640 | |||
641 | /* | ||
642 | * release a server after use | ||
643 | * - releases the ref on the server struct that was acquired by picking | ||
644 | * - records result of using a particular server to access a volume | ||
645 | * - return true to try again, false if okay or to issue error | ||
646 | * - the caller must release the server struct if result was false | ||
647 | */ | ||
648 | bool afs_iterate_fs_cursor(struct afs_fs_cursor *fc, | ||
649 | struct afs_vnode *vnode) | ||
650 | { | ||
651 | struct afs_volume *volume = vnode->volume; | ||
652 | struct afs_server *server = fc->server; | ||
653 | unsigned loop; | ||
654 | |||
655 | _enter("%s,%pIS,%d", | ||
656 | volume->vlocation->vldb.name, &fc->ac.addr->transport, | ||
657 | fc->ac.error); | ||
658 | |||
659 | switch (fc->ac.error) { | ||
660 | /* success */ | ||
661 | case 0: | ||
662 | server->fs_state = 0; | ||
663 | _leave(" = f"); | ||
664 | return false; | ||
665 | |||
666 | /* the fileserver denied all knowledge of the volume */ | ||
667 | case -ENOMEDIUM: | ||
668 | down_write(&volume->server_sem); | ||
669 | |||
670 | /* firstly, find where the server is in the active list (if it | ||
671 | * is) */ | ||
672 | for (loop = 0; loop < volume->nservers; loop++) | ||
673 | if (volume->servers[loop] == server) | ||
674 | goto present; | ||
675 | |||
676 | /* no longer there - may have been discarded by another op */ | ||
677 | goto try_next_server_upw; | ||
678 | |||
679 | present: | ||
680 | volume->nservers--; | ||
681 | memmove(&volume->servers[loop], | ||
682 | &volume->servers[loop + 1], | ||
683 | sizeof(volume->servers[loop]) * | ||
684 | (volume->nservers - loop)); | ||
685 | volume->servers[volume->nservers] = NULL; | ||
686 | afs_put_server(afs_v2net(vnode), server); | ||
687 | volume->rjservers++; | ||
688 | |||
689 | if (volume->nservers > 0) | ||
690 | /* another server might acknowledge its existence */ | ||
691 | goto try_next_server_upw; | ||
692 | |||
693 | /* handle the case where all the fileservers have rejected the | ||
694 | * volume | ||
695 | * - TODO: try asking the fileservers for volume information | ||
696 | * - TODO: contact the VL server again to see if the volume is | ||
697 | * no longer registered | ||
698 | */ | ||
699 | up_write(&volume->server_sem); | ||
700 | afs_put_server(afs_v2net(vnode), server); | ||
701 | fc->server = NULL; | ||
702 | _leave(" = f [completely rejected]"); | ||
703 | return false; | ||
704 | |||
705 | /* problem reaching the server */ | ||
706 | case -ENETUNREACH: | ||
707 | case -EHOSTUNREACH: | ||
708 | case -ECONNREFUSED: | ||
709 | case -ETIME: | ||
710 | case -ETIMEDOUT: | ||
711 | case -EREMOTEIO: | ||
712 | /* mark the server as dead | ||
713 | * TODO: vary dead timeout depending on error | ||
714 | */ | ||
715 | spin_lock(&server->fs_lock); | ||
716 | if (!server->fs_state) { | ||
717 | server->fs_state = fc->ac.error; | ||
718 | printk("kAFS: SERVER DEAD state=%d\n", fc->ac.error); | ||
719 | } | ||
720 | spin_unlock(&server->fs_lock); | ||
721 | goto try_next_server; | ||
722 | |||
723 | /* miscellaneous error */ | ||
724 | default: | ||
725 | case -ENOMEM: | ||
726 | case -ENONET: | ||
727 | /* tell the caller to accept the result */ | ||
728 | afs_put_server(afs_v2net(vnode), server); | ||
729 | fc->server = NULL; | ||
730 | _leave(" = f [local failure]"); | ||
731 | return false; | ||
732 | } | ||
733 | |||
734 | /* tell the caller to loop around and try the next server */ | ||
735 | try_next_server_upw: | ||
736 | up_write(&volume->server_sem); | ||
737 | try_next_server: | ||
738 | afs_put_server(afs_v2net(vnode), server); | ||
739 | _leave(" = t [try next server]"); | ||
740 | return true; | ||
741 | } | ||
742 | |||
743 | /* | ||
744 | * Clean up a fileserver cursor. | ||
745 | */ | ||
746 | int afs_end_fs_cursor(struct afs_fs_cursor *fc, struct afs_net *net) | ||
747 | { | ||
748 | afs_end_cursor(&fc->ac); | ||
749 | afs_put_server(net, fc->server); | ||
750 | return fc->ac.error; | ||
751 | } | ||
752 | |||
753 | #endif | ||