[Ocfs2-devel] [PATCH 1/1] Ocfs2: Handle invalid lock_res in lockres_seq_start() for dlmdebug.c
tristan
tristan.ye at oracle.com
Thu Sep 9 18:42:13 PDT 2010
Sunil Mushran wrote:
> On 09/09/2010 06:20 PM, tristan wrote:
>>>> 1 files changed, 7 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/fs/ocfs2/dlm/dlmdebug.c b/fs/ocfs2/dlm/dlmdebug.c
>>>> index 5efdd37..06d668a 100644
>>>> --- a/fs/ocfs2/dlm/dlmdebug.c
>>>> +++ b/fs/ocfs2/dlm/dlmdebug.c
>>>> @@ -639,6 +639,12 @@ static void *lockres_seq_start(struct seq_file
>>>> *m, loff_t *pos)
>>>> else
>>>> track_list =&dlm->tracking_list;
>>>>
>>>> + if (list_empty(track_list)) {
>>>> + dl = NULL;
>>>> + spin_unlock(&dlm->track_lock);
>>>> + goto bail;
>>>> + }
>>>> +
>>>
>>> You should add this check as part of the else block above so
>>> that we check for empty list only at the start.
>> fs/ocfs2/dlm/dlmdebug.c | 7 +++++++
>>
>> So we just don't need to check list 'oldres->tracking'?
>
> If you see how it works, it prints one lock resource at a time. As in,
> each time _start is called, it fetches the next lock resource in the
> tracking
> list. So the empty list should be checked only at the very beginning.
>
> To be fair, your code should also work. If the list has even one lockres,
> it cannot, by definition, be empty. But adding it in the if block
> makes the
> check explicit and clean. IMHO.
That makes pretty sense, we just need to check the list at the time of
getting its head:)
My check was making the logic clumsy, thanks for correction.
More information about the Ocfs2-devel
mailing list