On Fri, Dec 09, 2016 at 02:12:11PM +0900, Byungchul Park wrote:
[...]
> +Example 1:
> +
> +   CONTEXT X            CONTEXT Y
> +   ---------            ---------
> +   mutext_lock A
> +                        lock_page B
> +   lock_page B
> +                        mutext_lock A /* DEADLOCK */

s/mutext_lock/mutex_lock

> +   unlock_page B
> +                        mutext_unlock A
> +   mutex_unlock A
> +                        unlock_page B
> +
> +   where A is a lock class and B is a page lock.
> +
> +No, we cannot.
> +
> +Example 2:
> +
> +   CONTEXT X    CONTEXT Y       CONTEXT Z
> +   ---------    ---------       ----------
> +                mutex_lock A
> +   lock_page B
> +                lock_page B
> +                                mutext_lock A /* DEADLOCK */
> +                                mutext_unlock A

Ditto.

> +                                unlock_page B held by X
> +                unlock_page B
> +                mutex_unlock A
> +
> +   where A is a lock class and B is a page lock.
> +
> +No, we cannot.
> +
> +Example 3:
> +
> +   CONTEXT X            CONTEXT Y
> +   ---------            ---------
> +                        mutex_lock A
> +   mutex_lock A
> +   mutex_unlock A
> +                        wait_for_complete B /* DEADLOCK */

I think this part better be:

   CONTEXT X               CONTEXT Y
   ---------               ---------
                           mutex_lock A
   mutex_lock A
                           wait_for_complete B /* DEADLOCK */
   mutex_unlock A

, right? Because Y triggers DEADLOCK before X could run mutex_unlock().

Regards,
Boqun

Attachment: signature.asc
Description: PGP signature

Reply via email to