|
@@ -80,6 +80,9 @@ unset_pnfs_layoutdriver(struct nfs_server *nfss)
|
|
|
if (nfss->pnfs_curr_ld) {
|
|
|
if (nfss->pnfs_curr_ld->clear_layoutdriver)
|
|
|
nfss->pnfs_curr_ld->clear_layoutdriver(nfss);
|
|
|
+ /* Decrement the MDS count. Purge the deviceid cache if zero */
|
|
|
+ if (atomic_dec_and_test(&nfss->nfs_client->cl_mds_count))
|
|
|
+ nfs4_deviceid_purge_client(nfss->nfs_client);
|
|
|
module_put(nfss->pnfs_curr_ld->owner);
|
|
|
}
|
|
|
nfss->pnfs_curr_ld = NULL;
|
|
@@ -127,6 +130,8 @@ set_pnfs_layoutdriver(struct nfs_server *server, const struct nfs_fh *mntfh,
|
|
|
module_put(ld_type->owner);
|
|
|
goto out_no_driver;
|
|
|
}
|
|
|
+ /* Bump the MDS count */
|
|
|
+ atomic_inc(&server->nfs_client->cl_mds_count);
|
|
|
|
|
|
dprintk("%s: pNFS module for %u set\n", __func__, id);
|
|
|
return;
|