From: Dave Chinner <david@fromorbit.com>
To: linux-xfs@vger.kernel.org
Subject: [PATCH 12/13] xfs: xlog_write() no longer needs contwr state
Date: Wed, 24 Feb 2021 17:34:58 +1100 [thread overview]
Message-ID: <20210224063459.3436852-13-david@fromorbit.com> (raw)
In-Reply-To: <20210224063459.3436852-1-david@fromorbit.com>
From: Dave Chinner <dchinner@redhat.com>
The rework of xlog_write() no longer requires xlog_get_iclog_state()
to tell it about internal iclog space reservation state to direct it
on what to do. Remove this parameter.
$ size fs/xfs/xfs_log.o.*
text data bss dec hex filename
26520 560 8 27088 69d0 fs/xfs/xfs_log.o.orig
26384 560 8 26952 6948 fs/xfs/xfs_log.o.patched
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
fs/xfs/xfs_log.c | 33 +++++++++++----------------------
1 file changed, 11 insertions(+), 22 deletions(-)
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
index 74a1dddf1c15..2a4d93561454 100644
--- a/fs/xfs/xfs_log.c
+++ b/fs/xfs/xfs_log.c
@@ -47,7 +47,6 @@ xlog_state_get_iclog_space(
int len,
struct xlog_in_core **iclog,
struct xlog_ticket *ticket,
- int *continued_write,
int *logoffsetp);
STATIC void
xlog_state_switch_iclogs(
@@ -2209,8 +2208,7 @@ xlog_write_get_more_iclog_space(
uint32_t *log_offset,
uint32_t len,
uint32_t *record_cnt,
- uint32_t *data_cnt,
- int *contwr)
+ uint32_t *data_cnt)
{
struct xlog_in_core *iclog = *iclogp;
int error;
@@ -2224,8 +2222,8 @@ xlog_write_get_more_iclog_space(
if (error)
return error;
- error = xlog_state_get_iclog_space(log, len, &iclog,
- ticket, contwr, log_offset);
+ error = xlog_state_get_iclog_space(log, len, &iclog, ticket,
+ log_offset);
if (error)
return error;
*record_cnt = 0;
@@ -2249,8 +2247,7 @@ xlog_write_partial(
uint32_t *log_offset,
uint32_t *len,
uint32_t *record_cnt,
- uint32_t *data_cnt,
- int *contwr)
+ uint32_t *data_cnt)
{
struct xlog_in_core *iclog = *iclogp;
struct xfs_log_vec *lv = log_vector;
@@ -2284,7 +2281,7 @@ xlog_write_partial(
sizeof(struct xlog_op_header)) {
error = xlog_write_get_more_iclog_space(log, ticket,
&iclog, log_offset, *len, record_cnt,
- data_cnt, contwr);
+ data_cnt);
if (error)
return ERR_PTR(error);
ptr = iclog->ic_datap + *log_offset;
@@ -2340,7 +2337,7 @@ xlog_write_partial(
}
error = xlog_write_get_more_iclog_space(log, ticket,
&iclog, log_offset, *len, record_cnt,
- data_cnt, contwr);
+ data_cnt);
if (error)
return ERR_PTR(error);
ptr = iclog->ic_datap + *log_offset;
@@ -2438,7 +2435,6 @@ xlog_write(
{
struct xlog_in_core *iclog = NULL;
struct xfs_log_vec *lv = log_vector;
- int contwr = 0;
int record_cnt = 0;
int data_cnt = 0;
int error = 0;
@@ -2452,7 +2448,7 @@ xlog_write(
}
error = xlog_state_get_iclog_space(log, len, &iclog, ticket,
- &contwr, &log_offset);
+ &log_offset);
if (error)
return error;
@@ -2467,10 +2463,8 @@ xlog_write(
* is correctly maintained in the storage media. This will always
* fit in the iclog we have been already been passed.
*/
- if (optype & (XLOG_COMMIT_TRANS | XLOG_UNMOUNT_TRANS)) {
+ if (optype & (XLOG_COMMIT_TRANS | XLOG_UNMOUNT_TRANS))
iclog->ic_flags |= (XLOG_ICL_NEED_FLUSH | XLOG_ICL_NEED_FUA);
- ASSERT(!contwr);
- }
while (lv) {
lv = xlog_write_single(lv, ticket, iclog, &log_offset,
@@ -2480,7 +2474,7 @@ xlog_write(
ASSERT(!(optype & (XLOG_COMMIT_TRANS | XLOG_UNMOUNT_TRANS)));
lv = xlog_write_partial(log, lv, ticket, &iclog, &log_offset,
- &len, &record_cnt, &data_cnt, &contwr);
+ &len, &record_cnt, &data_cnt);
if (IS_ERR(lv)) {
error = PTR_ERR(lv);
break;
@@ -2494,7 +2488,6 @@ xlog_write(
* those writes accounted to it. Hence we do not need to update the
* iclog with the number of bytes written here.
*/
- ASSERT(!contwr || XLOG_FORCED_SHUTDOWN(log));
spin_lock(&log->l_icloglock);
xlog_state_finish_copy(log, iclog, record_cnt, 0);
if (commit_iclog) {
@@ -2898,7 +2891,6 @@ xlog_state_get_iclog_space(
int len,
struct xlog_in_core **iclogp,
struct xlog_ticket *ticket,
- int *continued_write,
int *logoffsetp)
{
int log_offset;
@@ -2974,13 +2966,10 @@ xlog_state_get_iclog_space(
* iclogs (to mark it taken), this particular iclog will release/sync
* to disk in xlog_write().
*/
- if (len <= iclog->ic_size - iclog->ic_offset) {
- *continued_write = 0;
+ if (len <= iclog->ic_size - iclog->ic_offset)
iclog->ic_offset += len;
- } else {
- *continued_write = 1;
+ else
xlog_state_switch_iclogs(log, iclog, iclog->ic_size);
- }
*iclogp = iclog;
ASSERT(iclog->ic_offset <= iclog->ic_size);
--
2.28.0
next prev parent reply other threads:[~2021-02-24 6:36 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-24 6:34 [PATCH 0/13] xfs: rewrite xlog_write() Dave Chinner
2021-02-24 6:34 ` [PATCH 01/13] xfs: factor out the CIL transaction header building Dave Chinner
2021-02-25 9:12 ` Christoph Hellwig
2021-02-24 6:34 ` [PATCH 02/13] xfs: only CIL pushes require a start record Dave Chinner
2021-02-25 9:15 ` Christoph Hellwig
2021-02-25 22:11 ` Dave Chinner
2021-02-24 6:34 ` [PATCH 03/13] xfs: embed the xlog_op_header in the unmount record Dave Chinner
2021-02-25 9:26 ` Christoph Hellwig
2021-02-24 6:34 ` [PATCH 04/13] " Dave Chinner
2021-02-25 9:38 ` Christoph Hellwig
2021-02-25 22:13 ` Dave Chinner
2021-02-26 2:57 ` Darrick J. Wong
2021-02-26 4:23 ` Dave Chinner
2021-02-24 6:34 ` [PATCH 05/13] xfs: log tickets don't need log client id Dave Chinner
2021-02-25 9:20 ` Christoph Hellwig
2021-02-24 6:34 ` [PATCH 06/13] xfs: move log iovec alignment to preparation function Dave Chinner
2021-02-25 9:39 ` Christoph Hellwig
2021-02-24 6:34 ` [PATCH 07/13] xfs: reserve space and initialise xlog_op_header in item formatting Dave Chinner
2021-02-25 18:27 ` Christoph Hellwig
2021-02-25 22:16 ` Dave Chinner
2021-02-24 6:34 ` [PATCH 08/13] xfs: log ticket region debug is largely useless Dave Chinner
2021-02-25 9:21 ` Christoph Hellwig
2021-02-24 6:34 ` [PATCH 09/13] xfs: pass lv chain length and size into xlog_write() Dave Chinner
2021-02-25 18:30 ` Christoph Hellwig
2021-02-24 6:34 ` [PATCH 10/13] xfs: introduce xlog_write_single() Dave Chinner
2021-02-25 18:43 ` Christoph Hellwig
2021-02-25 22:21 ` Dave Chinner
2021-02-24 6:34 ` [PATCH 11/13] xfs:_introduce xlog_write_partial() Dave Chinner
2021-02-25 18:54 ` Christoph Hellwig
2021-02-25 22:23 ` Dave Chinner
2021-02-24 6:34 ` Dave Chinner [this message]
2021-02-24 6:34 ` [PATCH 13/13] xfs: CIL context doesn't need to count iovecs Dave Chinner
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=20210224063459.3436852-13-david@fromorbit.com \
--to=david@fromorbit.com \
--cc=linux-xfs@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.