From: Shaohua Li <shli@kernel.org>
To: Song Liu <songliubraving@fb.com>
Cc: linux-raid@vger.kernel.org, neilb@suse.com, shli@fb.com,
kernel-team@fb.com, dan.j.williams@intel.com, hch@infradead.org,
liuzhengyuang521@gmail.com, liuzhengyuan@kylinos.cn
Subject: Re: [PATCH v4 6/8] md/r5cache: sysfs entry r5c_state
Date: Wed, 12 Oct 2016 09:56:47 -0700 [thread overview]
Message-ID: <20161012165647.GB15323@kernel.org> (raw)
In-Reply-To: <20161011002446.2002428-7-songliubraving@fb.com>
On Mon, Oct 10, 2016 at 05:24:44PM -0700, Song Liu wrote:
> r5c_state have 4 states:
> * no-cache;
> * write-through (write journal only);
> * write-back (w/ write cache);
> * cache-broken (journal missing or Faulty)
>
> When there is functional write cache, r5c_state is a knob to
> switch between write-back and write-through.
>
> When the journal device is broken, the raid array is forced
> in readonly mode. In this case, r5c_state can be used to
> remove "journal feature", and thus make the array read-write
> without journal. By writing into r5c_cache_mode, the array
> can transit from cache-broken to no-cache, which removes
> journal feature for the array.
>
> To remove the journal feature:
> - When journal fails, the raid array is forced readonly mode
> (enforced by kernel)
> - User uses the new interface to remove journal (writing 0
> to r5c_state, I will add a mdadm option for that later)
> - User forces array read-write;
> - Kernel updates superblock and array can run read/write.
>
> Signed-off-by: Song Liu <songliubraving@fb.com>
> ---
> drivers/md/raid5-cache.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++
> drivers/md/raid5.c | 1 +
> drivers/md/raid5.h | 1 +
> 3 files changed, 60 insertions(+)
>
> diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c
> index 2774f93..b19024c 100644
> --- a/drivers/md/raid5-cache.c
> +++ b/drivers/md/raid5-cache.c
> @@ -57,6 +57,8 @@ enum r5c_state {
> R5C_STATE_CACHE_BROKEN = 3,
> };
>
> +static char *r5c_state_str[] = {"no-cache", "write-through",
> + "write-back", "cache-broken"};
> /*
> * raid5 cache state machine
> *
> @@ -1519,6 +1521,62 @@ int r5c_flush_cache(struct r5conf *conf, int num)
> return count;
> }
>
> +ssize_t r5c_state_show(struct mddev *mddev, char *page)
> +{
> + struct r5conf *conf = mddev->private;
> + int val = 0;
> + int ret = 0;
> +
> + if (conf->log)
> + val = conf->log->r5c_state;
> + else if (test_bit(MD_HAS_JOURNAL, &mddev->flags))
> + val = R5C_STATE_CACHE_BROKEN;
> + ret += snprintf(page, PAGE_SIZE - ret, "%d: %s\n",
> + val, r5c_state_str[val]);
No point to do PAGE_SIZE - ret
This isn't how sysfs entry is supposed to output. You can either show the value
or the string, not both with format. I'd prefer the string though, and make
store accept string.
Thanks,
Shaohua
next prev parent reply other threads:[~2016-10-12 16:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-11 0:24 [PATCH v4 0/8] raid5-cache: enabling cache features Song Liu
2016-10-11 0:24 ` [PATCH v4 1/8] md/r5cache: Check array size in r5l_init_log Song Liu
2016-10-11 0:24 ` [PATCH v4 2/8] md/r5cache: move some code to raid5.h Song Liu
2016-10-11 0:24 ` [PATCH v4 3/8] md/r5cache: State machine for raid5-cache write back mode Song Liu
2016-10-11 0:24 ` [PATCH v4 4/8] md/r5cache: write part of r5cache Song Liu
2016-10-11 0:24 ` [PATCH v4 5/8] md/r5cache: reclaim support Song Liu
2016-10-12 16:50 ` Shaohua Li
2016-10-11 0:24 ` [PATCH v4 6/8] md/r5cache: sysfs entry r5c_state Song Liu
2016-10-12 16:56 ` Shaohua Li [this message]
2016-10-12 21:23 ` Song Liu
2016-10-11 0:24 ` [PATCH v4 7/8] md/r5cache: r5c recovery Song Liu
2016-10-11 0:24 ` [PATCH v4 8/8] md/r5cache: handle SYNC and FUA Song Liu
2016-10-12 17:52 ` [PATCH v4 0/8] raid5-cache: enabling cache features Shaohua Li
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=20161012165647.GB15323@kernel.org \
--to=shli@kernel.org \
--cc=dan.j.williams@intel.com \
--cc=hch@infradead.org \
--cc=kernel-team@fb.com \
--cc=linux-raid@vger.kernel.org \
--cc=liuzhengyuan@kylinos.cn \
--cc=liuzhengyuang521@gmail.com \
--cc=neilb@suse.com \
--cc=shli@fb.com \
--cc=songliubraving@fb.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;
as well as URLs for NNTP newsgroup(s).