#
243c6ec7 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: rename notifier callbacks as _locked
They all are called with job_lock held, in job_event_*_locked()
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir
blockjob: rename notifier callbacks as _locked
They all are called with job_lock held, in job_event_*_locked()
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20220926093214.506243-16-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
3ed4f708 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
jobs: protect job.aio_context with BQL and job_mutex
In order to make it thread safe, implement a "fake rwlock", where we allow reads under BQL *or* job_mutex held, but writes only under BQL *and* j
jobs: protect job.aio_context with BQL and job_mutex
In order to make it thread safe, implement a "fake rwlock", where we allow reads under BQL *or* job_mutex held, but writes only under BQL *and* job_mutex.
The only write we have is in child_job_set_aio_ctx, which always happens under drain (so the job is paused). For this reason, introduce job_set_aio_context and make sure that the context is set under BQL, job_mutex and drain. Also make sure all other places where the aiocontext is read are protected.
The reads in commit.c and mirror.c are actually safe, because always done under BQL.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Message-Id: <20220926093214.506243-14-eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
880eeec6 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
jobs: group together API calls under the same job lock
Now that the API offers also _locked() functions, take advantage of it and give also the caller control to take the lock and call _locked funct
jobs: group together API calls under the same job lock
Now that the API offers also _locked() functions, take advantage of it and give also the caller control to take the lock and call _locked functions.
This makes sense especially when we have for loops, because it makes no sense to have:
for(job = job_next(); ...)
where each job_next() takes the lock internally. Instead we want
JOB_LOCK_GUARD(); for(job = job_next_locked(); ...)
In addition, protect also direct field accesses, by either creating a new critical section or widening the existing ones.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Message-Id: <20220926093214.506243-12-eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
f41ab73f |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: introduce block_job _locked() APIs
Just as done with job.h, create _locked() functions in blockjob.h
These functions will be later useful when caller has already taken the lock. All block
blockjob: introduce block_job _locked() APIs
Just as done with job.h, create _locked() functions in blockjob.h
These functions will be later useful when caller has already taken the lock. All blockjob _locked functions call job _locked functions.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20220926093214.506243-8-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
bf61c583 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
job: move and update comments from blockjob.c
This comment applies more on job, it was left in blockjob as in the past the whole job logic was implemented there.
Note: at this stage, job_{lock/unlo
job: move and update comments from blockjob.c
This comment applies more on job, it was left in blockjob as in the past the whole job logic was implemented there.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
No functional change intended.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20220926093214.506243-7-eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
ba6a9100 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: remove unused functions
These public functions are not used anywhere, thus can be dropped.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Stefan Hajnoczi <st
blockjob: remove unused functions
These public functions are not used anywhere, thus can be dropped.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Message-Id: <20220926093214.506243-21-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
fca26318 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
block_job_query: remove atomic read
Not sure what the atomic here was supposed to do, since job.busy is protected by the job lock. Since the whole function is called under job_mutex, just remove the
block_job_query: remove atomic read
Not sure what the atomic here was supposed to do, since job.busy is protected by the job lock. Since the whole function is called under job_mutex, just remove the atomic.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20220926093214.506243-20-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
d59cb66d |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: protect iostatus field in BlockJob struct
iostatus is the only field (together with .job) that needs protection using the job mutex.
It is set in the main loop (GLOBAL_STATE functions) bu
blockjob: protect iostatus field in BlockJob struct
iostatus is the only field (together with .job) that needs protection using the job mutex.
It is set in the main loop (GLOBAL_STATE functions) but read in I/O code (block_job_error_action).
In order to protect it, change block_job_iostatus_set_err to block_job_iostatus_set_err_locked(), always called under job lock.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Message-Id: <20220926093214.506243-17-eesposit@redhat.com> [kwolf: Fixed up type of iostatus] Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
243c6ec7 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: rename notifier callbacks as _locked
They all are called with job_lock held, in job_event_*_locked()
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir
blockjob: rename notifier callbacks as _locked
They all are called with job_lock held, in job_event_*_locked()
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20220926093214.506243-16-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
3ed4f708 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
jobs: protect job.aio_context with BQL and job_mutex
In order to make it thread safe, implement a "fake rwlock", where we allow reads under BQL *or* job_mutex held, but writes only under BQL *and* j
jobs: protect job.aio_context with BQL and job_mutex
In order to make it thread safe, implement a "fake rwlock", where we allow reads under BQL *or* job_mutex held, but writes only under BQL *and* job_mutex.
The only write we have is in child_job_set_aio_ctx, which always happens under drain (so the job is paused). For this reason, introduce job_set_aio_context and make sure that the context is set under BQL, job_mutex and drain. Also make sure all other places where the aiocontext is read are protected.
The reads in commit.c and mirror.c are actually safe, because always done under BQL.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Message-Id: <20220926093214.506243-14-eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
880eeec6 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
jobs: group together API calls under the same job lock
Now that the API offers also _locked() functions, take advantage of it and give also the caller control to take the lock and call _locked funct
jobs: group together API calls under the same job lock
Now that the API offers also _locked() functions, take advantage of it and give also the caller control to take the lock and call _locked functions.
This makes sense especially when we have for loops, because it makes no sense to have:
for(job = job_next(); ...)
where each job_next() takes the lock internally. Instead we want
JOB_LOCK_GUARD(); for(job = job_next_locked(); ...)
In addition, protect also direct field accesses, by either creating a new critical section or widening the existing ones.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Message-Id: <20220926093214.506243-12-eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
f41ab73f |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: introduce block_job _locked() APIs
Just as done with job.h, create _locked() functions in blockjob.h
These functions will be later useful when caller has already taken the lock. All block
blockjob: introduce block_job _locked() APIs
Just as done with job.h, create _locked() functions in blockjob.h
These functions will be later useful when caller has already taken the lock. All blockjob _locked functions call job _locked functions.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20220926093214.506243-8-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
bf61c583 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
job: move and update comments from blockjob.c
This comment applies more on job, it was left in blockjob as in the past the whole job logic was implemented there.
Note: at this stage, job_{lock/unlo
job: move and update comments from blockjob.c
This comment applies more on job, it was left in blockjob as in the past the whole job logic was implemented there.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
No functional change intended.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20220926093214.506243-7-eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
ba6a9100 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: remove unused functions
These public functions are not used anywhere, thus can be dropped.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Stefan Hajnoczi <st
blockjob: remove unused functions
These public functions are not used anywhere, thus can be dropped.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Message-Id: <20220926093214.506243-21-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
fca26318 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
block_job_query: remove atomic read
Not sure what the atomic here was supposed to do, since job.busy is protected by the job lock. Since the whole function is called under job_mutex, just remove the
block_job_query: remove atomic read
Not sure what the atomic here was supposed to do, since job.busy is protected by the job lock. Since the whole function is called under job_mutex, just remove the atomic.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20220926093214.506243-20-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
d59cb66d |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: protect iostatus field in BlockJob struct
iostatus is the only field (together with .job) that needs protection using the job mutex.
It is set in the main loop (GLOBAL_STATE functions) bu
blockjob: protect iostatus field in BlockJob struct
iostatus is the only field (together with .job) that needs protection using the job mutex.
It is set in the main loop (GLOBAL_STATE functions) but read in I/O code (block_job_error_action).
In order to protect it, change block_job_iostatus_set_err to block_job_iostatus_set_err_locked(), always called under job lock.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Message-Id: <20220926093214.506243-17-eesposit@redhat.com> [kwolf: Fixed up type of iostatus] Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
243c6ec7 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: rename notifier callbacks as _locked
They all are called with job_lock held, in job_event_*_locked()
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir
blockjob: rename notifier callbacks as _locked
They all are called with job_lock held, in job_event_*_locked()
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20220926093214.506243-16-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
3ed4f708 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
jobs: protect job.aio_context with BQL and job_mutex
In order to make it thread safe, implement a "fake rwlock", where we allow reads under BQL *or* job_mutex held, but writes only under BQL *and* j
jobs: protect job.aio_context with BQL and job_mutex
In order to make it thread safe, implement a "fake rwlock", where we allow reads under BQL *or* job_mutex held, but writes only under BQL *and* job_mutex.
The only write we have is in child_job_set_aio_ctx, which always happens under drain (so the job is paused). For this reason, introduce job_set_aio_context and make sure that the context is set under BQL, job_mutex and drain. Also make sure all other places where the aiocontext is read are protected.
The reads in commit.c and mirror.c are actually safe, because always done under BQL.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Message-Id: <20220926093214.506243-14-eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
880eeec6 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
jobs: group together API calls under the same job lock
Now that the API offers also _locked() functions, take advantage of it and give also the caller control to take the lock and call _locked funct
jobs: group together API calls under the same job lock
Now that the API offers also _locked() functions, take advantage of it and give also the caller control to take the lock and call _locked functions.
This makes sense especially when we have for loops, because it makes no sense to have:
for(job = job_next(); ...)
where each job_next() takes the lock internally. Instead we want
JOB_LOCK_GUARD(); for(job = job_next_locked(); ...)
In addition, protect also direct field accesses, by either creating a new critical section or widening the existing ones.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Message-Id: <20220926093214.506243-12-eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
f41ab73f |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: introduce block_job _locked() APIs
Just as done with job.h, create _locked() functions in blockjob.h
These functions will be later useful when caller has already taken the lock. All block
blockjob: introduce block_job _locked() APIs
Just as done with job.h, create _locked() functions in blockjob.h
These functions will be later useful when caller has already taken the lock. All blockjob _locked functions call job _locked functions.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20220926093214.506243-8-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
bf61c583 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
job: move and update comments from blockjob.c
This comment applies more on job, it was left in blockjob as in the past the whole job logic was implemented there.
Note: at this stage, job_{lock/unlo
job: move and update comments from blockjob.c
This comment applies more on job, it was left in blockjob as in the past the whole job logic was implemented there.
Note: at this stage, job_{lock/unlock} and job lock guard macros are *nop*.
No functional change intended.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20220926093214.506243-7-eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
ba6a9100 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: remove unused functions
These public functions are not used anywhere, thus can be dropped.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Stefan Hajnoczi <st
blockjob: remove unused functions
These public functions are not used anywhere, thus can be dropped.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Message-Id: <20220926093214.506243-21-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
fca26318 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
block_job_query: remove atomic read
Not sure what the atomic here was supposed to do, since job.busy is protected by the job lock. Since the whole function is called under job_mutex, just remove the
block_job_query: remove atomic read
Not sure what the atomic here was supposed to do, since job.busy is protected by the job lock. Since the whole function is called under job_mutex, just remove the atomic.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20220926093214.506243-20-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
d59cb66d |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: protect iostatus field in BlockJob struct
iostatus is the only field (together with .job) that needs protection using the job mutex.
It is set in the main loop (GLOBAL_STATE functions) bu
blockjob: protect iostatus field in BlockJob struct
iostatus is the only field (together with .job) that needs protection using the job mutex.
It is set in the main loop (GLOBAL_STATE functions) but read in I/O code (block_job_error_action).
In order to protect it, change block_job_iostatus_set_err to block_job_iostatus_set_err_locked(), always called under job lock.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Message-Id: <20220926093214.506243-17-eesposit@redhat.com> [kwolf: Fixed up type of iostatus] Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|
#
243c6ec7 |
| 26-Sep-2022 |
Emanuele Giuseppe Esposito <eesposit@redhat.com> |
blockjob: rename notifier callbacks as _locked
They all are called with job_lock held, in job_event_*_locked()
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir
blockjob: rename notifier callbacks as _locked
They all are called with job_lock held, in job_event_*_locked()
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20220926093214.506243-16-eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
show more ...
|