From: Christian Schoenebeck <qemu_oss@crudebyte.com>
To: qemu-devel@nongnu.org
Cc: Greg Kurz <groug@kaod.org>
Subject: Re: [PATCH v6 3/5] 9pfs: add new function v9fs_co_readdir_many()
Date: Mon, 04 May 2020 12:08:07 +0200 [thread overview]
Message-ID: <8025053.zxIBI3vFlk@silver> (raw)
In-Reply-To: <20200504111834.117c98d9@bahia.lan>
On Montag, 4. Mai 2020 11:18:34 CEST Greg Kurz wrote:
> > > > > > + memcpy(e->dent, dent, sizeof(struct dirent));
> > > > > > +
> > > > > > + /* perform a full stat() for directory entry if requested
> > > > > > by
> > > > > > caller */ + if (dostat) {
> > > > > > + err = s->ops->name_to_path(
> > > > > > + &s->ctx, &fidp->path, dent->d_name, &path
> > > > > > + );
> > > > > > + if (err < 0) {
> > > > > >
> > > > > > err = -errno;
> > > > > >
> > > > > > - } else {
> > > > > > - *dent = entry;
> > > > > > - err = 0;
> > > > > > + break;
> > > > >
> > > > > ... but we're erroring out there and it seems that we're leaking
> > > > > all the entries that have been allocated so far.
> > > >
> > > > No, they are not leaking actually.
> > > >
> > > > You are right that they are not deallocated in do_readdir_many(), but
> > > > that's intentional: in the new implementation of v9fs_do_readdir() you
> > > > see that v9fs_free_dirents(entries) is *always* called at the very end
> > > > of
> > > > the function, no matter if success or any error. That's one of the
> > > > measures to simplify overall code as much as possible.
> > >
> > > Hmm... I still don't quite like the idea of having an erroring function
> > > asking for extra cleanup. I suggest you come up with an idem-potent
> > > version
> > > of v9fs_free_dirents(), move it to codir.c (I also prefer locality of
> > > calls
> > > to g_malloc and g_free in the same unit), make it extern and call it
> > > both on the error path of v9fs_co_readdir_many() and in
> > > v9fs_do_readdir().
> >
> > I understand your position of course, but I still won't find that to be a
> > good move.
> >
> > My veto here has a reason: your requested change would prevent an
> > application that I had in mind for future purpose actually: Allowing
> > "greedy" fetching
> Are you telling that this series has some kind of hidden agenda related to
> a possible future change ?!?
readdir_many() is written intended as general purpose directory retrieval
function, that is for other purposes in future in mind, yes.
What I don't do is adding code which is not explicitly needed right now of
course. That would not make sense and would make code unnecessarily bloated
and of course too complicated (e.g. readdir_many() is currently simply
directly calling v9fs_readdir_response_size() to decide whether to terminate
the loop instead of taking some complicated general-purpose loop end
"predicate" structure or callback as function argument).
But when it comes to the structure of the code that I have to add NOW, then I
indeed take potential future changes into account, yes! And this applies
specifically to the two changes you requested here inside readdir_many().
Because I already know, I would need to revert those 2 changes that you
requested later on. And I don't see any issue whatsover retaining the current
version concerning those 2.
Best regards,
Christian Schoenebeck
next prev parent reply other threads:[~2020-05-04 10:23 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-19 15:10 [PATCH v6 0/5] 9pfs: readdir optimization Christian Schoenebeck
2020-04-19 15:00 ` [PATCH v6 1/5] tests/virtio-9p: added split readdir tests Christian Schoenebeck
2020-04-19 15:00 ` [PATCH v6 2/5] 9pfs: make v9fs_readdir_response_size() public Christian Schoenebeck
2020-04-19 15:02 ` [PATCH v6 3/5] 9pfs: add new function v9fs_co_readdir_many() Christian Schoenebeck
2020-04-30 11:42 ` Greg Kurz
2020-04-30 12:50 ` Christian Schoenebeck
2020-04-30 13:30 ` Greg Kurz
2020-05-01 14:04 ` Christian Schoenebeck
2020-05-04 9:18 ` Greg Kurz
2020-05-04 10:08 ` Christian Schoenebeck [this message]
2020-05-07 12:16 ` Christian Schoenebeck
2020-05-07 15:59 ` Greg Kurz
2020-04-19 15:06 ` [PATCH v6 4/5] 9pfs: T_readdir latency optimization Christian Schoenebeck
2020-06-03 17:16 ` Christian Schoenebeck
2020-06-29 16:39 ` Greg Kurz
2020-06-30 15:16 ` Christian Schoenebeck
2020-06-30 16:39 ` Greg Kurz
2020-06-30 18:00 ` Christian Schoenebeck
2020-07-01 10:09 ` Greg Kurz
2020-07-01 11:47 ` Christian Schoenebeck
2020-07-01 15:12 ` Greg Kurz
2020-07-02 11:43 ` Christian Schoenebeck
2020-07-02 15:35 ` Greg Kurz
2020-07-02 17:23 ` Christian Schoenebeck
2020-07-03 8:08 ` Christian Schoenebeck
2020-07-03 16:08 ` Greg Kurz
2020-07-03 18:27 ` Christian Schoenebeck
2020-07-03 15:53 ` Greg Kurz
2020-07-03 18:12 ` Christian Schoenebeck
2020-04-19 15:07 ` [PATCH v6 5/5] 9pfs: clarify latency of v9fs_co_run_in_worker() Christian Schoenebeck
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=8025053.zxIBI3vFlk@silver \
--to=qemu_oss@crudebyte.com \
--cc=groug@kaod.org \
--cc=qemu-devel@nongnu.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.