/*
- * Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved.
+ * Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as
*/
mp = ap->ip->i_mount;
nullfb = ap->firstblock == NULLFSBLOCK;
- rt = (ap->ip->i_d.di_flags & XFS_DIFLAG_REALTIME) && ap->userdata;
+ rt = XFS_IS_REALTIME_INODE(ap->ip) && ap->userdata;
fb_agno = nullfb ? NULLAGNUMBER : XFS_FSB_TO_AGNO(mp, ap->firstblock);
#ifdef __KERNEL__
if (rt) {
* Adjust the disk quota also. This was reserved
* earlier.
*/
- if (XFS_IS_QUOTA_ON(mp) &&
- ap->ip->i_ino != mp->m_sb.sb_uquotino &&
- ap->ip->i_ino != mp->m_sb.sb_gquotino)
- xfs_trans_mod_dquot_byino(ap->tp, ap->ip,
- ap->wasdel ?
- XFS_TRANS_DQ_DELRTBCOUNT :
+ XFS_TRANS_MOD_DQUOT_BYINO(mp, ap->tp, ap->ip,
+ ap->wasdel ? XFS_TRANS_DQ_DELRTBCOUNT :
XFS_TRANS_DQ_RTBCOUNT,
- (long)ralen);
+ (long) ralen);
} else
ap->alen = 0;
#endif /* __KERNEL__ */
* Adjust the disk quota also. This was reserved
* earlier.
*/
- if (XFS_IS_QUOTA_ON(mp) &&
- ap->ip->i_ino != mp->m_sb.sb_uquotino &&
- ap->ip->i_ino != mp->m_sb.sb_gquotino)
- xfs_trans_mod_dquot_byino(ap->tp, ap->ip,
- ap->wasdel ?
- XFS_TRANS_DQ_DELBCOUNT :
+ XFS_TRANS_MOD_DQUOT_BYINO(mp, ap->tp, ap->ip,
+ ap->wasdel ? XFS_TRANS_DQ_DELBCOUNT :
XFS_TRANS_DQ_BCOUNT,
- (long)args.len);
+ (long) args.len);
} else {
ap->rval = NULLFSBLOCK;
ap->alen = 0;
return error;
xfs_bmap_add_free(cbno, 1, cur->bc_private.b.flist, mp);
ip->i_d.di_nblocks--;
- if (XFS_IS_QUOTA_ON(mp) &&
- ip->i_ino != mp->m_sb.sb_uquotino &&
- ip->i_ino != mp->m_sb.sb_gquotino)
- xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, -1L);
+ XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, XFS_TRANS_DQ_BCOUNT, -1L);
xfs_trans_binval(tp, cbp);
if (cur->bc_bufs[0] == cbp)
cur->bc_bufs[0] = NULL;
goto done;
do_fx = 0;
nblks = len * mp->m_sb.sb_rextsize;
- if (XFS_IS_QUOTA_ON(mp) &&
- ip->i_ino != mp->m_sb.sb_uquotino &&
- ip->i_ino != mp->m_sb.sb_gquotino)
- qfield = XFS_TRANS_DQ_RTBCOUNT;
+ qfield = XFS_TRANS_DQ_RTBCOUNT;
}
/*
* Ordinary allocation.
else {
do_fx = 1;
nblks = del->br_blockcount;
- if (XFS_IS_QUOTA_ON(mp) &&
- ip->i_ino != mp->m_sb.sb_uquotino &&
- ip->i_ino != mp->m_sb.sb_gquotino)
- qfield = XFS_TRANS_DQ_BCOUNT;
+ qfield = XFS_TRANS_DQ_BCOUNT;
}
/*
* Set up del_endblock and cur for later.
* Adjust quota data.
*/
if (qfield)
- xfs_trans_mod_dquot_byino(tp, ip, qfield, (long)-nblks);
+ XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, qfield, (long)-nblks);
+
/*
* Account for change in delayed indirect blocks.
* Nothing to do for disk quota accounting here.
*firstblock = cur->bc_private.b.firstblock = args.fsbno;
cur->bc_private.b.allocated++;
ip->i_d.di_nblocks++;
- if (XFS_IS_QUOTA_ON(mp) &&
- ip->i_ino != mp->m_sb.sb_uquotino &&
- ip->i_ino != mp->m_sb.sb_gquotino)
- xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT, 1L);
+ XFS_TRANS_MOD_DQUOT_BYINO(mp, tp, ip, XFS_TRANS_DQ_BCOUNT, 1L);
abp = xfs_btree_get_bufl(mp, tp, args.fsbno, 0);
/*
* Fill in the child block.
xfs_bmap_trace_post_update(fname, "new", ip, 0, whichfork);
XFS_IFORK_NEXT_SET(ip, whichfork, 1);
ip->i_d.di_nblocks = 1;
- if (XFS_IS_QUOTA_ON(args.mp) &&
- ip->i_ino != args.mp->m_sb.sb_uquotino &&
- ip->i_ino != args.mp->m_sb.sb_gquotino)
- xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_BCOUNT,
- 1L);
+ XFS_TRANS_MOD_DQUOT_BYINO(args.mp, tp, ip,
+ XFS_TRANS_DQ_BCOUNT, 1L);
flags |= XFS_ILOG_FEXT(whichfork);
} else
ASSERT(XFS_IFORK_NEXTENTS(ip, whichfork) == 0);
cur = NULL;
if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL) {
ASSERT(wr && tp);
- if ((error = xfs_bmap_local_to_extents(tp, ip, firstblock, total,
- &logflags, whichfork)))
+ if ((error = xfs_bmap_local_to_extents(tp, ip,
+ firstblock, total, &logflags, whichfork)))
goto error0;
}
if (wr && *firstblock == NULLFSBLOCK) {
* We return EDQUOT if we haven't allocated
* blks already inside this loop;
*/
- if (XFS_IS_QUOTA_ON(ip->i_mount) &&
- xfs_trans_reserve_blkquota(NULL, ip,
- (long)alen)) {
+ if (XFS_TRANS_RESERVE_BLKQUOTA(
+ mp, NULL, ip, (long)alen)) {
if (n == 0) {
*nmap = 0;
ASSERT(cur == NULL);
}
break;
}
- if (xfs_mod_incore_sb(ip->i_mount,
- XFS_SBS_FDBLOCKS,
+ if (xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS,
-(alen + indlen), rsvd)) {
- if (XFS_IS_QUOTA_ON(ip->i_mount))
- xfs_trans_unreserve_blkquota(
- NULL, ip, (long)alen);
+ XFS_TRANS_UNRESERVE_BLKQUOTA(
+ mp, NULL, ip, (long)alen);
break;
}
ip->i_delayed_blks += alen;
alen = bma.alen;
aoff = bma.off;
ASSERT(*firstblock == NULLFSBLOCK ||
- XFS_FSB_TO_AGNO(ip->i_mount,
- *firstblock) ==
- XFS_FSB_TO_AGNO(ip->i_mount,
- bma.firstblock) ||
+ XFS_FSB_TO_AGNO(mp, *firstblock) ==
+ XFS_FSB_TO_AGNO(mp, bma.firstblock) ||
(flist->xbf_low &&
- XFS_FSB_TO_AGNO(ip->i_mount,
- *firstblock) <
- XFS_FSB_TO_AGNO(ip->i_mount,
- bma.firstblock)));
+ XFS_FSB_TO_AGNO(mp, *firstblock) <
+ XFS_FSB_TO_AGNO(mp, bma.firstblock)));
*firstblock = bma.firstblock;
if (cur)
cur->bc_private.b.firstblock =
if (abno == NULLFSBLOCK)
break;
if ((ifp->if_flags & XFS_IFBROOT) && !cur) {
- cur = xfs_btree_init_cursor(ip->i_mount,
+ cur = xfs_btree_init_cursor(mp,
tp, NULL, 0, XFS_BTNUM_BMAP,
ip, whichfork);
cur->bc_private.b.firstblock =
*/
ASSERT(mval->br_blockcount <= len);
if ((ifp->if_flags & XFS_IFBROOT) && !cur) {
- cur = xfs_btree_init_cursor(ip->i_mount,
+ cur = xfs_btree_init_cursor(mp,
tp, NULL, 0, XFS_BTNUM_BMAP,
ip, whichfork);
cur->bc_private.b.firstblock =
if (cur) {
if (!error) {
ASSERT(*firstblock == NULLFSBLOCK ||
- XFS_FSB_TO_AGNO(ip->i_mount, *firstblock) ==
- XFS_FSB_TO_AGNO(ip->i_mount,
+ XFS_FSB_TO_AGNO(mp, *firstblock) ==
+ XFS_FSB_TO_AGNO(mp,
cur->bc_private.b.firstblock) ||
(flist->xbf_low &&
- XFS_FSB_TO_AGNO(ip->i_mount, *firstblock) <
- XFS_FSB_TO_AGNO(ip->i_mount,
+ XFS_FSB_TO_AGNO(mp, *firstblock) <
+ XFS_FSB_TO_AGNO(mp,
cur->bc_private.b.firstblock)));
*firstblock = cur->bc_private.b.firstblock;
}
ASSERT(STARTBLOCKVAL(del.br_startblock) > 0);
xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS,
(int)del.br_blockcount, rsvd);
- if (XFS_IS_QUOTA_ON(ip->i_mount)) {
- ASSERT(ip->i_ino != mp->m_sb.sb_uquotino);
- ASSERT(ip->i_ino != mp->m_sb.sb_gquotino);
- if (!isrt)
- xfs_trans_unreserve_blkquota(NULL, ip,
- (long)del.br_blockcount);
- else
- xfs_trans_unreserve_rtblkquota(NULL, ip,
- (long)del.br_blockcount);
- }
+ /* Unreserve our quota space */
+ XFS_TRANS_RESERVE_QUOTA_NBLKS(
+ mp, NULL, ip, -((long)del.br_blockcount), 0,
+ isrt ? XFS_QMOPT_RES_RTBLKS :
+ XFS_QMOPT_RES_REGBLKS);
ip->i_delayed_blks -= del.br_blockcount;
if (cur)
cur->bc_private.b.flags |=