2014-07-22 15:51:06

by Milosz Tanski

[permalink] [raw]
Subject: [PATCH 2/3] FS-Cache: Reduce cookie ref count if submit fails.

---
fs/fscache/object.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/fs/fscache/object.c b/fs/fscache/object.c
index d3b4539..186076b 100644
--- a/fs/fscache/object.c
+++ b/fs/fscache/object.c
@@ -925,6 +925,7 @@ static const struct fscache_state *_fscache_invalidate_object(struct fscache_obj
{
struct fscache_operation *op;
struct fscache_cookie *cookie = object->cookie;
+ bool wake_cookie = false;

_enter("{OBJ%x},%d", object->debug_id, event);

@@ -981,7 +982,10 @@ nomem:

submit_op_failed:
clear_bit(FSCACHE_OBJECT_IS_LIVE, &object->flags);
+ wake_cookie = __fscache_unuse_cookie(cookie);
spin_unlock(&cookie->lock);
+ if (wake_cookie)
+ __fscache_wake_unused_cookie(cookie);
kfree(op);
_leave(" [EIO]");
return transit_to(KILL_OBJECT);
--
1.7.9.5


2014-07-29 15:38:11

by David Howells

[permalink] [raw]
Subject: Re: [PATCH 2/3] FS-Cache: Reduce cookie ref count if submit fails.

Milosz Tanski <[email protected]> wrote:

> + wake_cookie = __fscache_unuse_cookie(cookie);
> spin_unlock(&cookie->lock);
> + if (wake_cookie)
> + __fscache_wake_unused_cookie(cookie);

Why do __fscache_unuse_cookie() with cookie->lock held?

David