From: Joseph Qi <joseph.qi@linux.alibaba.com>
To: Jeffle Xu <jefflexu@linux.alibaba.com>,
dhowells@redhat.com, linux-cachefs@redhat.com, xiang@kernel.org,
chao@kernel.org, linux-erofs@lists.ozlabs.org
Cc: linux-fsdevel@vger.kernel.org, bo.liu@linux.alibaba.com,
tao.peng@linux.alibaba.com, gerry@linux.alibaba.com,
eguan@linux.alibaba.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 01/23] cachefiles: add cachefiles_demand devnode
Date: Tue, 28 Dec 2021 10:47:49 +0800 [thread overview]
Message-ID: <d066131d-1bcb-e64d-a10b-b3dbb4506b96@linux.alibaba.com> (raw)
In-Reply-To: <20211227125444.21187-2-jefflexu@linux.alibaba.com>
On 12/27/21 8:54 PM, Jeffle Xu wrote:
> fscache/cachefiles used to serve as a local cache for remote fs. The
> following patches will introduce a new use case, in which local
> read-only fs could implement demand reading with fscache. By then the
> user daemon needs to read and poll on the devnode, and thus the original
> cachefiles devnode can't be reused in this case.
>
> Thus create a new devnode specifically for the new mode. The following
> patches will add more file_operations.
>
> Signed-off-by: Jeffle Xu <jefflexu@linux.alibaba.com>
> ---
> fs/cachefiles/daemon.c | 8 ++++++++
> fs/cachefiles/internal.h | 1 +
> fs/cachefiles/main.c | 12 ++++++++++++
> 3 files changed, 21 insertions(+)
>
> diff --git a/fs/cachefiles/daemon.c b/fs/cachefiles/daemon.c
> index 40a792421fc1..871f1e0f423d 100644
> --- a/fs/cachefiles/daemon.c
> +++ b/fs/cachefiles/daemon.c
> @@ -56,6 +56,14 @@ const struct file_operations cachefiles_daemon_fops = {
> .llseek = noop_llseek,
> };
>
> +const struct file_operations cachefiles_demand_fops = {
> + .owner = THIS_MODULE,
> + .open = cachefiles_daemon_open,
> + .release = cachefiles_daemon_release,
> + .write = cachefiles_daemon_write,
> + .llseek = noop_llseek,
> +};
> +
Better to prepare the on-demand read() and poll() first, and then add
the on-demand cachefiles dev.
Thanks,
Joseph
> struct cachefiles_daemon_cmd {
> char name[8];
> int (*handler)(struct cachefiles_cache *cache, char *args);
> diff --git a/fs/cachefiles/internal.h b/fs/cachefiles/internal.h
> index 421423819d63..e0ed811d628d 100644
> --- a/fs/cachefiles/internal.h
> +++ b/fs/cachefiles/internal.h
> @@ -145,6 +145,7 @@ extern int cachefiles_has_space(struct cachefiles_cache *cache,
> * daemon.c
> */
> extern const struct file_operations cachefiles_daemon_fops;
> +extern const struct file_operations cachefiles_demand_fops;
>
> /*
> * error_inject.c
> diff --git a/fs/cachefiles/main.c b/fs/cachefiles/main.c
> index 3f369c6f816d..0a423274d283 100644
> --- a/fs/cachefiles/main.c
> +++ b/fs/cachefiles/main.c
> @@ -39,6 +39,12 @@ static struct miscdevice cachefiles_dev = {
> .fops = &cachefiles_daemon_fops,
> };
>
> +static struct miscdevice cachefiles_demand_dev = {
> + .minor = MISC_DYNAMIC_MINOR,
> + .name = "cachefiles_demand",
> + .fops = &cachefiles_demand_fops,
> +};
> +
> /*
> * initialise the fs caching module
> */
> @@ -52,6 +58,9 @@ static int __init cachefiles_init(void)
> ret = misc_register(&cachefiles_dev);
> if (ret < 0)
> goto error_dev;
> + ret = misc_register(&cachefiles_demand_dev);
> + if (ret < 0)
> + goto error_demand_dev;
>
> /* create an object jar */
> ret = -ENOMEM;
> @@ -68,6 +77,8 @@ static int __init cachefiles_init(void)
> return 0;
>
> error_object_jar:
> + misc_deregister(&cachefiles_demand_dev);
> +error_demand_dev:
> misc_deregister(&cachefiles_dev);
> error_dev:
> cachefiles_unregister_error_injection();
> @@ -86,6 +97,7 @@ static void __exit cachefiles_exit(void)
> pr_info("Unloading\n");
>
> kmem_cache_destroy(cachefiles_object_jar);
> + misc_deregister(&cachefiles_demand_dev);
> misc_deregister(&cachefiles_dev);
> cachefiles_unregister_error_injection();
> }
next prev parent reply other threads:[~2021-12-28 2:47 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-27 12:54 [PATCH v1 00/23] fscache,erofs: fscache-based demand-read semantics Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 01/23] cachefiles: add cachefiles_demand devnode Jeffle Xu
2021-12-28 2:47 ` Joseph Qi [this message]
2021-12-28 12:34 ` JeffleXu
2021-12-27 12:54 ` [PATCH v1 02/23] cachefiles: add mode command to distinguish modes Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 03/23] cachefiles: detect backing file size in demand-read mode Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 04/23] netfs: make ops->init_rreq() optional Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 05/23] netfs: add inode parameter to netfs_alloc_read_request() Jeffle Xu
2022-01-04 14:00 ` Gao Xiang
2022-01-13 3:10 ` [Linux-cachefs] " JeffleXu
2022-01-13 12:09 ` Gao Xiang
2021-12-27 12:54 ` [PATCH v1 06/23] erofs: export erofs_map_blocks() Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 07/23] erofs: add nodev mode Jeffle Xu
2022-01-04 14:33 ` Gao Xiang
2022-01-04 14:58 ` Gao Xiang
2022-01-05 9:04 ` JeffleXu
2021-12-27 12:54 ` [PATCH v1 08/23] erofs: register global fscache volume Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 09/23] erofs: add cookie context helper functions Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 10/23] erofs: add anonymous inode managing page cache of blob file Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 11/23] erofs: register cookie context for bootstrap Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 12/23] erofs: implement fscache-based metadata read Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 13/23] erofs: implement fscache-based data read Jeffle Xu
2022-01-03 6:32 ` JeffleXu
2022-01-04 14:40 ` Gao Xiang
2022-01-05 2:29 ` JeffleXu
2021-12-27 12:54 ` [PATCH v1 14/23] erofs: register cookie context for data blobs Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 15/23] erofs: implement fscache-based data read " Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 16/23] erofs: add 'uuid' mount option Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 17/23] netfs: support on demand read Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 18/23] cachefiles: use idr tree managing pending " Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 19/23] cachefiles: implement .demand_read() for " Jeffle Xu
2021-12-27 15:36 ` Matthew Wilcox
2021-12-28 12:33 ` JeffleXu
2022-01-12 9:02 ` JeffleXu
2022-01-19 13:20 ` Matthew Wilcox
2022-01-20 12:43 ` JeffleXu
2021-12-27 12:54 ` [PATCH v1 20/23] cachefiles: implement .poll() " Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 21/23] cachefiles: implement .read() " Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 22/23] cachefiles: add done command " Jeffle Xu
2021-12-27 12:54 ` [PATCH v1 23/23] erofs: support on " Jeffle Xu
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=d066131d-1bcb-e64d-a10b-b3dbb4506b96@linux.alibaba.com \
--to=joseph.qi@linux.alibaba.com \
--cc=bo.liu@linux.alibaba.com \
--cc=chao@kernel.org \
--cc=dhowells@redhat.com \
--cc=eguan@linux.alibaba.com \
--cc=gerry@linux.alibaba.com \
--cc=jefflexu@linux.alibaba.com \
--cc=linux-cachefs@redhat.com \
--cc=linux-erofs@lists.ozlabs.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tao.peng@linux.alibaba.com \
--cc=xiang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox