From: Dominique Martinet <email@example.com> To: David Howells <firstname.lastname@example.org> Cc: Eric Van Hensbergen <email@example.com>, Latchesar Ionkov <firstname.lastname@example.org>, email@example.com, firstname.lastname@example.org, email@example.com Subject: Re: [PATCH] 9p: Convert to new fscache API Date: Wed, 18 Nov 2020 13:48:26 +0100 [thread overview] Message-ID: <20201118124826.GA17850@nautica> (raw) In-Reply-To: <firstname.lastname@example.org> David Howells wrote on Wed, Nov 18, 2020: > Here's a rough draft of a patch to convert 9P to use the rewritten fscache > API. It compiles, but I've no way to test it. This is built on top of my > fscache-iter branch: > > https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git/log/?h=fscache-iter Thanks, I'm ashamed I hadn't found time to work on this it's a great help. I can get some test running with this. What's the current schedule/plan for the fscache branch merging? Will you be trying this merge window next month? Couple more questions below > Notes: > > (*) I've switched to use ITER_XATTR rather than ITER_BVEC in some places. > > (*) I've added a pair of helper functions to get the cookie: > > v9fs_inode_cookie() > v9fs_session_cache() > > These return NULL if CONFIG_9P_FSCACHE=n. > > (*) I've moved some of the fscache accesses inline. Using the above helper > functions, it all compiles away due to NULL pointer checks in the header > file if fscache is disabled. > > (*) 9P's readpage and readpages now just jump into the netfs helpers, as does > write_begin. v9fs_req_issue_op() initiates the I/O on behalf of the > helpers. > > (*) v9fs_write_begin() now returns the subpage and v9fs_write_end() goes back > out to the head page. thp_size() is also used. This should mean you > handle transparent huge pages (THPs) and can turn that on. > > (*) I have made an assumption that 9p_client_read() and write can handle I/Os > larger than a page. If this is not the case, v9fs_req_ops will need > clamp_length() implementing. There's a max driven by the client's msize (client->msize - P9_IOHDRSZ ; unfortunately msize is just guaranted to be >= 4k so that means the actual IO size would be smaller in that case even if that's not intended to be common) > (*) The expand_readahead() and clamp_length() ops should perhaps be > implemented to align and trim with respect to maximum I/O size. > > (*) iget and evict acquire and relinquish a cookie. > > (*) open and release use and unuse that cookie. > > (*) writepage writes the dirty data to the cache. > > (*) setattr resizes the cache if necessary. > > (*) The cache needs to be invalidated if a 3rd-party change happens, but I > haven't done that. There's no concurrent access logic in 9p as far as I'm aware (like NFS does if the mtime changes for example), so I assume we can keep ignoring this. > (*) With these changes, 9p should cache local changes too, not just data > read. > > (*) If 9p supports DIO writes, it should invalidate a cache object with > FSCACHE_INVAL_DIO_WRITE when one happens - thereby stopping caching for > that file until all file handles on it are closed. Not 100% sure actually there is some code about it but comment says it's disabled when cache is active; I'll check just found another problem with some queued patch that need fixing first... > I forgot something: netfs_subreq_terminated() needs to be called when > the read is complete. If p9_client_read() is synchronous, then that > would be here, (it is synchronous; I'll add that suggestion) -- Dominique
next prev parent reply other threads:[~2020-11-18 12:49 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-11-18 11:02 David Howells 2020-11-18 11:43 ` David Howells 2020-11-18 12:00 ` David Howells 2020-11-18 12:48 ` Dominique Martinet [this message] 2020-11-18 13:38 ` David Howells 2020-11-18 14:16 ` Dominique Martinet 2020-11-18 15:02 ` David Howells 2020-11-18 14:59 ` David Howells
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=20201118124826.GA17850@nautica \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: [PATCH] 9p: Convert to new fscache API' \ /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
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).