afs: Reorganise volume and server trees to be rooted on the cell
[linux-2.6-microblaze.git] / fs / afs / proc.c
index 256c3ef..309a7b5 100644 (file)
@@ -209,11 +209,10 @@ static const char afs_vol_types[3][3] = {
  */
 static int afs_proc_cell_volumes_show(struct seq_file *m, void *v)
 {
-       struct afs_cell *cell = PDE_DATA(file_inode(m->file));
-       struct afs_volume *vol = list_entry(v, struct afs_volume, proc_link);
+       struct afs_volume *vol = hlist_entry(v, struct afs_volume, proc_link);
 
        /* Display header on line 1 */
-       if (v == &cell->proc_volumes) {
+       if (v == SEQ_START_TOKEN) {
                seq_puts(m, "USE VID      TY NAME\n");
                return 0;
        }
@@ -231,8 +230,8 @@ static void *afs_proc_cell_volumes_start(struct seq_file *m, loff_t *_pos)
 {
        struct afs_cell *cell = PDE_DATA(file_inode(m->file));
 
-       read_lock(&cell->proc_lock);
-       return seq_list_start_head(&cell->proc_volumes, *_pos);
+       rcu_read_lock();
+       return seq_hlist_start_head_rcu(&cell->proc_volumes, *_pos);
 }
 
 static void *afs_proc_cell_volumes_next(struct seq_file *m, void *v,
@@ -240,15 +239,13 @@ static void *afs_proc_cell_volumes_next(struct seq_file *m, void *v,
 {
        struct afs_cell *cell = PDE_DATA(file_inode(m->file));
 
-       return seq_list_next(v, &cell->proc_volumes, _pos);
+       return seq_hlist_next_rcu(v, &cell->proc_volumes, _pos);
 }
 
 static void afs_proc_cell_volumes_stop(struct seq_file *m, void *v)
        __releases(cell->proc_lock)
 {
-       struct afs_cell *cell = PDE_DATA(file_inode(m->file));
-
-       read_unlock(&cell->proc_lock);
+       rcu_read_unlock();
 }
 
 static const struct seq_operations afs_proc_cell_volumes_ops = {