From 345dde2fb46276607695e6e334274d12f0cfb1f3 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Mon, 17 Sep 2012 22:23:30 +0200 Subject: [PATCH] --- yaml --- r: 323260 b: refs/heads/master c: 8110e16d42d587997bcaee0c864179e6d93603fe h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/dcache.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index a35ed359027b..1b88f6651010 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6a3e3dbee62a8fcf13c349b141b3cedf35a65c41 +refs/heads/master: 8110e16d42d587997bcaee0c864179e6d93603fe diff --git a/trunk/fs/dcache.c b/trunk/fs/dcache.c index 0364af2311f4..693f95bf1cae 100644 --- a/trunk/fs/dcache.c +++ b/trunk/fs/dcache.c @@ -1134,6 +1134,8 @@ int have_submounts(struct dentry *parent) return 1; rename_retry: + if (locked) + goto again; locked = 1; write_seqlock(&rename_lock); goto again; @@ -1236,6 +1238,8 @@ static int select_parent(struct dentry *parent, struct list_head *dispose) rename_retry: if (found) return found; + if (locked) + goto again; locked = 1; write_seqlock(&rename_lock); goto again; @@ -3035,6 +3039,8 @@ void d_genocide(struct dentry *root) return; rename_retry: + if (locked) + goto again; locked = 1; write_seqlock(&rename_lock); goto again;