aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2018-09-07 18:55:17 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-09-07 19:39:44 -0400
commitecfe951f0c1b169ea4b7dd6f3a404dfedd795bc2 (patch)
tree32ccd2ea3d2ca5833c7181123d4d878068ff22d5
parent3d0e7a9e00fd8f0de499ac3f57331d0d378304c4 (diff)
afs: Fix cell specification to permit an empty address list
Fix the cell specification mechanism to allow cells to be pre-created without having to specify at least one address (the addresses will be upcalled for). This allows the cell information preload service to avoid the need to issue loads of DNS lookups during boot to get the addresses for each cell (500+ lookups for the 'standard' cell list[*]). The lookups can be done later as each cell is accessed through the filesystem. Also remove the print statement that prints a line every time a new cell is added. [*] There are 144 cells in the list. Each cell is first looked up for an SRV record, and if that fails, for an AFSDB record. These get a list of server names, each of which then has to be looked up to get the addresses for that server. E.g.: dig srv _afs3-vlserver._udp.grand.central.org Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/afs/proc.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/fs/afs/proc.c b/fs/afs/proc.c
index 0c3285c8db95..476dcbb79713 100644
--- a/fs/afs/proc.c
+++ b/fs/afs/proc.c
@@ -98,13 +98,13 @@ static int afs_proc_cells_write(struct file *file, char *buf, size_t size)
98 goto inval; 98 goto inval;
99 99
100 args = strchr(name, ' '); 100 args = strchr(name, ' ');
101 if (!args) 101 if (args) {
102 goto inval; 102 do {
103 do { 103 *args++ = 0;
104 *args++ = 0; 104 } while(*args == ' ');
105 } while(*args == ' '); 105 if (!*args)
106 if (!*args) 106 goto inval;
107 goto inval; 107 }
108 108
109 /* determine command to perform */ 109 /* determine command to perform */
110 _debug("cmd=%s name=%s args=%s", buf, name, args); 110 _debug("cmd=%s name=%s args=%s", buf, name, args);
@@ -120,7 +120,6 @@ static int afs_proc_cells_write(struct file *file, char *buf, size_t size)
120 120
121 if (test_and_set_bit(AFS_CELL_FL_NO_GC, &cell->flags)) 121 if (test_and_set_bit(AFS_CELL_FL_NO_GC, &cell->flags))
122 afs_put_cell(net, cell); 122 afs_put_cell(net, cell);
123 printk("kAFS: Added new cell '%s'\n", name);
124 } else { 123 } else {
125 goto inval; 124 goto inval;
126 } 125 }