Re: [PATCH 1/3] jbd2,rcu: correctly use RCU

From: Ted Ts'o
Date: Sun Jul 10 2011 - 20:25:42 EST


On Thu, Jun 16, 2011 at 09:47:04AM +0800, Lai Jiangshan wrote:
> In read site, we need to use local_ptr = rcu_dereference(),
> and then use this local_ptr to read the content.
>
> In update site, we should assign/publish the new object/pointer after
> the content of the new object/pointer is fully initialized,
> and we can't not touch the object after the pointer assignment.
> rcu_assign_pointer() is need for the assignement.
>
> Signed-off-by: Lai Jiangshan <laijs@xxxxxxxxxxxxxx>

Thanks, applied.

> @@ -2447,24 +2447,25 @@ const char *jbd2_dev_to_name(dev_t device)
> int i = hash_32(device, CACHE_SIZE_BITS);
> char *ret;
> struct block_device *bd;
> - static struct devname_cache *new_dev;
> + static struct devname_cache *cache;

I also removed the static modifier to the struct devname_cache
pointer. It's pointless, and in fact introduces a bug if two CPU's
try to run jbd2_dev_to_name() at the same time.

- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/