* [PATCH v2] xfs: use tr_qm_dqalloc log reservation for dquot alloc
@ 2014-01-20 14:29 Brian Foster
2014-01-22 4:44 ` Jeff Liu
2014-01-27 23:24 ` Ben Myers
0 siblings, 2 replies; 3+ messages in thread
From: Brian Foster @ 2014-01-20 14:29 UTC (permalink / raw)
To: xfs
The dquot allocation path in xfs_qm_dqread() currently uses the
attribute set log reservation, which appears to be incorrect. We
have reports of transaction reservation overruns with the current
code. E.g., a repeated run of xfstests test generic/270 on a 512b
block size fs occassionally produces the following in dmesg:
XFS (sdN): xlog_write: reservation summary:
trans type = QM_DQALLOC (30)
unit res = 7080 bytes
current res = -632 bytes
total reg = 0 bytes (o/flow = 0 bytes)
ophdrs = 0 (ophdr space = 0 bytes)
ophdr + reg = 0 bytes
num regions = 0
XFS (sdN): xlog_write: reservation ran out. Need to up reservation
The dquot allocation case should consist of a write reservation
(i.e., we are allocating a range of the internal quota file) plus
the size of the actual dquots. We already have a log reservation
definition for this operation (tr_qm_dqalloc). Use it in
xfs_qm_dqread() and update the log reservation calculation function
to use the write res. calculation function rather than reading the
assumed to be pre-calculated value directly.
Signed-off-by: Brian Foster <bfoster@redhat.com>
---
v2:
- Fix up comment for dqalloc res. size calc. function. [Jeff Liu]
fs/xfs/xfs_dquot.c | 2 +-
fs/xfs/xfs_trans_resv.c | 5 ++---
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c
index 6b1e695..06280c6 100644
--- a/fs/xfs/xfs_dquot.c
+++ b/fs/xfs/xfs_dquot.c
@@ -614,7 +614,7 @@ xfs_qm_dqread(
if (flags & XFS_QMOPT_DQALLOC) {
tp = xfs_trans_alloc(mp, XFS_TRANS_QM_DQALLOC);
- error = xfs_trans_reserve(tp, &M_RES(mp)->tr_attrsetm,
+ error = xfs_trans_reserve(tp, &M_RES(mp)->tr_qm_dqalloc,
XFS_QM_DQALLOC_SPACE_RES(mp), 0);
if (error)
goto error1;
diff --git a/fs/xfs/xfs_trans_resv.c b/fs/xfs/xfs_trans_resv.c
index 2fd59c0..79032dd 100644
--- a/fs/xfs/xfs_trans_resv.c
+++ b/fs/xfs/xfs_trans_resv.c
@@ -644,15 +644,14 @@ xfs_calc_qm_setqlim_reservation(
/*
* Allocating quota on disk if needed.
- * the write transaction log space: M_RES(mp)->tr_write.tr_logres
+ * the write transaction log space for quota file extent allocation
* the unit of quota allocation: one system block size
*/
STATIC uint
xfs_calc_qm_dqalloc_reservation(
struct xfs_mount *mp)
{
- ASSERT(M_RES(mp)->tr_write.tr_logres);
- return M_RES(mp)->tr_write.tr_logres +
+ return xfs_calc_write_reservation(mp) +
xfs_calc_buf_res(1,
XFS_FSB_TO_B(mp, XFS_DQUOT_CLUSTER_SIZE_FSB) - 1);
}
--
1.8.1.4
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] xfs: use tr_qm_dqalloc log reservation for dquot alloc
2014-01-20 14:29 [PATCH v2] xfs: use tr_qm_dqalloc log reservation for dquot alloc Brian Foster
@ 2014-01-22 4:44 ` Jeff Liu
2014-01-27 23:24 ` Ben Myers
1 sibling, 0 replies; 3+ messages in thread
From: Jeff Liu @ 2014-01-22 4:44 UTC (permalink / raw)
To: Brian Foster, xfs
On 01/20 2014 22:29 PM, Brian Foster wrote:
> The dquot allocation path in xfs_qm_dqread() currently uses the
> attribute set log reservation, which appears to be incorrect. We
> have reports of transaction reservation overruns with the current
> code. E.g., a repeated run of xfstests test generic/270 on a 512b
> block size fs occassionally produces the following in dmesg:
>
> XFS (sdN): xlog_write: reservation summary:
> trans type = QM_DQALLOC (30)
> unit res = 7080 bytes
> current res = -632 bytes
> total reg = 0 bytes (o/flow = 0 bytes)
> ophdrs = 0 (ophdr space = 0 bytes)
> ophdr + reg = 0 bytes
> num regions = 0
>
> XFS (sdN): xlog_write: reservation ran out. Need to up reservation
>
> The dquot allocation case should consist of a write reservation
> (i.e., we are allocating a range of the internal quota file) plus
> the size of the actual dquots. We already have a log reservation
> definition for this operation (tr_qm_dqalloc). Use it in
> xfs_qm_dqread() and update the log reservation calculation function
> to use the write res. calculation function rather than reading the
> assumed to be pre-calculated value directly.
>
> Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Jie Liu <jeff.liu@oracle.com>
Thanks,
-Jeff
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] xfs: use tr_qm_dqalloc log reservation for dquot alloc
2014-01-20 14:29 [PATCH v2] xfs: use tr_qm_dqalloc log reservation for dquot alloc Brian Foster
2014-01-22 4:44 ` Jeff Liu
@ 2014-01-27 23:24 ` Ben Myers
1 sibling, 0 replies; 3+ messages in thread
From: Ben Myers @ 2014-01-27 23:24 UTC (permalink / raw)
To: Brian Foster; +Cc: xfs
On Mon, Jan 20, 2014 at 09:29:00AM -0500, Brian Foster wrote:
> The dquot allocation path in xfs_qm_dqread() currently uses the
> attribute set log reservation, which appears to be incorrect. We
> have reports of transaction reservation overruns with the current
> code. E.g., a repeated run of xfstests test generic/270 on a 512b
> block size fs occassionally produces the following in dmesg:
>
> XFS (sdN): xlog_write: reservation summary:
> trans type = QM_DQALLOC (30)
> unit res = 7080 bytes
> current res = -632 bytes
> total reg = 0 bytes (o/flow = 0 bytes)
> ophdrs = 0 (ophdr space = 0 bytes)
> ophdr + reg = 0 bytes
> num regions = 0
>
> XFS (sdN): xlog_write: reservation ran out. Need to up reservation
>
> The dquot allocation case should consist of a write reservation
> (i.e., we are allocating a range of the internal quota file) plus
> the size of the actual dquots. We already have a log reservation
> definition for this operation (tr_qm_dqalloc). Use it in
> xfs_qm_dqread() and update the log reservation calculation function
> to use the write res. calculation function rather than reading the
> assumed to be pre-calculated value directly.
>
> Signed-off-by: Brian Foster <bfoster@redhat.com>
Looks good to me as well.
Reviewed-by: Ben Myers <bpm@sgi.com>
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-01-27 23:24 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-20 14:29 [PATCH v2] xfs: use tr_qm_dqalloc log reservation for dquot alloc Brian Foster
2014-01-22 4:44 ` Jeff Liu
2014-01-27 23:24 ` Ben Myers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).