Lines Matching +full:soft +full:- +full:ip
1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2000-2005 Silicon Graphics, Inc.
30 * errno == -EEXIST here. in xfs_qm_scall_quotaoff()
32 if ((mp->m_qflags & flags) == 0) in xfs_qm_scall_quotaoff()
33 return -EEXIST; in xfs_qm_scall_quotaoff()
42 mutex_lock(&mp->m_quotainfo->qi_quotaofflock); in xfs_qm_scall_quotaoff()
43 mp->m_qflags &= ~(flags & XFS_ALL_QUOTA_ENFD); in xfs_qm_scall_quotaoff()
44 spin_lock(&mp->m_sb_lock); in xfs_qm_scall_quotaoff()
45 mp->m_sb.sb_qflags = mp->m_qflags; in xfs_qm_scall_quotaoff()
46 spin_unlock(&mp->m_sb_lock); in xfs_qm_scall_quotaoff()
47 mutex_unlock(&mp->m_quotainfo->qi_quotaofflock); in xfs_qm_scall_quotaoff()
58 struct xfs_inode *ip; in xfs_qm_scall_trunc_qfile() local
62 error = xfs_qm_qino_load(mp, type, &ip); in xfs_qm_scall_trunc_qfile()
63 if (error == -ENOENT) in xfs_qm_scall_trunc_qfile()
68 xfs_ilock(ip, XFS_IOLOCK_EXCL); in xfs_qm_scall_trunc_qfile()
70 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, 0, 0, 0, &tp); in xfs_qm_scall_trunc_qfile()
72 xfs_iunlock(ip, XFS_IOLOCK_EXCL); in xfs_qm_scall_trunc_qfile()
76 xfs_ilock(ip, XFS_ILOCK_EXCL); in xfs_qm_scall_trunc_qfile()
77 xfs_trans_ijoin(tp, ip, 0); in xfs_qm_scall_trunc_qfile()
79 ip->i_disk_size = 0; in xfs_qm_scall_trunc_qfile()
80 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_qm_scall_trunc_qfile()
82 error = xfs_itruncate_extents(&tp, ip, XFS_DATA_FORK, 0); in xfs_qm_scall_trunc_qfile()
88 ASSERT(ip->i_df.if_nextents == 0); in xfs_qm_scall_trunc_qfile()
90 xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); in xfs_qm_scall_trunc_qfile()
94 xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); in xfs_qm_scall_trunc_qfile()
96 xfs_irele(ip); in xfs_qm_scall_trunc_qfile()
105 int error = -EINVAL; in xfs_qm_scall_trunc_qfiles()
110 __func__, flags, mp->m_qflags); in xfs_qm_scall_trunc_qfiles()
111 return -EINVAL; in xfs_qm_scall_trunc_qfiles()
151 __func__, mp->m_qflags); in xfs_qm_scall_quotaon()
152 return -EINVAL; in xfs_qm_scall_quotaon()
160 if (((mp->m_sb.sb_qflags & XFS_UQUOTA_ACCT) == 0 && in xfs_qm_scall_quotaon()
162 ((mp->m_sb.sb_qflags & XFS_GQUOTA_ACCT) == 0 && in xfs_qm_scall_quotaon()
164 ((mp->m_sb.sb_qflags & XFS_PQUOTA_ACCT) == 0 && in xfs_qm_scall_quotaon()
168 __func__, flags, mp->m_sb.sb_qflags); in xfs_qm_scall_quotaon()
169 return -EINVAL; in xfs_qm_scall_quotaon()
172 * If everything's up to-date incore, then don't waste time. in xfs_qm_scall_quotaon()
174 if ((mp->m_qflags & flags) == flags) in xfs_qm_scall_quotaon()
175 return -EEXIST; in xfs_qm_scall_quotaon()
178 * Change sb_qflags on disk but not incore mp->qflags in xfs_qm_scall_quotaon()
181 spin_lock(&mp->m_sb_lock); in xfs_qm_scall_quotaon()
182 qf = mp->m_sb.sb_qflags; in xfs_qm_scall_quotaon()
183 mp->m_sb.sb_qflags = qf | flags; in xfs_qm_scall_quotaon()
184 spin_unlock(&mp->m_sb_lock); in xfs_qm_scall_quotaon()
190 return -EEXIST; in xfs_qm_scall_quotaon()
198 if (((mp->m_sb.sb_qflags & XFS_UQUOTA_ACCT) != in xfs_qm_scall_quotaon()
199 (mp->m_qflags & XFS_UQUOTA_ACCT)) || in xfs_qm_scall_quotaon()
200 ((mp->m_sb.sb_qflags & XFS_PQUOTA_ACCT) != in xfs_qm_scall_quotaon()
201 (mp->m_qflags & XFS_PQUOTA_ACCT)) || in xfs_qm_scall_quotaon()
202 ((mp->m_sb.sb_qflags & XFS_GQUOTA_ACCT) != in xfs_qm_scall_quotaon()
203 (mp->m_qflags & XFS_GQUOTA_ACCT))) in xfs_qm_scall_quotaon()
207 return -ESRCH; in xfs_qm_scall_quotaon()
212 mutex_lock(&mp->m_quotainfo->qi_quotaofflock); in xfs_qm_scall_quotaon()
213 mp->m_qflags |= (flags & XFS_ALL_QUOTA_ENFD); in xfs_qm_scall_quotaon()
214 mutex_unlock(&mp->m_quotainfo->qi_quotaofflock); in xfs_qm_scall_quotaon()
231 xfs_qcnt_t soft, in xfs_setqlim_limits() argument
234 /* The hard limit can't be less than the soft limit. */ in xfs_setqlim_limits()
235 if (hard != 0 && hard < soft) { in xfs_setqlim_limits()
237 soft); in xfs_setqlim_limits()
241 res->hardlimit = hard; in xfs_setqlim_limits()
242 res->softlimit = soft; in xfs_setqlim_limits()
244 qlim->hard = hard; in xfs_setqlim_limits()
245 qlim->soft = soft; in xfs_setqlim_limits()
260 res->timer = xfs_dquot_set_grace_period(timer); in xfs_setqlim_timer()
261 qlim->time = res->timer; in xfs_setqlim_timer()
264 res->timer = xfs_dquot_set_timeout(mp, timer); in xfs_setqlim_timer()
278 struct xfs_quotainfo *q = mp->m_quotainfo; in xfs_qm_scall_setqlim()
285 xfs_qcnt_t hard, soft; in xfs_qm_scall_setqlim() local
287 if (newlim->d_fieldmask & ~XFS_QC_MASK) in xfs_qm_scall_setqlim()
288 return -EINVAL; in xfs_qm_scall_setqlim()
289 if ((newlim->d_fieldmask & XFS_QC_MASK) == 0) in xfs_qm_scall_setqlim()
301 ASSERT(error != -ENOENT); in xfs_qm_scall_setqlim()
308 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_qm_setqlim, 0, 0, 0, &tp); in xfs_qm_scall_setqlim()
319 * Make sure that hardlimits are >= soft limits before changing. in xfs_qm_scall_setqlim()
325 * used. Ditto for the default soft and hard limit values (already in xfs_qm_scall_setqlim()
329 * the soft limit. in xfs_qm_scall_setqlim()
333 hard = (newlim->d_fieldmask & QC_SPC_HARD) ? in xfs_qm_scall_setqlim()
334 (xfs_qcnt_t) XFS_B_TO_FSB(mp, newlim->d_spc_hardlimit) : in xfs_qm_scall_setqlim()
335 dqp->q_blk.hardlimit; in xfs_qm_scall_setqlim()
336 soft = (newlim->d_fieldmask & QC_SPC_SOFT) ? in xfs_qm_scall_setqlim()
337 (xfs_qcnt_t) XFS_B_TO_FSB(mp, newlim->d_spc_softlimit) : in xfs_qm_scall_setqlim()
338 dqp->q_blk.softlimit; in xfs_qm_scall_setqlim()
339 res = &dqp->q_blk; in xfs_qm_scall_setqlim()
340 qlim = id == 0 ? &defq->blk : NULL; in xfs_qm_scall_setqlim()
342 if (xfs_setqlim_limits(mp, res, qlim, hard, soft, "blk")) in xfs_qm_scall_setqlim()
344 if (newlim->d_fieldmask & QC_SPC_TIMER) in xfs_qm_scall_setqlim()
345 xfs_setqlim_timer(mp, res, qlim, newlim->d_spc_timer); in xfs_qm_scall_setqlim()
348 hard = (newlim->d_fieldmask & QC_RT_SPC_HARD) ? in xfs_qm_scall_setqlim()
349 (xfs_qcnt_t) XFS_B_TO_FSB(mp, newlim->d_rt_spc_hardlimit) : in xfs_qm_scall_setqlim()
350 dqp->q_rtb.hardlimit; in xfs_qm_scall_setqlim()
351 soft = (newlim->d_fieldmask & QC_RT_SPC_SOFT) ? in xfs_qm_scall_setqlim()
352 (xfs_qcnt_t) XFS_B_TO_FSB(mp, newlim->d_rt_spc_softlimit) : in xfs_qm_scall_setqlim()
353 dqp->q_rtb.softlimit; in xfs_qm_scall_setqlim()
354 res = &dqp->q_rtb; in xfs_qm_scall_setqlim()
355 qlim = id == 0 ? &defq->rtb : NULL; in xfs_qm_scall_setqlim()
357 xfs_setqlim_limits(mp, res, qlim, hard, soft, "rtb"); in xfs_qm_scall_setqlim()
358 if (newlim->d_fieldmask & QC_RT_SPC_TIMER) in xfs_qm_scall_setqlim()
359 xfs_setqlim_timer(mp, res, qlim, newlim->d_rt_spc_timer); in xfs_qm_scall_setqlim()
362 hard = (newlim->d_fieldmask & QC_INO_HARD) ? in xfs_qm_scall_setqlim()
363 (xfs_qcnt_t) newlim->d_ino_hardlimit : in xfs_qm_scall_setqlim()
364 dqp->q_ino.hardlimit; in xfs_qm_scall_setqlim()
365 soft = (newlim->d_fieldmask & QC_INO_SOFT) ? in xfs_qm_scall_setqlim()
366 (xfs_qcnt_t) newlim->d_ino_softlimit : in xfs_qm_scall_setqlim()
367 dqp->q_ino.softlimit; in xfs_qm_scall_setqlim()
368 res = &dqp->q_ino; in xfs_qm_scall_setqlim()
369 qlim = id == 0 ? &defq->ino : NULL; in xfs_qm_scall_setqlim()
371 xfs_setqlim_limits(mp, res, qlim, hard, soft, "ino"); in xfs_qm_scall_setqlim()
372 if (newlim->d_fieldmask & QC_INO_TIMER) in xfs_qm_scall_setqlim()
373 xfs_setqlim_timer(mp, res, qlim, newlim->d_ino_timer); in xfs_qm_scall_setqlim()
385 dqp->q_flags |= XFS_DQFLAG_DIRTY; in xfs_qm_scall_setqlim()
404 dst->d_spc_hardlimit = XFS_FSB_TO_B(mp, dqp->q_blk.hardlimit); in xfs_qm_scall_getquota_fill_qc()
405 dst->d_spc_softlimit = XFS_FSB_TO_B(mp, dqp->q_blk.softlimit); in xfs_qm_scall_getquota_fill_qc()
406 dst->d_ino_hardlimit = dqp->q_ino.hardlimit; in xfs_qm_scall_getquota_fill_qc()
407 dst->d_ino_softlimit = dqp->q_ino.softlimit; in xfs_qm_scall_getquota_fill_qc()
408 dst->d_space = XFS_FSB_TO_B(mp, dqp->q_blk.reserved); in xfs_qm_scall_getquota_fill_qc()
409 dst->d_ino_count = dqp->q_ino.reserved; in xfs_qm_scall_getquota_fill_qc()
410 dst->d_spc_timer = dqp->q_blk.timer; in xfs_qm_scall_getquota_fill_qc()
411 dst->d_ino_timer = dqp->q_ino.timer; in xfs_qm_scall_getquota_fill_qc()
412 dst->d_ino_warns = 0; in xfs_qm_scall_getquota_fill_qc()
413 dst->d_spc_warns = 0; in xfs_qm_scall_getquota_fill_qc()
414 dst->d_rt_spc_hardlimit = XFS_FSB_TO_B(mp, dqp->q_rtb.hardlimit); in xfs_qm_scall_getquota_fill_qc()
415 dst->d_rt_spc_softlimit = XFS_FSB_TO_B(mp, dqp->q_rtb.softlimit); in xfs_qm_scall_getquota_fill_qc()
416 dst->d_rt_space = XFS_FSB_TO_B(mp, dqp->q_rtb.reserved); in xfs_qm_scall_getquota_fill_qc()
417 dst->d_rt_spc_timer = dqp->q_rtb.timer; in xfs_qm_scall_getquota_fill_qc()
418 dst->d_rt_spc_warns = 0; in xfs_qm_scall_getquota_fill_qc()
426 dst->d_spc_timer = 0; in xfs_qm_scall_getquota_fill_qc()
427 dst->d_ino_timer = 0; in xfs_qm_scall_getquota_fill_qc()
428 dst->d_rt_spc_timer = 0; in xfs_qm_scall_getquota_fill_qc()
463 error = -ENOENT; in xfs_qm_scall_getquota()
497 *id = dqp->q_id; in xfs_qm_scall_getquota_next()