aboutsummaryrefslogtreecommitdiffstats
path: root/fs/afs/rotate.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2018-02-06 01:26:30 -0500
committerDavid Howells <dhowells@redhat.com>2018-02-06 09:43:37 -0500
commit63dc4e4aa5ab61868199960979fe1feecdabd01e (patch)
tree6ec89ed2aed7883e41f543a0e651493125b4f155 /fs/afs/rotate.c
parent45df8462730d2149834980d3db16e2d2b9daaf60 (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.c235
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 */
524int 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 */
546bool 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
612error:
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
622picked_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);
633set_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 */
648bool 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 */
735try_next_server_upw:
736 up_write(&volume->server_sem);
737try_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 */
746int 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