qemu-e2k/hw/9pfs
Greg Kurz 20b7f45b22 9pfs: Improve unreclaim loop
If a fid was actually re-opened by v9fs_reopen_fid(), we re-traverse the
fid list from the head in case some other request created a fid that
needs to be marked unreclaimable as well (i.e. the client opened a new
handle on the path that is being unlinked). This is suboptimal since
most if not all fids that require it have likely been taken care of
already.

This is mostly the result of new fids being added to the head of the
list. Since the list is now a QSIMPLEQ, add new fids at the end instead
to avoid the need to rewind. Take a reference on the fid to ensure it
doesn't go away during v9fs_reopen_fid() and that it can be safely
passed to QSIMPLEQ_NEXT() afterwards. Since the associated put_fid()
can also yield, same is done with the next fid. So the logic here is
to get a reference on a fid and only put it back during the next
iteration after we could get a reference on the next fid.

Reviewed-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Message-Id: <20210121181510.1459390-1-groug@kaod.org>
Signed-off-by: Greg Kurz <groug@kaod.org>
2021-01-22 15:17:19 +01:00
..
9p-local.c hw/9pfs : add spaces around operator 2020-11-05 15:14:03 +01:00
9p-local.h 9pfs: local: open/opendir: don't follow symlinks 2017-02-28 11:21:15 +01:00
9p-posix-acl.c 9pfs: local: lremovexattr: don't follow symlinks 2017-02-28 11:21:15 +01:00
9p-proxy.c 9pfs/proxy: Check return value of proxy_marshal() 2021-01-21 17:49:45 +01:00
9p-proxy.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
9p-synth.c 9pfs: suppress performance warnings on qtest runs 2020-10-19 14:25:40 +02:00
9p-synth.h hw/9pfs/9p-synth: added directory for readdir test 2020-02-08 09:29:04 +01:00
9p-util.c 9p: Move a couple xattr functions to 9p-util 2018-06-07 12:17:22 +02:00
9p-util.h 9pfs: local: ignore O_NOATIME if we don't have permissions 2020-05-14 08:06:43 +02:00
9p-xattr-user.c 9pfs: local: lremovexattr: don't follow symlinks 2017-02-28 11:21:15 +01:00
9p-xattr.c 9p: Move a couple xattr functions to 9p-util 2018-06-07 12:17:22 +02:00
9p-xattr.h 9pfs: fix XattrOperations typedef 2018-01-08 11:18:22 +01:00
9p.c 9pfs: Improve unreclaim loop 2021-01-22 15:17:19 +01:00
9p.h 9pfs: Convert V9fsFidState::fid_list to QSIMPLEQ 2021-01-21 17:49:45 +01:00
Kconfig hw/9pfs: Fix Kconfig dependency problem between 9pfs and Xen 2020-11-05 15:21:11 +01:00
codir.c 9pfs: add new function v9fs_co_readdir_many() 2020-08-12 09:17:32 +02:00
cofile.c Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
cofs.c hw/9pfs : add space before the open parenthesis '(' 2020-11-05 15:14:03 +01:00
coth.c Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
coth.h 9pfs: clarify latency of v9fs_co_run_in_worker() 2020-08-12 09:17:32 +02:00
coxattr.c Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
meson.build hw/9pfs: Fix Kconfig dependency problem between 9pfs and Xen 2020-11-05 15:21:11 +01:00
trace-events 9p: unsigned type for type, version, path 2019-10-10 11:36:04 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
virtio-9p-device.c 9pfs: suppress performance warnings on qtest runs 2020-10-19 14:25:40 +02:00
virtio-9p.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
xen-9p-backend.c xen/9pfs: increase max ring order to 9 2020-05-25 11:45:40 +02:00
xen-9pfs.h xen: Import other xen/io/*.h 2019-06-24 10:42:30 +01:00