linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] Misc props.c cleanups
@ 2019-02-08  7:02 Anand Jain
  2019-02-08  7:02 ` [PATCH 1/5] btrfs: fix comment its device list mutex not volume lock Anand Jain
                   ` (5 more replies)
  0 siblings, 6 replies; 17+ messages in thread
From: Anand Jain @ 2019-02-08  7:02 UTC (permalink / raw)
  To: linux-btrfs

While adding the readmirror property found few cleanup things which
can be fixed. As these aren't part of upcoming readmirror property
I am sending these separately. Except for 1/5 rest fixes are in
props.c. 1/5 is in volume.c.

Anand Jain (5):
  btrfs: fix comment its device list mutex not volume lock
  btrfs: kill __btrfs_set_prop()
  btrfs: reorg functions to drop forward declaration
  btrfs: drop redundant forward declaration in props.c
  btrfs: trivial, fix c coding style

 fs/btrfs/ioctl.c   |  10 +--
 fs/btrfs/props.c   | 201 ++++++++++++++++++++++++-----------------------------
 fs/btrfs/props.h   |   6 +-
 fs/btrfs/volumes.c |   2 +-
 fs/btrfs/xattr.c   |   2 +-
 5 files changed, 100 insertions(+), 121 deletions(-)

-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 1/5] btrfs: fix comment its device list mutex not volume lock
  2019-02-08  7:02 [PATCH 0/5] Misc props.c cleanups Anand Jain
@ 2019-02-08  7:02 ` Anand Jain
  2019-02-08  7:07   ` Nikolay Borisov
  2019-02-08  7:02 ` [PATCH 2/5] btrfs: kill __btrfs_set_prop() Anand Jain
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Anand Jain @ 2019-02-08  7:02 UTC (permalink / raw)
  To: linux-btrfs

We have killed volume mutex (commit: dccdb07bc996
btrfs: kill btrfs_fs_info::volume_mutex) update comment. This a trival one
seems to have escaped.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 fs/btrfs/volumes.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index fe122e6099ae..8160749cd9ba 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -1129,7 +1129,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
 	mutex_lock(&orig->device_list_mutex);
 	fs_devices->total_devices = orig->total_devices;
 
-	/* We have held the volume lock, it is safe to get the devices. */
+	/* We have held the device_list_mutex, it is safe to get the devices. */
 	list_for_each_entry(orig_dev, &orig->devices, dev_list) {
 		struct rcu_string *name;
 
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 2/5] btrfs: kill __btrfs_set_prop()
  2019-02-08  7:02 [PATCH 0/5] Misc props.c cleanups Anand Jain
  2019-02-08  7:02 ` [PATCH 1/5] btrfs: fix comment its device list mutex not volume lock Anand Jain
@ 2019-02-08  7:02 ` Anand Jain
  2019-02-08  7:02 ` [PATCH 3/5] btrfs: reorg functions to drop forward declaration Anand Jain
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 17+ messages in thread
From: Anand Jain @ 2019-02-08  7:02 UTC (permalink / raw)
  To: linux-btrfs

btrfs_set_prop() is a redirect to __btrfs_set_prop() with the
transaction handler equal to NULL. And __btrfs_set_prop() inturn diectly
uses trans to do_setxattr() which when trans is NULL creates a transaction.

Instead rename __btrfs_set_prop() to btrfs_set_prop(), and update the
caller with NULL argument.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 fs/btrfs/ioctl.c | 10 ++++++----
 fs/btrfs/props.c | 22 +++++-----------------
 fs/btrfs/props.h |  6 ++----
 fs/btrfs/xattr.c |  2 +-
 4 files changed, 14 insertions(+), 26 deletions(-)

diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 3f9d7be30bf4..5a4ed2f66e09 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -284,7 +284,8 @@ static int btrfs_ioctl_setflags(struct file *file, void __user *arg)
 		binode->flags &= ~BTRFS_INODE_COMPRESS;
 		binode->flags |= BTRFS_INODE_NOCOMPRESS;
 
-		ret = btrfs_set_prop(inode, "btrfs.compression", NULL, 0, 0);
+		ret = btrfs_set_prop(NULL, inode, "btrfs.compression", NULL, 0,
+				     0);
 		if (ret && ret != -ENODATA)
 			goto out_drop;
 	} else if (fsflags & FS_COMPR_FL) {
@@ -302,13 +303,14 @@ static int btrfs_ioctl_setflags(struct file *file, void __user *arg)
 		if (!comp || comp[0] == 0)
 			comp = btrfs_compress_type2str(BTRFS_COMPRESS_ZLIB);
 
-		ret = btrfs_set_prop(inode, "btrfs.compression",
-				     comp, strlen(comp), 0);
+		ret = btrfs_set_prop(NULL, inode, "btrfs.compression", comp,
+				     strlen(comp), 0);
 		if (ret)
 			goto out_drop;
 
 	} else {
-		ret = btrfs_set_prop(inode, "btrfs.compression", NULL, 0, 0);
+		ret = btrfs_set_prop(NULL, inode, "btrfs.compression", NULL, 0,
+				     0);
 		if (ret && ret != -ENODATA)
 			goto out_drop;
 		binode->flags &= ~(BTRFS_INODE_COMPRESS | BTRFS_INODE_NOCOMPRESS);
diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
index dc6140013ae8..4525a2a4d1cd 100644
--- a/fs/btrfs/props.c
+++ b/fs/btrfs/props.c
@@ -85,12 +85,9 @@ static const struct hlist_head *find_prop_handlers_by_hash(const u64 hash)
 	return NULL;
 }
 
-static int __btrfs_set_prop(struct btrfs_trans_handle *trans,
-			    struct inode *inode,
-			    const char *name,
-			    const char *value,
-			    size_t value_len,
-			    int flags)
+int btrfs_set_prop(struct btrfs_trans_handle *trans, struct inode *inode,
+		   const char *name, const char *value, size_t value_len,
+		   int flags)
 {
 	const struct prop_handler *handler;
 	int ret;
@@ -133,15 +130,6 @@ static int __btrfs_set_prop(struct btrfs_trans_handle *trans,
 	return 0;
 }
 
-int btrfs_set_prop(struct inode *inode,
-		   const char *name,
-		   const char *value,
-		   size_t value_len,
-		   int flags)
-{
-	return __btrfs_set_prop(NULL, inode, name, value, value_len, flags);
-}
-
 static int iterate_object_props(struct btrfs_root *root,
 				struct btrfs_path *path,
 				u64 objectid,
@@ -313,8 +301,8 @@ static int inherit_props(struct btrfs_trans_handle *trans,
 					  num_bytes, BTRFS_RESERVE_NO_FLUSH);
 		if (ret)
 			goto out;
-		ret = __btrfs_set_prop(trans, inode, h->xattr_name,
-				       value, strlen(value), 0);
+		ret = btrfs_set_prop(trans, inode, h->xattr_name, value,
+				     strlen(value), 0);
 		btrfs_block_rsv_release(fs_info, trans->block_rsv, num_bytes);
 		if (ret)
 			goto out;
diff --git a/fs/btrfs/props.h b/fs/btrfs/props.h
index 618815b4f9d5..9dbdae47cf27 100644
--- a/fs/btrfs/props.h
+++ b/fs/btrfs/props.h
@@ -10,10 +10,8 @@
 
 void __init btrfs_props_init(void);
 
-int btrfs_set_prop(struct inode *inode,
-		   const char *name,
-		   const char *value,
-		   size_t value_len,
+int btrfs_set_prop(struct btrfs_trans_handle *trans, struct inode *inode,
+		   const char *name, const char *value, size_t value_len,
 		   int flags);
 
 int btrfs_load_inode_props(struct inode *inode, struct btrfs_path *path);
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c
index f141b45ce349..499bb79ba135 100644
--- a/fs/btrfs/xattr.c
+++ b/fs/btrfs/xattr.c
@@ -379,7 +379,7 @@ static int btrfs_xattr_handler_set_prop(const struct xattr_handler *handler,
 					size_t size, int flags)
 {
 	name = xattr_full_name(handler, name);
-	return btrfs_set_prop(inode, name, value, size, flags);
+	return btrfs_set_prop(NULL, inode, name, value, size, flags);
 }
 
 static const struct xattr_handler btrfs_security_xattr_handler = {
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 3/5] btrfs: reorg functions to drop forward declaration
  2019-02-08  7:02 [PATCH 0/5] Misc props.c cleanups Anand Jain
  2019-02-08  7:02 ` [PATCH 1/5] btrfs: fix comment its device list mutex not volume lock Anand Jain
  2019-02-08  7:02 ` [PATCH 2/5] btrfs: kill __btrfs_set_prop() Anand Jain
@ 2019-02-08  7:02 ` Anand Jain
  2019-02-08  7:10   ` Nikolay Borisov
  2019-02-08  7:02 ` [PATCH 4/5] btrfs: drop redundant forward declaration in props.c Anand Jain
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 17+ messages in thread
From: Anand Jain @ 2019-02-08  7:02 UTC (permalink / raw)
  To: linux-btrfs

In preparation to drop forward declaration of the functions,
prop_compression_validate(), prop_compression_apply() and
prop_compression_extract(). Move prop_handlers[], btrfs_props_init()
prop_compression_validate(), prop_compression_apply() and
prop_compression_extract() appropriately with in the file. No functional
changes.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 fs/btrfs/props.c | 157 ++++++++++++++++++++++++++++---------------------------
 1 file changed, 79 insertions(+), 78 deletions(-)

diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
index 4525a2a4d1cd..6f52e3d21012 100644
--- a/fs/btrfs/props.c
+++ b/fs/btrfs/props.c
@@ -29,30 +29,6 @@ static int prop_compression_apply(struct inode *inode,
 				  size_t len);
 static const char *prop_compression_extract(struct inode *inode);
 
-static struct prop_handler prop_handlers[] = {
-	{
-		.xattr_name = XATTR_BTRFS_PREFIX "compression",
-		.validate = prop_compression_validate,
-		.apply = prop_compression_apply,
-		.extract = prop_compression_extract,
-		.inheritable = 1
-	},
-};
-
-void __init btrfs_props_init(void)
-{
-	int i;
-
-	hash_init(prop_handlers_ht);
-
-	for (i = 0; i < ARRAY_SIZE(prop_handlers); i++) {
-		struct prop_handler *p = &prop_handlers[i];
-		u64 h = btrfs_name_hash(p->xattr_name, strlen(p->xattr_name));
-
-		hash_add(prop_handlers_ht, &p->node, h);
-	}
-}
-
 static const struct hlist_head *find_prop_handlers_by_hash(const u64 hash)
 {
 	struct hlist_head *h;
@@ -271,6 +247,78 @@ int btrfs_load_inode_props(struct inode *inode, struct btrfs_path *path)
 	return ret;
 }
 
+static int prop_compression_validate(const char *value, size_t len)
+{
+	if (!value)
+		return 0;
+
+	if (!strncmp("lzo", value, len))
+		return 0;
+	else if (!strncmp("zlib", value, len))
+		return 0;
+	else if (!strncmp("zstd", value, len))
+		return 0;
+
+	return -EINVAL;
+}
+
+static int prop_compression_apply(struct inode *inode, const char *value,
+				  size_t len)
+{
+	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
+	int type;
+
+	if (len == 0) {
+		BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS;
+		BTRFS_I(inode)->flags &= ~BTRFS_INODE_COMPRESS;
+		BTRFS_I(inode)->prop_compress = BTRFS_COMPRESS_NONE;
+
+		return 0;
+	}
+
+	if (!strncmp("lzo", value, 3)) {
+		type = BTRFS_COMPRESS_LZO;
+		btrfs_set_fs_incompat(fs_info, COMPRESS_LZO);
+	} else if (!strncmp("zlib", value, 4)) {
+		type = BTRFS_COMPRESS_ZLIB;
+	} else if (!strncmp("zstd", value, len)) {
+		type = BTRFS_COMPRESS_ZSTD;
+		btrfs_set_fs_incompat(fs_info, COMPRESS_ZSTD);
+	} else {
+		return -EINVAL;
+	}
+
+	BTRFS_I(inode)->flags &= ~BTRFS_INODE_NOCOMPRESS;
+	BTRFS_I(inode)->flags |= BTRFS_INODE_COMPRESS;
+	BTRFS_I(inode)->prop_compress = type;
+
+	return 0;
+}
+
+static const char *prop_compression_extract(struct inode *inode)
+{
+	switch (BTRFS_I(inode)->prop_compress) {
+	case BTRFS_COMPRESS_ZLIB:
+	case BTRFS_COMPRESS_LZO:
+	case BTRFS_COMPRESS_ZSTD:
+		return btrfs_compress_type2str(BTRFS_I(inode)->prop_compress);
+	default:
+		break;
+	}
+
+	return NULL;
+}
+
+static struct prop_handler prop_handlers[] = {
+	{
+		.xattr_name = XATTR_BTRFS_PREFIX "compression",
+		.validate = prop_compression_validate,
+		.apply = prop_compression_apply,
+		.extract = prop_compression_extract,
+		.inheritable = 1
+	},
+};
+
 static int inherit_props(struct btrfs_trans_handle *trans,
 			 struct inode *inode,
 			 struct inode *parent)
@@ -352,64 +400,17 @@ int btrfs_subvol_inherit_props(struct btrfs_trans_handle *trans,
 	return ret;
 }
 
-static int prop_compression_validate(const char *value, size_t len)
-{
-	if (!strncmp("lzo", value, len))
-		return 0;
-	else if (!strncmp("zlib", value, len))
-		return 0;
-	else if (!strncmp("zstd", value, len))
-		return 0;
-
-	return -EINVAL;
-}
-
-static int prop_compression_apply(struct inode *inode,
-				  const char *value,
-				  size_t len)
+void __init btrfs_props_init(void)
 {
-	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
-	int type;
-
-	if (len == 0) {
-		BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS;
-		BTRFS_I(inode)->flags &= ~BTRFS_INODE_COMPRESS;
-		BTRFS_I(inode)->prop_compress = BTRFS_COMPRESS_NONE;
-
-		return 0;
-	}
-
-	if (!strncmp("lzo", value, 3)) {
-		type = BTRFS_COMPRESS_LZO;
-		btrfs_set_fs_incompat(fs_info, COMPRESS_LZO);
-	} else if (!strncmp("zlib", value, 4)) {
-		type = BTRFS_COMPRESS_ZLIB;
-	} else if (!strncmp("zstd", value, len)) {
-		type = BTRFS_COMPRESS_ZSTD;
-		btrfs_set_fs_incompat(fs_info, COMPRESS_ZSTD);
-	} else {
-		return -EINVAL;
-	}
+	int i;
 
-	BTRFS_I(inode)->flags &= ~BTRFS_INODE_NOCOMPRESS;
-	BTRFS_I(inode)->flags |= BTRFS_INODE_COMPRESS;
-	BTRFS_I(inode)->prop_compress = type;
+	hash_init(prop_handlers_ht);
 
-	return 0;
-}
+	for (i = 0; i < ARRAY_SIZE(prop_handlers); i++) {
+		struct prop_handler *p = &prop_handlers[i];
+		u64 h = btrfs_name_hash(p->xattr_name, strlen(p->xattr_name));
 
-static const char *prop_compression_extract(struct inode *inode)
-{
-	switch (BTRFS_I(inode)->prop_compress) {
-	case BTRFS_COMPRESS_ZLIB:
-	case BTRFS_COMPRESS_LZO:
-	case BTRFS_COMPRESS_ZSTD:
-		return btrfs_compress_type2str(BTRFS_I(inode)->prop_compress);
-	default:
-		break;
+		hash_add(prop_handlers_ht, &p->node, h);
 	}
-
-	return NULL;
 }
 
-
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 4/5] btrfs: drop redundant forward declaration in props.c
  2019-02-08  7:02 [PATCH 0/5] Misc props.c cleanups Anand Jain
                   ` (2 preceding siblings ...)
  2019-02-08  7:02 ` [PATCH 3/5] btrfs: reorg functions to drop forward declaration Anand Jain
@ 2019-02-08  7:02 ` Anand Jain
  2019-02-08  7:09   ` Nikolay Borisov
  2019-02-08  7:02 ` [PATCH 5/5] btrfs: trivial, fix c coding style Anand Jain
  2019-02-08  7:15 ` [PATCH 0/5] Misc props.c cleanups Nikolay Borisov
  5 siblings, 1 reply; 17+ messages in thread
From: Anand Jain @ 2019-02-08  7:02 UTC (permalink / raw)
  To: linux-btrfs

Drop forward declaration of the functions,
prop_compression_validate(), prop_compression_apply() and
prop_compression_extract().

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 fs/btrfs/props.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
index 6f52e3d21012..77a03076b18e 100644
--- a/fs/btrfs/props.c
+++ b/fs/btrfs/props.c
@@ -23,12 +23,6 @@ struct prop_handler {
 	int inheritable;
 };
 
-static int prop_compression_validate(const char *value, size_t len);
-static int prop_compression_apply(struct inode *inode,
-				  const char *value,
-				  size_t len);
-static const char *prop_compression_extract(struct inode *inode);
-
 static const struct hlist_head *find_prop_handlers_by_hash(const u64 hash)
 {
 	struct hlist_head *h;
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 5/5] btrfs: trivial, fix c coding style
  2019-02-08  7:02 [PATCH 0/5] Misc props.c cleanups Anand Jain
                   ` (3 preceding siblings ...)
  2019-02-08  7:02 ` [PATCH 4/5] btrfs: drop redundant forward declaration in props.c Anand Jain
@ 2019-02-08  7:02 ` Anand Jain
  2019-02-08  7:09   ` Nikolay Borisov
  2019-02-08  7:15 ` [PATCH 0/5] Misc props.c cleanups Nikolay Borisov
  5 siblings, 1 reply; 17+ messages in thread
From: Anand Jain @ 2019-02-08  7:02 UTC (permalink / raw)
  To: linux-btrfs

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
 fs/btrfs/props.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
index 77a03076b18e..3c15f19bfd2f 100644
--- a/fs/btrfs/props.c
+++ b/fs/btrfs/props.c
@@ -70,8 +70,8 @@ int btrfs_set_prop(struct btrfs_trans_handle *trans, struct inode *inode,
 		return -EINVAL;
 
 	if (value_len == 0) {
-		ret = btrfs_setxattr(trans, inode, handler->xattr_name,
-				       NULL, 0, flags);
+		ret = btrfs_setxattr(trans, inode, handler->xattr_name, NULL, 0,
+				     flags);
 		if (ret)
 			return ret;
 
@@ -101,12 +101,10 @@ int btrfs_set_prop(struct btrfs_trans_handle *trans, struct inode *inode,
 }
 
 static int iterate_object_props(struct btrfs_root *root,
-				struct btrfs_path *path,
-				u64 objectid,
+				struct btrfs_path *path, u64 objectid,
 				void (*iterator)(void *,
 						 const struct prop_handler *,
-						 const char *,
-						 size_t),
+						 const char *, size_t),
 				void *ctx)
 {
 	int ret;
@@ -211,10 +209,8 @@ static int iterate_object_props(struct btrfs_root *root,
 	return ret;
 }
 
-static void inode_prop_iterator(void *ctx,
-				const struct prop_handler *handler,
-				const char *value,
-				size_t len)
+static void inode_prop_iterator(void *ctx, const struct prop_handler *handler,
+				const char *value, size_t len)
 {
 	struct inode *inode = ctx;
 	struct btrfs_root *root = BTRFS_I(inode)->root;
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 1/5] btrfs: fix comment its device list mutex not volume lock
  2019-02-08  7:02 ` [PATCH 1/5] btrfs: fix comment its device list mutex not volume lock Anand Jain
@ 2019-02-08  7:07   ` Nikolay Borisov
  2019-02-08  7:16     ` Anand Jain
  0 siblings, 1 reply; 17+ messages in thread
From: Nikolay Borisov @ 2019-02-08  7:07 UTC (permalink / raw)
  To: Anand Jain, linux-btrfs



On 8.02.19 г. 9:02 ч., Anand Jain wrote:
> We have killed volume mutex (commit: dccdb07bc996
> btrfs: kill btrfs_fs_info::volume_mutex) update comment. This a trival one
> seems to have escaped.
> 
> Signed-off-by: Anand Jain <anand.jain@oracle.com>
> ---
>  fs/btrfs/volumes.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
> index fe122e6099ae..8160749cd9ba 100644
> --- a/fs/btrfs/volumes.c
> +++ b/fs/btrfs/volumes.c
> @@ -1129,7 +1129,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
>  	mutex_lock(&orig->device_list_mutex);
>  	fs_devices->total_devices = orig->total_devices;
>  
> -	/* We have held the volume lock, it is safe to get the devices. */
> +	/* We have held the device_list_mutex, it is safe to get the devices. */

I'd rather have the comment replaced with lockdep_assert_held it's a lot
more eloquent.

>  	list_for_each_entry(orig_dev, &orig->devices, dev_list) {
>  		struct rcu_string *name;
>  
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 5/5] btrfs: trivial, fix c coding style
  2019-02-08  7:02 ` [PATCH 5/5] btrfs: trivial, fix c coding style Anand Jain
@ 2019-02-08  7:09   ` Nikolay Borisov
  0 siblings, 0 replies; 17+ messages in thread
From: Nikolay Borisov @ 2019-02-08  7:09 UTC (permalink / raw)
  To: Anand Jain, linux-btrfs



On 8.02.19 г. 9:02 ч., Anand Jain wrote:
> Signed-off-by: Anand Jain <anand.jain@oracle.com>

Reviewed-by: Nikolay Borisov <nborisov@suse.com>

> ---
>  fs/btrfs/props.c | 16 ++++++----------
>  1 file changed, 6 insertions(+), 10 deletions(-)
> 
> diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
> index 77a03076b18e..3c15f19bfd2f 100644
> --- a/fs/btrfs/props.c
> +++ b/fs/btrfs/props.c
> @@ -70,8 +70,8 @@ int btrfs_set_prop(struct btrfs_trans_handle *trans, struct inode *inode,
>  		return -EINVAL;
>  
>  	if (value_len == 0) {
> -		ret = btrfs_setxattr(trans, inode, handler->xattr_name,
> -				       NULL, 0, flags);
> +		ret = btrfs_setxattr(trans, inode, handler->xattr_name, NULL, 0,
> +				     flags);
>  		if (ret)
>  			return ret;
>  
> @@ -101,12 +101,10 @@ int btrfs_set_prop(struct btrfs_trans_handle *trans, struct inode *inode,
>  }
>  
>  static int iterate_object_props(struct btrfs_root *root,
> -				struct btrfs_path *path,
> -				u64 objectid,
> +				struct btrfs_path *path, u64 objectid,
>  				void (*iterator)(void *,
>  						 const struct prop_handler *,
> -						 const char *,
> -						 size_t),
> +						 const char *, size_t),
>  				void *ctx)
>  {
>  	int ret;
> @@ -211,10 +209,8 @@ static int iterate_object_props(struct btrfs_root *root,
>  	return ret;
>  }
>  
> -static void inode_prop_iterator(void *ctx,
> -				const struct prop_handler *handler,
> -				const char *value,
> -				size_t len)
> +static void inode_prop_iterator(void *ctx, const struct prop_handler *handler,
> +				const char *value, size_t len)
>  {
>  	struct inode *inode = ctx;
>  	struct btrfs_root *root = BTRFS_I(inode)->root;
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 4/5] btrfs: drop redundant forward declaration in props.c
  2019-02-08  7:02 ` [PATCH 4/5] btrfs: drop redundant forward declaration in props.c Anand Jain
@ 2019-02-08  7:09   ` Nikolay Borisov
  0 siblings, 0 replies; 17+ messages in thread
From: Nikolay Borisov @ 2019-02-08  7:09 UTC (permalink / raw)
  To: Anand Jain, linux-btrfs



On 8.02.19 г. 9:02 ч., Anand Jain wrote:
> Drop forward declaration of the functions,
> prop_compression_validate(), prop_compression_apply() and
> prop_compression_extract().
> 
> Signed-off-by: Anand Jain <anand.jain@oracle.com>

Reviewed-by: Nikolay Borisov <nborisov@suse.com>

> ---
>  fs/btrfs/props.c | 6 ------
>  1 file changed, 6 deletions(-)
> 
> diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
> index 6f52e3d21012..77a03076b18e 100644
> --- a/fs/btrfs/props.c
> +++ b/fs/btrfs/props.c
> @@ -23,12 +23,6 @@ struct prop_handler {
>  	int inheritable;
>  };
>  
> -static int prop_compression_validate(const char *value, size_t len);
> -static int prop_compression_apply(struct inode *inode,
> -				  const char *value,
> -				  size_t len);
> -static const char *prop_compression_extract(struct inode *inode);
> -
>  static const struct hlist_head *find_prop_handlers_by_hash(const u64 hash)
>  {
>  	struct hlist_head *h;
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 3/5] btrfs: reorg functions to drop forward declaration
  2019-02-08  7:02 ` [PATCH 3/5] btrfs: reorg functions to drop forward declaration Anand Jain
@ 2019-02-08  7:10   ` Nikolay Borisov
  2019-02-11 18:43     ` David Sterba
  0 siblings, 1 reply; 17+ messages in thread
From: Nikolay Borisov @ 2019-02-08  7:10 UTC (permalink / raw)
  To: Anand Jain, linux-btrfs



On 8.02.19 г. 9:02 ч., Anand Jain wrote:
> In preparation to drop forward declaration of the functions,
> prop_compression_validate(), prop_compression_apply() and
> prop_compression_extract(). Move prop_handlers[], btrfs_props_init()
> prop_compression_validate(), prop_compression_apply() and
> prop_compression_extract() appropriately with in the file. No functional
> changes.
> 
> Signed-off-by: Anand Jain <anand.jain@oracle.com>

I'm fine with this, however I think this and the next patch could really
be squashed into one, but let's see what David prefers.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>

> ---
>  fs/btrfs/props.c | 157 ++++++++++++++++++++++++++++---------------------------
>  1 file changed, 79 insertions(+), 78 deletions(-)
> 
> diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
> index 4525a2a4d1cd..6f52e3d21012 100644
> --- a/fs/btrfs/props.c
> +++ b/fs/btrfs/props.c
> @@ -29,30 +29,6 @@ static int prop_compression_apply(struct inode *inode,
>  				  size_t len);
>  static const char *prop_compression_extract(struct inode *inode);
>  
> -static struct prop_handler prop_handlers[] = {
> -	{
> -		.xattr_name = XATTR_BTRFS_PREFIX "compression",
> -		.validate = prop_compression_validate,
> -		.apply = prop_compression_apply,
> -		.extract = prop_compression_extract,
> -		.inheritable = 1
> -	},
> -};
> -
> -void __init btrfs_props_init(void)
> -{
> -	int i;
> -
> -	hash_init(prop_handlers_ht);
> -
> -	for (i = 0; i < ARRAY_SIZE(prop_handlers); i++) {
> -		struct prop_handler *p = &prop_handlers[i];
> -		u64 h = btrfs_name_hash(p->xattr_name, strlen(p->xattr_name));
> -
> -		hash_add(prop_handlers_ht, &p->node, h);
> -	}
> -}
> -
>  static const struct hlist_head *find_prop_handlers_by_hash(const u64 hash)
>  {
>  	struct hlist_head *h;
> @@ -271,6 +247,78 @@ int btrfs_load_inode_props(struct inode *inode, struct btrfs_path *path)
>  	return ret;
>  }
>  
> +static int prop_compression_validate(const char *value, size_t len)
> +{
> +	if (!value)
> +		return 0;
> +
> +	if (!strncmp("lzo", value, len))
> +		return 0;
> +	else if (!strncmp("zlib", value, len))
> +		return 0;
> +	else if (!strncmp("zstd", value, len))
> +		return 0;
> +
> +	return -EINVAL;
> +}
> +
> +static int prop_compression_apply(struct inode *inode, const char *value,
> +				  size_t len)
> +{
> +	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
> +	int type;
> +
> +	if (len == 0) {
> +		BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS;
> +		BTRFS_I(inode)->flags &= ~BTRFS_INODE_COMPRESS;
> +		BTRFS_I(inode)->prop_compress = BTRFS_COMPRESS_NONE;
> +
> +		return 0;
> +	}
> +
> +	if (!strncmp("lzo", value, 3)) {
> +		type = BTRFS_COMPRESS_LZO;
> +		btrfs_set_fs_incompat(fs_info, COMPRESS_LZO);
> +	} else if (!strncmp("zlib", value, 4)) {
> +		type = BTRFS_COMPRESS_ZLIB;
> +	} else if (!strncmp("zstd", value, len)) {
> +		type = BTRFS_COMPRESS_ZSTD;
> +		btrfs_set_fs_incompat(fs_info, COMPRESS_ZSTD);
> +	} else {
> +		return -EINVAL;
> +	}
> +
> +	BTRFS_I(inode)->flags &= ~BTRFS_INODE_NOCOMPRESS;
> +	BTRFS_I(inode)->flags |= BTRFS_INODE_COMPRESS;
> +	BTRFS_I(inode)->prop_compress = type;
> +
> +	return 0;
> +}
> +
> +static const char *prop_compression_extract(struct inode *inode)
> +{
> +	switch (BTRFS_I(inode)->prop_compress) {
> +	case BTRFS_COMPRESS_ZLIB:
> +	case BTRFS_COMPRESS_LZO:
> +	case BTRFS_COMPRESS_ZSTD:
> +		return btrfs_compress_type2str(BTRFS_I(inode)->prop_compress);
> +	default:
> +		break;
> +	}
> +
> +	return NULL;
> +}
> +
> +static struct prop_handler prop_handlers[] = {
> +	{
> +		.xattr_name = XATTR_BTRFS_PREFIX "compression",
> +		.validate = prop_compression_validate,
> +		.apply = prop_compression_apply,
> +		.extract = prop_compression_extract,
> +		.inheritable = 1
> +	},
> +};
> +
>  static int inherit_props(struct btrfs_trans_handle *trans,
>  			 struct inode *inode,
>  			 struct inode *parent)
> @@ -352,64 +400,17 @@ int btrfs_subvol_inherit_props(struct btrfs_trans_handle *trans,
>  	return ret;
>  }
>  
> -static int prop_compression_validate(const char *value, size_t len)
> -{
> -	if (!strncmp("lzo", value, len))
> -		return 0;
> -	else if (!strncmp("zlib", value, len))
> -		return 0;
> -	else if (!strncmp("zstd", value, len))
> -		return 0;
> -
> -	return -EINVAL;
> -}
> -
> -static int prop_compression_apply(struct inode *inode,
> -				  const char *value,
> -				  size_t len)
> +void __init btrfs_props_init(void)
>  {
> -	struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
> -	int type;
> -
> -	if (len == 0) {
> -		BTRFS_I(inode)->flags |= BTRFS_INODE_NOCOMPRESS;
> -		BTRFS_I(inode)->flags &= ~BTRFS_INODE_COMPRESS;
> -		BTRFS_I(inode)->prop_compress = BTRFS_COMPRESS_NONE;
> -
> -		return 0;
> -	}
> -
> -	if (!strncmp("lzo", value, 3)) {
> -		type = BTRFS_COMPRESS_LZO;
> -		btrfs_set_fs_incompat(fs_info, COMPRESS_LZO);
> -	} else if (!strncmp("zlib", value, 4)) {
> -		type = BTRFS_COMPRESS_ZLIB;
> -	} else if (!strncmp("zstd", value, len)) {
> -		type = BTRFS_COMPRESS_ZSTD;
> -		btrfs_set_fs_incompat(fs_info, COMPRESS_ZSTD);
> -	} else {
> -		return -EINVAL;
> -	}
> +	int i;
>  
> -	BTRFS_I(inode)->flags &= ~BTRFS_INODE_NOCOMPRESS;
> -	BTRFS_I(inode)->flags |= BTRFS_INODE_COMPRESS;
> -	BTRFS_I(inode)->prop_compress = type;
> +	hash_init(prop_handlers_ht);
>  
> -	return 0;
> -}
> +	for (i = 0; i < ARRAY_SIZE(prop_handlers); i++) {
> +		struct prop_handler *p = &prop_handlers[i];
> +		u64 h = btrfs_name_hash(p->xattr_name, strlen(p->xattr_name));
>  
> -static const char *prop_compression_extract(struct inode *inode)
> -{
> -	switch (BTRFS_I(inode)->prop_compress) {
> -	case BTRFS_COMPRESS_ZLIB:
> -	case BTRFS_COMPRESS_LZO:
> -	case BTRFS_COMPRESS_ZSTD:
> -		return btrfs_compress_type2str(BTRFS_I(inode)->prop_compress);
> -	default:
> -		break;
> +		hash_add(prop_handlers_ht, &p->node, h);
>  	}
> -
> -	return NULL;
>  }
>  
> -
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 0/5] Misc props.c cleanups
  2019-02-08  7:02 [PATCH 0/5] Misc props.c cleanups Anand Jain
                   ` (4 preceding siblings ...)
  2019-02-08  7:02 ` [PATCH 5/5] btrfs: trivial, fix c coding style Anand Jain
@ 2019-02-08  7:15 ` Nikolay Borisov
  2019-02-08  7:31   ` Anand Jain
  5 siblings, 1 reply; 17+ messages in thread
From: Nikolay Borisov @ 2019-02-08  7:15 UTC (permalink / raw)
  To: Anand Jain, linux-btrfs



On 8.02.19 г. 9:02 ч., Anand Jain wrote:
> While adding the readmirror property found few cleanup things which
> can be fixed. As these aren't part of upcoming readmirror property
> I am sending these separately. Except for 1/5 rest fixes are in
> props.c. 1/5 is in volume.c.
> 
> Anand Jain (5):
>   btrfs: fix comment its device list mutex not volume lock
>   btrfs: kill __btrfs_set_prop()
>   btrfs: reorg functions to drop forward declaration
>   btrfs: drop redundant forward declaration in props.c
>   btrfs: trivial, fix c coding style
> 
>  fs/btrfs/ioctl.c   |  10 +--
>  fs/btrfs/props.c   | 201 ++++++++++++++++++++++++-----------------------------
>  fs/btrfs/props.h   |   6 +-
>  fs/btrfs/volumes.c |   2 +-
>  fs/btrfs/xattr.c   |   2 +-
>  5 files changed, 100 insertions(+), 121 deletions(-)
> 

Allow me to suggest to introduce another patch with the following hunk:

diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c
index ea78c3d6dcfc..37e9af2a9f8c 100644
--- a/fs/btrfs/xattr.c
+++ b/fs/btrfs/xattr.c
@@ -229,12 +229,11 @@ int btrfs_setxattr(struct btrfs_trans_handle *trans,
        if (btrfs_root_readonly(root))
                return -EROFS;

-       if (trans)
-               return do_setxattr(trans, inode, name, value, size, flags);
-
-       trans = btrfs_start_transaction(root, 2);
-       if (IS_ERR(trans))
-               return PTR_ERR(trans);
+       if (!trans) {
+               trans = btrfs_start_transaction(root, 2);
+               if (IS_ERR(trans))
+                       return PTR_ERR(trans);
+       }

        ret = do_setxattr(trans, inode, name, value, size, flags);
        if (ret)


This just inverts the logic for !trans and makes the code a bit more
linear and (IMO) easier to follow.

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 1/5] btrfs: fix comment its device list mutex not volume lock
  2019-02-08  7:07   ` Nikolay Borisov
@ 2019-02-08  7:16     ` Anand Jain
  2019-02-08  7:19       ` Nikolay Borisov
  0 siblings, 1 reply; 17+ messages in thread
From: Anand Jain @ 2019-02-08  7:16 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs



On 2/8/19 3:07 PM, Nikolay Borisov wrote:
> 
> 
> On 8.02.19 г. 9:02 ч., Anand Jain wrote:
>> We have killed volume mutex (commit: dccdb07bc996
>> btrfs: kill btrfs_fs_info::volume_mutex) update comment. This a trival one
>> seems to have escaped.
>>
>> Signed-off-by: Anand Jain <anand.jain@oracle.com>
>> ---
>>   fs/btrfs/volumes.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
>> index fe122e6099ae..8160749cd9ba 100644
>> --- a/fs/btrfs/volumes.c
>> +++ b/fs/btrfs/volumes.c
>> @@ -1129,7 +1129,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
>>   	mutex_lock(&orig->device_list_mutex);
>>   	fs_devices->total_devices = orig->total_devices;
>>   
>> -	/* We have held the volume lock, it is safe to get the devices. */
>> +	/* We have held the device_list_mutex, it is safe to get the devices. */
> 
> I'd rather have the comment replaced with lockdep_assert_held it's a lot
> more eloquent.

   I agree if we don't acquire the required lock in the same function,
   but here, we call the required mutex_lock(&orig->device_list_mutex);
   just three lines above in the same function.

   Where do we need the lockdep_assert_held()?

-Anand

>>   	list_for_each_entry(orig_dev, &orig->devices, dev_list) {
>>   		struct rcu_string *name;
>>   
>>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 1/5] btrfs: fix comment its device list mutex not volume lock
  2019-02-08  7:16     ` Anand Jain
@ 2019-02-08  7:19       ` Nikolay Borisov
  2019-02-08  7:39         ` [PATCH v2 " Anand Jain
  0 siblings, 1 reply; 17+ messages in thread
From: Nikolay Borisov @ 2019-02-08  7:19 UTC (permalink / raw)
  To: Anand Jain, linux-btrfs



On 8.02.19 г. 9:16 ч., Anand Jain wrote:
> 
> 
> On 2/8/19 3:07 PM, Nikolay Borisov wrote:
>>
>>
>> On 8.02.19 г. 9:02 ч., Anand Jain wrote:
>>> We have killed volume mutex (commit: dccdb07bc996
>>> btrfs: kill btrfs_fs_info::volume_mutex) update comment. This a
>>> trival one
>>> seems to have escaped.
>>>
>>> Signed-off-by: Anand Jain <anand.jain@oracle.com>
>>> ---
>>>   fs/btrfs/volumes.c | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
>>> index fe122e6099ae..8160749cd9ba 100644
>>> --- a/fs/btrfs/volumes.c
>>> +++ b/fs/btrfs/volumes.c
>>> @@ -1129,7 +1129,7 @@ static struct btrfs_fs_devices
>>> *clone_fs_devices(struct btrfs_fs_devices *orig)
>>>       mutex_lock(&orig->device_list_mutex);
>>>       fs_devices->total_devices = orig->total_devices;
>>>   -    /* We have held the volume lock, it is safe to get the
>>> devices. */
>>> +    /* We have held the device_list_mutex, it is safe to get the
>>> devices. */
>>
>> I'd rather have the comment replaced with lockdep_assert_held it's a lot
>> more eloquent.
> 
>   I agree if we don't acquire the required lock in the same function,
>   but here, we call the required mutex_lock(&orig->device_list_mutex);
>   just three lines above in the same function.
> 
>   Where do we need the lockdep_assert_held()?

You are right I missed that. In that case I'd say just remove the
comment it should be obvious what's happening.

> 
> -Anand
> 
>>>       list_for_each_entry(orig_dev, &orig->devices, dev_list) {
>>>           struct rcu_string *name;
>>>  
> 

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 0/5] Misc props.c cleanups
  2019-02-08  7:15 ` [PATCH 0/5] Misc props.c cleanups Nikolay Borisov
@ 2019-02-08  7:31   ` Anand Jain
  0 siblings, 0 replies; 17+ messages in thread
From: Anand Jain @ 2019-02-08  7:31 UTC (permalink / raw)
  To: Nikolay Borisov, linux-btrfs



On 2/8/19 3:15 PM, Nikolay Borisov wrote:
> 
> 
> On 8.02.19 г. 9:02 ч., Anand Jain wrote:
>> While adding the readmirror property found few cleanup things which
>> can be fixed. As these aren't part of upcoming readmirror property
>> I am sending these separately. Except for 1/5 rest fixes are in
>> props.c. 1/5 is in volume.c.
>>
>> Anand Jain (5):
>>    btrfs: fix comment its device list mutex not volume lock
>>    btrfs: kill __btrfs_set_prop()
>>    btrfs: reorg functions to drop forward declaration
>>    btrfs: drop redundant forward declaration in props.c
>>    btrfs: trivial, fix c coding style
>>
>>   fs/btrfs/ioctl.c   |  10 +--
>>   fs/btrfs/props.c   | 201 ++++++++++++++++++++++++-----------------------------
>>   fs/btrfs/props.h   |   6 +-
>>   fs/btrfs/volumes.c |   2 +-
>>   fs/btrfs/xattr.c   |   2 +-
>>   5 files changed, 100 insertions(+), 121 deletions(-)
>>
> 
> Allow me to suggest to introduce another patch with the following hunk:
> 
> diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c
> index ea78c3d6dcfc..37e9af2a9f8c 100644
> --- a/fs/btrfs/xattr.c
> +++ b/fs/btrfs/xattr.c
> @@ -229,12 +229,11 @@ int btrfs_setxattr(struct btrfs_trans_handle *trans,
>          if (btrfs_root_readonly(root))
>                  return -EROFS;
> 
> -       if (trans)
> -               return do_setxattr(trans, inode, name, value, size, flags);
> -
> -       trans = btrfs_start_transaction(root, 2);
> -       if (IS_ERR(trans))
> -               return PTR_ERR(trans);
> +       if (!trans) {
> +               trans = btrfs_start_transaction(root, 2);
> +               if (IS_ERR(trans))
> +                       return PTR_ERR(trans);
> +       }
> 
>          ret = do_setxattr(trans, inode, name, value, size, flags);
>          if (ret)
> 
> 
> This just inverts the logic for !trans and makes the code a bit more
> linear and (IMO) easier to follow.
> 


Thanks for the comments.

But we still have to break the linear flow for the case of
  trans != NULL. Where we don't do the
    inode_inc_iversion(inode);
and the rest part.

-Anand



^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v2 1/5] btrfs: fix comment its device list mutex not volume lock
  2019-02-08  7:19       ` Nikolay Borisov
@ 2019-02-08  7:39         ` Anand Jain
  2019-02-11 18:41           ` David Sterba
  0 siblings, 1 reply; 17+ messages in thread
From: Anand Jain @ 2019-02-08  7:39 UTC (permalink / raw)
  To: linux-btrfs

We have killed volume mutex (commit: dccdb07bc996
btrfs: kill btrfs_fs_info::volume_mutex). This a trival one seems to have
escaped.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
v2: Delete the wrong comment instead of fixing it.

 fs/btrfs/volumes.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index fe122e6099ae..03f223aa7194 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -1129,7 +1129,6 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
 	mutex_lock(&orig->device_list_mutex);
 	fs_devices->total_devices = orig->total_devices;
 
-	/* We have held the volume lock, it is safe to get the devices. */
 	list_for_each_entry(orig_dev, &orig->devices, dev_list) {
 		struct rcu_string *name;
 
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH v2 1/5] btrfs: fix comment its device list mutex not volume lock
  2019-02-08  7:39         ` [PATCH v2 " Anand Jain
@ 2019-02-11 18:41           ` David Sterba
  0 siblings, 0 replies; 17+ messages in thread
From: David Sterba @ 2019-02-11 18:41 UTC (permalink / raw)
  To: Anand Jain; +Cc: linux-btrfs

On Fri, Feb 08, 2019 at 03:39:37PM +0800, Anand Jain wrote:
> We have killed volume mutex (commit: dccdb07bc996
> btrfs: kill btrfs_fs_info::volume_mutex). This a trival one seems to have
> escaped.
> 
> Signed-off-by: Anand Jain <anand.jain@oracle.com>
> ---
> v2: Delete the wrong comment instead of fixing it.

This patch has been added to misc-next, thanks.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 3/5] btrfs: reorg functions to drop forward declaration
  2019-02-08  7:10   ` Nikolay Borisov
@ 2019-02-11 18:43     ` David Sterba
  0 siblings, 0 replies; 17+ messages in thread
From: David Sterba @ 2019-02-11 18:43 UTC (permalink / raw)
  To: Nikolay Borisov; +Cc: Anand Jain, linux-btrfs

On Fri, Feb 08, 2019 at 09:10:41AM +0200, Nikolay Borisov wrote:
> 
> 
> On 8.02.19 г. 9:02 ч., Anand Jain wrote:
> > In preparation to drop forward declaration of the functions,
> > prop_compression_validate(), prop_compression_apply() and
> > prop_compression_extract(). Move prop_handlers[], btrfs_props_init()
> > prop_compression_validate(), prop_compression_apply() and
> > prop_compression_extract() appropriately with in the file. No functional
> > changes.
> > 
> > Signed-off-by: Anand Jain <anand.jain@oracle.com>
> 
> I'm fine with this, however I think this and the next patch could really
> be squashed into one, but let's see what David prefers.

I agree, moving the functions in order remove the prototypes in one
patch is fine.

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2019-02-11 18:44 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-08  7:02 [PATCH 0/5] Misc props.c cleanups Anand Jain
2019-02-08  7:02 ` [PATCH 1/5] btrfs: fix comment its device list mutex not volume lock Anand Jain
2019-02-08  7:07   ` Nikolay Borisov
2019-02-08  7:16     ` Anand Jain
2019-02-08  7:19       ` Nikolay Borisov
2019-02-08  7:39         ` [PATCH v2 " Anand Jain
2019-02-11 18:41           ` David Sterba
2019-02-08  7:02 ` [PATCH 2/5] btrfs: kill __btrfs_set_prop() Anand Jain
2019-02-08  7:02 ` [PATCH 3/5] btrfs: reorg functions to drop forward declaration Anand Jain
2019-02-08  7:10   ` Nikolay Borisov
2019-02-11 18:43     ` David Sterba
2019-02-08  7:02 ` [PATCH 4/5] btrfs: drop redundant forward declaration in props.c Anand Jain
2019-02-08  7:09   ` Nikolay Borisov
2019-02-08  7:02 ` [PATCH 5/5] btrfs: trivial, fix c coding style Anand Jain
2019-02-08  7:09   ` Nikolay Borisov
2019-02-08  7:15 ` [PATCH 0/5] Misc props.c cleanups Nikolay Borisov
2019-02-08  7:31   ` Anand Jain

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).