From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Eric Sandeen <sandeen@redhat.com>
Cc: xfs <linux-xfs@vger.kernel.org>, Brian Foster <bfoster@redhat.com>
Subject: [PATCH] libxfs: propagate transaction block reservations
Date: Wed, 19 Jul 2017 08:55:55 -0700 [thread overview]
Message-ID: <20170719155555.GO4224@magnolia> (raw)
Certain parts of the libxfs preemptively refuse to run if the
transaction block reservation has fallen to zero. We leave t_blk_res at
its default of zero, which means that these code paths always fail even
if the transaction was allocated with a non-zero block reservation. Set
t_blk_res and maintain it through transaction rolls, even though we
don't do much enforcement the transaction block limits.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
libxfs/trans.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/libxfs/trans.c b/libxfs/trans.c
index fe22cb9..035248f 100644
--- a/libxfs/trans.c
+++ b/libxfs/trans.c
@@ -106,6 +106,7 @@ libxfs_trans_roll(
struct xfs_mount *mp;
struct xfs_trans *trans;
struct xfs_trans_res tres;
+ unsigned int old_blk_res;
int error;
/*
@@ -121,6 +122,7 @@ libxfs_trans_roll(
mp = trans->t_mountp;
tres.tr_logres = trans->t_log_res;
tres.tr_logcount = trans->t_log_count;
+ old_blk_res = trans->t_blk_res;
/*
* Commit the current transaction.
@@ -145,6 +147,8 @@ libxfs_trans_roll(
tres.tr_logflags = XFS_TRANS_PERM_LOG_RES;
error = libxfs_trans_alloc(mp, &tres, 0, 0, 0, tpp);
trans = *tpp;
+ trans->t_blk_res = old_blk_res;
+
/*
* Ensure that the inode is in the new transaction and locked.
*/
@@ -185,6 +189,7 @@ libxfs_trans_alloc(
exit(1);
}
ptr->t_mountp = mp;
+ ptr->t_blk_res = blocks;
INIT_LIST_HEAD(&ptr->t_items);
#ifdef XACT_DEBUG
fprintf(stderr, "allocated new transaction %p\n", ptr);
@@ -750,7 +755,7 @@ trans_committed(
list_for_each_entry_safe(lidp, next, &tp->t_items, lid_trans) {
struct xfs_log_item *lip = lidp->lid_item;
- xfs_trans_del_item(lip);
+ xfs_trans_del_item(lip);
if (lip->li_type == XFS_LI_BUF)
buf_item_done((xfs_buf_log_item_t *)lip);
next reply other threads:[~2017-07-19 15:56 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-19 15:55 Darrick J. Wong [this message]
2017-07-19 16:18 ` [PATCH] libxfs: propagate transaction block reservations Brian Foster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170719155555.GO4224@magnolia \
--to=darrick.wong@oracle.com \
--cc=bfoster@redhat.com \
--cc=linux-xfs@vger.kernel.org \
--cc=sandeen@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox