Re: [PATCH] Btrfs: use rcu to protect device->name V2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




-		if (state->print_mask&  BTRFSIC_PRINT_MASK_SUPERBLOCK_WRITE)
+		if (state->print_mask&  BTRFSIC_PRINT_MASK_SUPERBLOCK_WRITE) {
+			struct rcu_string *name;
+
+			rcu_read_lock();
+			name = rcu_dereference(device->name);
  			printk(KERN_INFO "New initial S-block (bdev %p, %s)"
  			       " @%llu (%s/%llu/%d)\n",
-			       superblock_bdev, device->name,
+			       superblock_bdev, name->str,
  			       (unsigned long long)dev_bytenr,
  			       dev_state->name,
  			       (unsigned long long)dev_bytenr,
  			       superblock_mirror_num);
+			rcu_read_unlock();
+		}

That's a whole lot of noise at every call site.  How about some helpers?
In sloppy-code..

#define printk_in_rcu(args) do { rcu; printk; rcu; } while (0)

#define device_name_rcu(dev) ({
	struct rcu_string *name = rcu_dereference(dev->name);
	name->str; )}

	printk_in_rcu("HELLO FRIENDS %s", device_name_rcu(dev));

It's kind of annoying to have a wrapper for printk(), pr_debug(), etc,
but it sure seems better than implementing the rcu consistency rules
around every output.  (And multiple rcu_string locals for multiple
device names..)

- z
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux