aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/quota/xfs_qm_syscalls.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/quota/xfs_qm_syscalls.c')
-rw-r--r--fs/xfs/quota/xfs_qm_syscalls.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c
index ad5579d4eac4..2cc5886cfe85 100644
--- a/fs/xfs/quota/xfs_qm_syscalls.c
+++ b/fs/xfs/quota/xfs_qm_syscalls.c
@@ -200,7 +200,6 @@ xfs_qm_scall_quotaoff(
200 boolean_t force) 200 boolean_t force)
201{ 201{
202 uint dqtype; 202 uint dqtype;
203 unsigned long s;
204 int error; 203 int error;
205 uint inactivate_flags; 204 uint inactivate_flags;
206 xfs_qoff_logitem_t *qoffstart; 205 xfs_qoff_logitem_t *qoffstart;
@@ -237,9 +236,9 @@ xfs_qm_scall_quotaoff(
237 if ((flags & XFS_ALL_QUOTA_ACCT) == 0) { 236 if ((flags & XFS_ALL_QUOTA_ACCT) == 0) {
238 mp->m_qflags &= ~(flags); 237 mp->m_qflags &= ~(flags);
239 238
240 s = XFS_SB_LOCK(mp); 239 spin_lock(&mp->m_sb_lock);
241 mp->m_sb.sb_qflags = mp->m_qflags; 240 mp->m_sb.sb_qflags = mp->m_qflags;
242 XFS_SB_UNLOCK(mp, s); 241 spin_unlock(&mp->m_sb_lock);
243 mutex_unlock(&(XFS_QI_QOFFLOCK(mp))); 242 mutex_unlock(&(XFS_QI_QOFFLOCK(mp)));
244 243
245 /* XXX what to do if error ? Revert back to old vals incore ? */ 244 /* XXX what to do if error ? Revert back to old vals incore ? */
@@ -415,7 +414,6 @@ xfs_qm_scall_quotaon(
415 uint flags) 414 uint flags)
416{ 415{
417 int error; 416 int error;
418 unsigned long s;
419 uint qf; 417 uint qf;
420 uint accflags; 418 uint accflags;
421 __int64_t sbflags; 419 __int64_t sbflags;
@@ -468,10 +466,10 @@ xfs_qm_scall_quotaon(
468 * Change sb_qflags on disk but not incore mp->qflags 466 * Change sb_qflags on disk but not incore mp->qflags
469 * if this is the root filesystem. 467 * if this is the root filesystem.
470 */ 468 */
471 s = XFS_SB_LOCK(mp); 469 spin_lock(&mp->m_sb_lock);
472 qf = mp->m_sb.sb_qflags; 470 qf = mp->m_sb.sb_qflags;
473 mp->m_sb.sb_qflags = qf | flags; 471 mp->m_sb.sb_qflags = qf | flags;
474 XFS_SB_UNLOCK(mp, s); 472 spin_unlock(&mp->m_sb_lock);
475 473
476 /* 474 /*
477 * There's nothing to change if it's the same. 475 * There's nothing to change if it's the same.
@@ -815,7 +813,6 @@ xfs_qm_log_quotaoff(
815{ 813{
816 xfs_trans_t *tp; 814 xfs_trans_t *tp;
817 int error; 815 int error;
818 unsigned long s;
819 xfs_qoff_logitem_t *qoffi=NULL; 816 xfs_qoff_logitem_t *qoffi=NULL;
820 uint oldsbqflag=0; 817 uint oldsbqflag=0;
821 818
@@ -832,10 +829,10 @@ xfs_qm_log_quotaoff(
832 qoffi = xfs_trans_get_qoff_item(tp, NULL, flags & XFS_ALL_QUOTA_ACCT); 829 qoffi = xfs_trans_get_qoff_item(tp, NULL, flags & XFS_ALL_QUOTA_ACCT);
833 xfs_trans_log_quotaoff_item(tp, qoffi); 830 xfs_trans_log_quotaoff_item(tp, qoffi);
834 831
835 s = XFS_SB_LOCK(mp); 832 spin_lock(&mp->m_sb_lock);
836 oldsbqflag = mp->m_sb.sb_qflags; 833 oldsbqflag = mp->m_sb.sb_qflags;
837 mp->m_sb.sb_qflags = (mp->m_qflags & ~(flags)) & XFS_MOUNT_QUOTA_ALL; 834 mp->m_sb.sb_qflags = (mp->m_qflags & ~(flags)) & XFS_MOUNT_QUOTA_ALL;
838 XFS_SB_UNLOCK(mp, s); 835 spin_unlock(&mp->m_sb_lock);
839 836
840 xfs_mod_sb(tp, XFS_SB_QFLAGS); 837 xfs_mod_sb(tp, XFS_SB_QFLAGS);
841 838
@@ -854,9 +851,9 @@ error0:
854 * No one else is modifying sb_qflags, so this is OK. 851 * No one else is modifying sb_qflags, so this is OK.
855 * We still hold the quotaofflock. 852 * We still hold the quotaofflock.
856 */ 853 */
857 s = XFS_SB_LOCK(mp); 854 spin_lock(&mp->m_sb_lock);
858 mp->m_sb.sb_qflags = oldsbqflag; 855 mp->m_sb.sb_qflags = oldsbqflag;
859 XFS_SB_UNLOCK(mp, s); 856 spin_unlock(&mp->m_sb_lock);
860 } 857 }
861 *qoffstartp = qoffi; 858 *qoffstartp = qoffi;
862 return (error); 859 return (error);