#include "xfs_mount.h"
#include "xfs_quota.h"
#include "xfs_error.h"
-#include "xfs_clnt.h"
STATIC struct xfs_dquot *
{
int error;
xfs_trans_t *tp;
- unsigned long s;
mp->m_qflags = 0;
/*
* It is OK to look at sb_qflags here in mount path,
- * without SB_LOCK.
+ * without m_sb_lock.
*/
if (mp->m_sb.sb_qflags == 0)
return 0;
- s = XFS_SB_LOCK(mp);
+ spin_lock(&mp->m_sb_lock);
mp->m_sb.sb_qflags = 0;
- XFS_SB_UNLOCK(mp, s);
+ spin_unlock(&mp->m_sb_lock);
/*
* if the fs is readonly, let the incore superblock run
* with quotas off but don't flush the update out to disk
*/
- if (XFS_MTOVFS(mp)->vfs_flag & VFS_RDONLY)
+ if (mp->m_flags & XFS_MOUNT_RDONLY)
return 0;
#ifdef QUOTADEBUG
xfs_fs_cmn_err(CE_NOTE, mp, "Writing superblock quota changes");
};
int
-xfs_qmops_get(struct xfs_mount *mp, struct xfs_mount_args *args)
+xfs_qmops_get(struct xfs_mount *mp)
{
- if (args->flags & (XFSMNT_UQUOTA | XFSMNT_PQUOTA | XFSMNT_GQUOTA)) {
- struct xfs_qmops *ops;
-
- ops = symbol_get(xfs_qmcore_xfs);
- if (!ops) {
- request_module("xfs_quota");
- ops = symbol_get(xfs_qmcore_xfs);
- }
-
- if (!ops) {
- cmn_err(CE_WARN, "XFS: no quota support available.");
- return EINVAL;
- }
- mp->m_qm_ops = ops;
+ if (XFS_IS_QUOTA_RUNNING(mp)) {
+#ifdef CONFIG_XFS_QUOTA
+ mp->m_qm_ops = &xfs_qmcore_xfs;
+#else
+ cmn_err(CE_WARN,
+ "XFS: qouta support not available in this kernel.");
+ return EINVAL;
+#endif
} else {
mp->m_qm_ops = &xfs_qmcore_stub;
}
void
xfs_qmops_put(struct xfs_mount *mp)
{
- if (mp->m_qm_ops != &xfs_qmcore_stub)
- symbol_put(xfs_qmcore_xfs);
}