All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
To: Emanuele Giuseppe Esposito <eesposit@redhat.com>, qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>,
	John Snow <jsnow@redhat.com>,
	Wen Congyang <wencongyang2@huawei.com>,
	Xie Changlong <xiechanglong.d@gmail.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>, Fam Zheng <fam@euphon.net>,
	qemu-devel@nongnu.org
Subject: Re: [RFC PATCH 00/15] job: replace AioContext lock with job_mutex
Date: Tue, 2 Nov 2021 16:08:18 +0300	[thread overview]
Message-ID: <dd430e7e-d45c-038f-d571-9be2a0823ee2@virtuozzo.com> (raw)
In-Reply-To: <20211029163914.4044794-1-eesposit@redhat.com>

29.10.2021 19:38, Emanuele Giuseppe Esposito wrote:
> In this series, we want to remove the AioContext lock and instead
> use the already existent job_mutex to protect the job structures
> and list. This is part of the work to get rid of AioContext lock
> usage in favour of smaller granularity locks.
> 
> In patches 1-3-5-6-7, we split the job API in two headers:
> job-driver.h and job-monitor.h.
> As explained in job.c, job-monitor are the functions mainly used
> by the monitor, and require consistency between the search of
> a specific job (job_get) and the actual operation/action on it
> (e.g. job_user_cancel). Therefore job-monitor API assume that
> the job mutex lock is always held by the caller.
> 
> job-driver, on the other side, is the collection of functions
> that are used by the job drivers or core block layer. These
> functions are not aware of the job mutex, and delegate the
> locking to the callee instead.
> 
> We also have job-common.h contains the job struct definition
> and common functions that are not part of monitor or driver APIs.
> job.h is left for legacy and to avoid changing all files that
> include it.


Honestly, I don't really like the idea of splitting:

1. It's not a functional split: for some functions we have a locked version in one header and unlocked in the other. But actually they are the same function. I'd prefer such wrappers to live together. All the declarations in the headers are about one thing: Job.

I think, splitting make sense when we really split things, split objects into some separate entities. But here you just use different header to group functions by some criteria not related to their action. I don't like it.

I think, it's enough to specify in a comment above the function, does it need locking or not ("foo_locked" naming helps too), and different headers doesn't help to understand code but make it more difficult.


2. I don't like file names:

"job-driver" for me sounds like something about JobDriver struct. "job-monitor" - unclear. You define job-monitor as functions mainly used by the monitor. But actually they are used by other code paths as well.. Also, jobs don't directly relate to monitor, they are abstract, so no reason to establish such a relation in file names.



-- 
Best regards,
Vladimir


  parent reply	other threads:[~2021-11-02 13:16 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-29 16:38 [RFC PATCH 00/15] job: replace AioContext lock with job_mutex Emanuele Giuseppe Esposito
2021-10-29 16:39 ` [RFC PATCH 01/15] jobs: add job-common.h Emanuele Giuseppe Esposito
2021-11-02 10:07   ` Stefan Hajnoczi
2021-10-29 16:39 ` [RFC PATCH 02/15] job.c: make job_lock/unlock public Emanuele Giuseppe Esposito
2021-11-02 10:10   ` Stefan Hajnoczi
2021-10-29 16:39 ` [RFC PATCH 03/15] job-common.h: categorize fields in struct Job Emanuele Giuseppe Esposito
2021-11-02 10:19   ` Stefan Hajnoczi
2021-10-29 16:39 ` [RFC PATCH 04/15] jobs: add job-monitor.h Emanuele Giuseppe Esposito
2021-10-29 16:39 ` [RFC PATCH 05/15] job-monitor.h: define the job monitor API Emanuele Giuseppe Esposito
2021-10-29 16:39 ` [RFC PATCH 06/15] jobs: add job-driver.h Emanuele Giuseppe Esposito
2021-10-29 16:39 ` [RFC PATCH 07/15] job-driver.h: add helper functions Emanuele Giuseppe Esposito
2021-11-02 10:54   ` Vladimir Sementsov-Ogievskiy
2021-10-29 16:39 ` [RFC PATCH 08/15] job.c: minor adjustments in preparation to job-driver Emanuele Giuseppe Esposito
2021-11-02 10:51   ` Vladimir Sementsov-Ogievskiy
2021-10-29 16:39 ` [RFC PATCH 09/15] job.c: move inner aiocontext lock in callbacks Emanuele Giuseppe Esposito
2021-10-29 16:39 ` [RFC PATCH 10/15] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED Emanuele Giuseppe Esposito
2021-10-29 16:39 ` [RFC PATCH 11/15] jobs: remove aiocontext locks since the functions are under BQL Emanuele Giuseppe Esposito
2021-11-02 12:41   ` Vladimir Sementsov-Ogievskiy
2021-11-03 15:56     ` Emanuele Giuseppe Esposito
2021-10-29 16:39 ` [RFC PATCH 12/15] jobs: protect jobs with job_lock/unlock Emanuele Giuseppe Esposito
2021-11-02 12:53   ` Vladimir Sementsov-Ogievskiy
2021-10-29 16:39 ` [RFC PATCH 13/15] jobs: use job locks and helpers also in the unit tests Emanuele Giuseppe Esposito
2021-10-29 16:39 ` [RFC PATCH 14/15] jobs: add missing job locks to replace aiocontext lock Emanuele Giuseppe Esposito
2021-10-29 16:39 ` [RFC PATCH 15/15] jobs: remove all unnecessary AioContext locks Emanuele Giuseppe Esposito
2021-11-02 10:06 ` [RFC PATCH 00/15] job: replace AioContext lock with job_mutex Stefan Hajnoczi
2021-11-02 13:08 ` Vladimir Sementsov-Ogievskiy [this message]
2021-11-02 14:13   ` Emanuele Giuseppe Esposito
2021-11-02 14:58     ` Vladimir Sementsov-Ogievskiy

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=dd430e7e-d45c-038f-d571-9be2a0823ee2@virtuozzo.com \
    --to=vsementsov@virtuozzo.com \
    --cc=armbru@redhat.com \
    --cc=eesposit@redhat.com \
    --cc=fam@euphon.net \
    --cc=hreitz@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=wencongyang2@huawei.com \
    --cc=xiechanglong.d@gmail.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 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.