diff options
author | Brian Foster <bfoster@redhat.com> | 2014-02-07 07:55:54 +0400 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2014-02-07 07:55:54 +0400 |
commit | 410b11a675dca827e893f07c3155691eda3b5887 (patch) | |
tree | a9a176e4ed1cdc9c272192860ca42fc8e968af92 /fs/xfs/xfs_log.h | |
parent | c19ec235352c2a001c9dc7e86acdfd9f2b62150d (diff) | |
download | linux-410b11a675dca827e893f07c3155691eda3b5887.tar.xz |
xfs: use tr_qm_dqalloc log reservation for dquot alloc
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>
Reviewed-by: Ben Myers <bpm@sgi.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs/xfs_log.h')
0 files changed, 0 insertions, 0 deletions