diff --git a/index.bs b/index.bs index 33063f9..a082507 100644 --- a/index.bs +++ b/index.bs @@ -135,9 +135,10 @@ To take a lock with a |value| of 1. Let |lock| be the |entry|'s [=file system entry/lock=]. 1. Let |count| be the |entry|'s [=file system entry/shared lock count=]. -1. Let |descendantLockStatus| be the result of [=file system entry/lock/checking for a descendant lock=] on |entry|. -1. If |descendantLockStatus| is "`taken`": - 1. Return "`failure`". +1. If |entry| is a [=directory entry=]: + 1. Let |descendantLockStatus| be the result of [=file system entry/lock/checking for a descendant lock=] on |entry|. + 1. If |descendantLockStatus| is "`taken`": + 1. Return "`failure`". 1. If |value| is "`exclusive`": 1. If |lock| is "`open`": 1. Set lock to "`taken-exclusive`". @@ -158,16 +159,16 @@ Note: These steps have to be run on the [=file system queue=].
To check for a descendant lock on a given -[=/file system entry=] |entry|: - -1. Let |lock| be the |entry|'s [=file system entry/lock=]. -1. If |lock| is not "`open`": - 1. Return "`taken`". -1. If |entry| is a [=directory entry=]: - 1. [=set/For each=] |child| of |entry|'s [=directory entry/children=]: - 1. Let |descendantLockStatus| be the result of [=file system entry/lock/checking for a descendant lock=] on |child|. - 1. If |descendantLockStatus| is "`taken`": - 1. Return "`taken`". +[=directory entry=] |directory|: + +1. [=set/For each=] |child| of |directory|'s [=directory entry/children=]: + 1. Let |lock| be the |child|'s [=file system entry/lock=]. + 1. If |lock| is not "`open`": + 1. Return "`taken`". + 1. If |child| is a [=directory entry=]: + 1. Let |descendantLockStatus| be the result of [=file system entry/lock/checking for a descendant lock=] on |child|. + 1. If |descendantLockStatus| is "`taken`": + 1. Return "`taken`". 1. Return "`open`". Note: These steps have to be run on the [=file system queue=].