diff mbox series

[v3,3/4] Btrfs: Switch to use new generic UUID API

Message ID 20190717113633.25922-3-andriy.shevchenko@linux.intel.com (mailing list archive)
State New, archived
Headers show
Series [v3,1/4] uuid: Add inline helpers to import / export UUIDs | expand

Commit Message

Andy Shevchenko July 17, 2019, 11:36 a.m. UTC
There are new types and helpers that are supposed to be used in new code.

As a preparation to get rid of legacy types and API functions do
the conversion here.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 fs/btrfs/disk-io.c     | 6 +++---
 fs/btrfs/ioctl.c       | 4 +---
 fs/btrfs/root-tree.c   | 4 +---
 fs/btrfs/transaction.c | 7 +++----
 4 files changed, 8 insertions(+), 13 deletions(-)

Comments

Johannes Thumshirn July 18, 2019, 5:20 p.m. UTC | #1
On Wed, Jul 17, 2019 at 02:36:32PM +0300, Andy Shevchenko wrote:
> There are new types and helpers that are supposed to be used in new code.
> 
> As a preparation to get rid of legacy types and API functions do
> the conversion here.

Why? What was broken in the old versions? What benefit do we have apart from
unneeded churn?

Thanks,
	Johannes
Andy Shevchenko July 18, 2019, 5:38 p.m. UTC | #2
On Thu, Jul 18, 2019 at 07:20:17PM +0200, Johannes Thumshirn wrote:
> On Wed, Jul 17, 2019 at 02:36:32PM +0300, Andy Shevchenko wrote:
> > There are new types and helpers that are supposed to be used in new code.
> > 
> > As a preparation to get rid of legacy types and API functions do
> > the conversion here.
> 
> Why? What was broken in the old versions? What benefit do we have apart from
> unneeded churn?

I think Christoph can explain this better than me.

By the way, if you look to the headers, there is no more "old" API, it's
covered as alias to the new one.
Johannes Thumshirn July 18, 2019, 5:44 p.m. UTC | #3
On Thu, Jul 18, 2019 at 08:38:42PM +0300, Andy Shevchenko wrote:
> On Thu, Jul 18, 2019 at 07:20:17PM +0200, Johannes Thumshirn wrote:
> > On Wed, Jul 17, 2019 at 02:36:32PM +0300, Andy Shevchenko wrote:
> > > There are new types and helpers that are supposed to be used in new code.
> > > 
> > > As a preparation to get rid of legacy types and API functions do
> > > the conversion here.
> > 
> > Why? What was broken in the old versions? What benefit do we have apart from
> > unneeded churn?
> 
> I think Christoph can explain this better than me.
> 
> By the way, if you look to the headers, there is no more "old" API, it's
> covered as alias to the new one.

AFAIU it's mostly the naming that causes problems here as a little endian UUID
doesn't really exits, is called GUID.

But please at least document this in a cover letter. Also what tests did you
make? I know most of these functions have their origin in XFS.

Thanks,
	Johannes
Andy Shevchenko July 23, 2019, 5:24 p.m. UTC | #4
On Thu, Jul 18, 2019 at 07:44:00PM +0200, Johannes Thumshirn wrote:
> On Thu, Jul 18, 2019 at 08:38:42PM +0300, Andy Shevchenko wrote:
> > On Thu, Jul 18, 2019 at 07:20:17PM +0200, Johannes Thumshirn wrote:
> > > On Wed, Jul 17, 2019 at 02:36:32PM +0300, Andy Shevchenko wrote:
> > > > There are new types and helpers that are supposed to be used in new code.
> > > > 
> > > > As a preparation to get rid of legacy types and API functions do
> > > > the conversion here.
> > > 
> > > Why? What was broken in the old versions? What benefit do we have apart from
> > > unneeded churn?
> > 
> > I think Christoph can explain this better than me.
> > 
> > By the way, if you look to the headers, there is no more "old" API, it's
> > covered as alias to the new one.
> 
> AFAIU it's mostly the naming that causes problems here as a little endian UUID
> doesn't really exits, is called GUID.

Yes, that's the main point for now.

> But please at least document this in a cover letter. Also what tests did you
> make? I know most of these functions have their origin in XFS.

I did only compile test.
diff mbox series

Patch

diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 41a2bd2e0c56..6a9f51d86bd1 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -1259,7 +1259,6 @@  struct btrfs_root *btrfs_create_tree(struct btrfs_trans_handle *trans,
 	struct btrfs_key key;
 	unsigned int nofs_flag;
 	int ret = 0;
-	uuid_le uuid = NULL_UUID_LE;
 
 	/*
 	 * We're holding a transaction handle, so use a NOFS memory allocation
@@ -1299,8 +1298,9 @@  struct btrfs_root *btrfs_create_tree(struct btrfs_trans_handle *trans,
 	btrfs_set_root_last_snapshot(&root->root_item, 0);
 	btrfs_set_root_dirid(&root->root_item, 0);
 	if (is_fstree(objectid))
-		uuid_le_gen(&uuid);
-	memcpy(root->root_item.uuid, uuid.b, BTRFS_UUID_SIZE);
+		generate_random_guid(root->root_item.uuid);
+	else
+		export_guid(root->root_item.uuid, &guid_null);
 	root->root_item.drop_level = 0;
 
 	key.objectid = objectid;
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 818f7ec8bb0e..88a7579b217b 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -573,7 +573,6 @@  static noinline int create_subvol(struct inode *dir,
 	u64 objectid;
 	u64 new_dirid = BTRFS_FIRST_FREE_OBJECTID;
 	u64 index = 0;
-	uuid_le new_uuid;
 
 	root_item = kzalloc(sizeof(*root_item), GFP_KERNEL);
 	if (!root_item)
@@ -643,8 +642,7 @@  static noinline int create_subvol(struct inode *dir,
 
 	btrfs_set_root_generation_v2(root_item,
 			btrfs_root_generation(root_item));
-	uuid_le_gen(&new_uuid);
-	memcpy(root_item->uuid, new_uuid.b, BTRFS_UUID_SIZE);
+	generate_random_guid(root_item->uuid);
 	btrfs_set_stack_timespec_sec(&root_item->otime, cur_time.tv_sec);
 	btrfs_set_stack_timespec_nsec(&root_item->otime, cur_time.tv_nsec);
 	root_item->ctime = root_item->otime;
diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c
index 47733fb55df7..af884338bbb1 100644
--- a/fs/btrfs/root-tree.c
+++ b/fs/btrfs/root-tree.c
@@ -22,7 +22,6 @@ 
 static void btrfs_read_root_item(struct extent_buffer *eb, int slot,
 				struct btrfs_root_item *item)
 {
-	uuid_le uuid;
 	u32 len;
 	int need_reset = 0;
 
@@ -44,8 +43,7 @@  static void btrfs_read_root_item(struct extent_buffer *eb, int slot,
 			sizeof(*item) - offsetof(struct btrfs_root_item,
 					generation_v2));
 
-		uuid_le_gen(&uuid);
-		memcpy(item->uuid, uuid.b, BTRFS_UUID_SIZE);
+		generate_random_guid(item->uuid);
 	}
 }
 
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index 3b8ae1a8f02d..7aec9389df69 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -1395,7 +1395,6 @@  static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
 	u64 index = 0;
 	u64 objectid;
 	u64 root_flags;
-	uuid_le new_uuid;
 
 	ASSERT(pending->path);
 	path = pending->path;
@@ -1488,8 +1487,7 @@  static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
 
 	btrfs_set_root_generation_v2(new_root_item,
 			trans->transid);
-	uuid_le_gen(&new_uuid);
-	memcpy(new_root_item->uuid, new_uuid.b, BTRFS_UUID_SIZE);
+	generate_random_guid(new_root_item->uuid);
 	memcpy(new_root_item->parent_uuid, root->root_item.uuid,
 			BTRFS_UUID_SIZE);
 	if (!(root_flags & BTRFS_ROOT_SUBVOL_RDONLY)) {
@@ -1600,7 +1598,8 @@  static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
 		btrfs_abort_transaction(trans, ret);
 		goto fail;
 	}
-	ret = btrfs_uuid_tree_add(trans, new_uuid.b, BTRFS_UUID_KEY_SUBVOL,
+	ret = btrfs_uuid_tree_add(trans, new_root_item->uuid,
+				  BTRFS_UUID_KEY_SUBVOL,
 				  objectid);
 	if (ret) {
 		btrfs_abort_transaction(trans, ret);