|
@@ -831,11 +831,18 @@ xfs_qm_init_quotainfo(
|
|
|
|
|
|
qinf = mp->m_quotainfo = kmem_zalloc(sizeof(xfs_quotainfo_t), KM_SLEEP);
|
|
|
|
|
|
+ if ((error = list_lru_init(&qinf->qi_lru))) {
|
|
|
+ kmem_free(qinf);
|
|
|
+ mp->m_quotainfo = NULL;
|
|
|
+ return error;
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
* See if quotainodes are setup, and if not, allocate them,
|
|
|
* and change the superblock accordingly.
|
|
|
*/
|
|
|
if ((error = xfs_qm_init_quotainos(mp))) {
|
|
|
+ list_lru_destroy(&qinf->qi_lru);
|
|
|
kmem_free(qinf);
|
|
|
mp->m_quotainfo = NULL;
|
|
|
return error;
|
|
@@ -846,8 +853,6 @@ xfs_qm_init_quotainfo(
|
|
|
INIT_RADIX_TREE(&qinf->qi_pquota_tree, GFP_NOFS);
|
|
|
mutex_init(&qinf->qi_tree_lock);
|
|
|
|
|
|
- list_lru_init(&qinf->qi_lru);
|
|
|
-
|
|
|
/* mutex used to serialize quotaoffs */
|
|
|
mutex_init(&qinf->qi_quotaofflock);
|
|
|
|
|
@@ -935,6 +940,7 @@ xfs_qm_destroy_quotainfo(
|
|
|
qi = mp->m_quotainfo;
|
|
|
ASSERT(qi != NULL);
|
|
|
|
|
|
+ list_lru_destroy(&qi->qi_lru);
|
|
|
unregister_shrinker(&qi->qi_shrinker);
|
|
|
|
|
|
if (qi->qi_uquotaip) {
|