diff options
Diffstat (limited to 'fs/afs/volume.c')
| -rw-r--r-- | fs/afs/volume.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/afs/volume.c b/fs/afs/volume.c index a353e69e2391..401eeb21869f 100644 --- a/fs/afs/volume.c +++ b/fs/afs/volume.c | |||
| @@ -106,6 +106,10 @@ struct afs_volume *afs_volume_lookup(struct afs_mount_params *params) | |||
| 106 | volume->cell = params->cell; | 106 | volume->cell = params->cell; |
| 107 | volume->vid = vlocation->vldb.vid[params->type]; | 107 | volume->vid = vlocation->vldb.vid[params->type]; |
| 108 | 108 | ||
| 109 | ret = bdi_setup_and_register(&volume->bdi, "afs", BDI_CAP_MAP_COPY); | ||
| 110 | if (ret) | ||
| 111 | goto error_bdi; | ||
| 112 | |||
| 109 | init_rwsem(&volume->server_sem); | 113 | init_rwsem(&volume->server_sem); |
| 110 | 114 | ||
| 111 | /* look up all the applicable server records */ | 115 | /* look up all the applicable server records */ |
| @@ -151,6 +155,8 @@ error: | |||
| 151 | return ERR_PTR(ret); | 155 | return ERR_PTR(ret); |
| 152 | 156 | ||
| 153 | error_discard: | 157 | error_discard: |
| 158 | bdi_destroy(&volume->bdi); | ||
| 159 | error_bdi: | ||
| 154 | up_write(¶ms->cell->vl_sem); | 160 | up_write(¶ms->cell->vl_sem); |
| 155 | 161 | ||
| 156 | for (loop = volume->nservers - 1; loop >= 0; loop--) | 162 | for (loop = volume->nservers - 1; loop >= 0; loop--) |
| @@ -200,6 +206,7 @@ void afs_put_volume(struct afs_volume *volume) | |||
| 200 | for (loop = volume->nservers - 1; loop >= 0; loop--) | 206 | for (loop = volume->nservers - 1; loop >= 0; loop--) |
| 201 | afs_put_server(volume->servers[loop]); | 207 | afs_put_server(volume->servers[loop]); |
| 202 | 208 | ||
| 209 | bdi_destroy(&volume->bdi); | ||
| 203 | kfree(volume); | 210 | kfree(volume); |
| 204 | 211 | ||
| 205 | _leave(" [destroyed]"); | 212 | _leave(" [destroyed]"); |
