linux-next.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* linux-next: build failure after merge of the target-updates tree
@ 2015-10-07  3:49 Stephen Rothwell
  2015-10-07 12:27 ` [PATCH] stm class: Use per-attribute show and store methods in configfs policy Alexander Shishkin
  2015-10-07 12:27 ` linux-next: build failure after merge of the target-updates tree Alexander Shishkin
  0 siblings, 2 replies; 4+ messages in thread
From: Stephen Rothwell @ 2015-10-07  3:49 UTC (permalink / raw)
  To: Nicholas A. Bellinger, Greg KH, Arnd Bergmann
  Cc: linux-next, linux-kernel, Alexander Shishkin, Christoph Hellwig

Hi Nicholas,

After merging the target-updates tree, today's linux-next build (x86_64
allmodconfig) failed like this:

drivers/hwtracing/stm/policy.c:212:2: error: unknown field 'show_attribute' specified in initializer
  .show_attribute  = stp_policy_node_attr_show,
  ^
drivers/hwtracing/stm/policy.c:212:2: warning: initialization from incompatible pointer type
drivers/hwtracing/stm/policy.c:212:2: warning: (near initialization for 'stp_policy_node_item_ops.allow_link')
drivers/hwtracing/stm/policy.c:213:2: error: unknown field 'store_attribute' specified in initializer
  .store_attribute = stp_policy_node_attr_store,
  ^
drivers/hwtracing/stm/policy.c:213:2: warning: initialization from incompatible pointer type
drivers/hwtracing/stm/policy.c:213:2: warning: (near initialization for 'stp_policy_node_item_ops.drop_link')
drivers/hwtracing/stm/policy.c:353:2: error: unknown field 'show_attribute' specified in initializer
  .show_attribute  = stp_policy_attr_show,
  ^
drivers/hwtracing/stm/policy.c:353:2: warning: initialization from incompatible pointer type
drivers/hwtracing/stm/policy.c:353:2: warning: (near initialization for 'stp_policy_item_ops.allow_link')

Caused by commit

  7bd1d4093c2f ("stm class: Introduce an abstraction for System Trace Module devices")

from the char-misc tree interacting with commit

  f71933438300 ("configfs: remove old API")

I have reverted the target-updated commit for today.  If there is a
better resolution (and I assume that there is), please let me know.

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

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

* [PATCH] stm class: Use per-attribute show and store methods in configfs policy
  2015-10-07  3:49 linux-next: build failure after merge of the target-updates tree Stephen Rothwell
@ 2015-10-07 12:27 ` Alexander Shishkin
  2015-10-07 12:27 ` linux-next: build failure after merge of the target-updates tree Alexander Shishkin
  1 sibling, 0 replies; 4+ messages in thread
From: Alexander Shishkin @ 2015-10-07 12:27 UTC (permalink / raw)
  To: Stephen Rothwell, nab, Greg KH, Arnd Bergmann
  Cc: linux-next, linux-kernel, Christoph Hellwig, Alexander Shishkin

Since commit f9b2efa6dc ("Christoph Hellwig configfs: add show and store
methods to struct configfs_attribute"), there's no need to keep an extra
wrapper structure per item and the awkward show_attribute/store_attribute
item ops are no longer needed.

This patch converts policy code to the new api, all the while making the
code quite a bit smaller and easier on the eyes.

Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
---
 drivers/hwtracing/stm/policy.c | 105 ++++++++++-------------------------------
 1 file changed, 24 insertions(+), 81 deletions(-)

diff --git a/drivers/hwtracing/stm/policy.c b/drivers/hwtracing/stm/policy.c
index 6498a9dbb7..11ab6d01ad 100644
--- a/drivers/hwtracing/stm/policy.c
+++ b/drivers/hwtracing/stm/policy.c
@@ -76,9 +76,10 @@ to_stp_policy_node(struct config_item *item)
 		NULL;
 }
 
-static ssize_t stp_policy_node_masters_show(struct stp_policy_node *policy_node,
-					    char *page)
+static ssize_t
+stp_policy_node_masters_show(struct config_item *item, char *page)
 {
+	struct stp_policy_node *policy_node = to_stp_policy_node(item);
 	ssize_t count;
 
 	count = sprintf(page, "%u %u\n", policy_node->first_master,
@@ -88,9 +89,10 @@ static ssize_t stp_policy_node_masters_show(struct stp_policy_node *policy_node,
 }
 
 static ssize_t
-stp_policy_node_masters_store(struct stp_policy_node *policy_node,
-			      const char *page, size_t count)
+stp_policy_node_masters_store(struct config_item *item, const char *page,
+			      size_t count)
 {
+	struct stp_policy_node *policy_node = to_stp_policy_node(item);
 	unsigned int first, last;
 	struct stm_device *stm;
 	char *p = (char *)page;
@@ -123,8 +125,9 @@ unlock:
 }
 
 static ssize_t
-stp_policy_node_channels_show(struct stp_policy_node *policy_node, char *page)
+stp_policy_node_channels_show(struct config_item *item, char *page)
 {
+	struct stp_policy_node *policy_node = to_stp_policy_node(item);
 	ssize_t count;
 
 	count = sprintf(page, "%u %u\n", policy_node->first_channel,
@@ -134,9 +137,10 @@ stp_policy_node_channels_show(struct stp_policy_node *policy_node, char *page)
 }
 
 static ssize_t
-stp_policy_node_channels_store(struct stp_policy_node *policy_node,
-			       const char *page, size_t count)
+stp_policy_node_channels_store(struct config_item *item, const char *page,
+			       size_t count)
 {
+	struct stp_policy_node *policy_node = to_stp_policy_node(item);
 	unsigned int first, last;
 	struct stm_device *stm;
 	char *p = (char *)page;
@@ -171,71 +175,16 @@ static void stp_policy_node_release(struct config_item *item)
 	kfree(to_stp_policy_node(item));
 }
 
-struct stp_policy_node_attribute {
-	struct configfs_attribute	attr;
-	ssize_t (*show)(struct stp_policy_node *, char *);
-	ssize_t (*store)(struct stp_policy_node *, const char *, size_t);
-};
-
-static ssize_t stp_policy_node_attr_show(struct config_item *item,
-					 struct configfs_attribute *attr,
-					 char *page)
-{
-	struct stp_policy_node *policy_node = to_stp_policy_node(item);
-	struct stp_policy_node_attribute *pn_attr =
-		container_of(attr, struct stp_policy_node_attribute, attr);
-	ssize_t count = 0;
-
-	if (pn_attr->show)
-		count = pn_attr->show(policy_node, page);
-
-	return count;
-}
-
-static ssize_t stp_policy_node_attr_store(struct config_item *item,
-					  struct configfs_attribute *attr,
-					  const char *page, size_t len)
-{
-	struct stp_policy_node *policy_node = to_stp_policy_node(item);
-	struct stp_policy_node_attribute *pn_attr =
-		container_of(attr, struct stp_policy_node_attribute, attr);
-	ssize_t count = -EINVAL;
-
-	if (pn_attr->store)
-		count = pn_attr->store(policy_node, page, len);
-
-	return count;
-}
-
 static struct configfs_item_operations stp_policy_node_item_ops = {
 	.release		= stp_policy_node_release,
-	.show_attribute		= stp_policy_node_attr_show,
-	.store_attribute	= stp_policy_node_attr_store,
 };
 
-static struct stp_policy_node_attribute stp_policy_node_attr_range = {
-	.attr	= {
-		.ca_owner = THIS_MODULE,
-		.ca_name = "masters",
-		.ca_mode = S_IRUGO | S_IWUSR,
-	},
-	.show	= stp_policy_node_masters_show,
-	.store	= stp_policy_node_masters_store,
-};
-
-static struct stp_policy_node_attribute stp_policy_node_attr_channels = {
-	.attr	= {
-		.ca_owner = THIS_MODULE,
-		.ca_name = "channels",
-		.ca_mode = S_IRUGO | S_IWUSR,
-	},
-	.show	= stp_policy_node_channels_show,
-	.store	= stp_policy_node_channels_store,
-};
+CONFIGFS_ATTR(stp_policy_node_, masters);
+CONFIGFS_ATTR(stp_policy_node_, channels);
 
 static struct configfs_attribute *stp_policy_node_attrs[] = {
-	&stp_policy_node_attr_range.attr,
-	&stp_policy_node_attr_channels.attr,
+	&stp_policy_node_attr_masters,
+	&stp_policy_node_attr_channels,
 	NULL,
 };
 
@@ -298,20 +247,8 @@ static struct config_item_type stp_policy_node_type = {
 /*
  * Root group: policies.
  */
-static struct configfs_attribute stp_policy_attr_device = {
-	.ca_owner = THIS_MODULE,
-	.ca_name = "device",
-	.ca_mode = S_IRUGO,
-};
-
-static struct configfs_attribute *stp_policy_attrs[] = {
-	&stp_policy_attr_device,
-	NULL,
-};
-
-static ssize_t stp_policy_attr_show(struct config_item *item,
-				    struct configfs_attribute *attr,
-				    char *page)
+static ssize_t stp_policy_device_show(struct config_item *item,
+				      char *page)
 {
 	struct stp_policy *policy = to_stp_policy(item);
 	ssize_t count;
@@ -324,6 +261,13 @@ static ssize_t stp_policy_attr_show(struct config_item *item,
 	return count;
 }
 
+CONFIGFS_ATTR_RO(stp_policy_, device);
+
+static struct configfs_attribute *stp_policy_attrs[] = {
+	&stp_policy_attr_device,
+	NULL,
+};
+
 void stp_policy_unbind(struct stp_policy *policy)
 {
 	struct stm_device *stm = policy->stm;
@@ -350,7 +294,6 @@ static void stp_policy_release(struct config_item *item)
 
 static struct configfs_item_operations stp_policy_item_ops = {
 	.release		= stp_policy_release,
-	.show_attribute		= stp_policy_attr_show,
 };
 
 static struct configfs_group_operations stp_policy_group_ops = {
-- 
2.5.3

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

* Re: linux-next: build failure after merge of the target-updates tree
  2015-10-07  3:49 linux-next: build failure after merge of the target-updates tree Stephen Rothwell
  2015-10-07 12:27 ` [PATCH] stm class: Use per-attribute show and store methods in configfs policy Alexander Shishkin
@ 2015-10-07 12:27 ` Alexander Shishkin
  2015-10-07 20:22   ` Stephen Rothwell
  1 sibling, 1 reply; 4+ messages in thread
From: Alexander Shishkin @ 2015-10-07 12:27 UTC (permalink / raw)
  To: Stephen Rothwell, Nicholas A. Bellinger, Greg KH, Arnd Bergmann
  Cc: linux-next, linux-kernel, Christoph Hellwig

Stephen Rothwell <sfr@canb.auug.org.au> writes:

> Caused by commit
>
>   7bd1d4093c2f ("stm class: Introduce an abstraction for System Trace Module devices")
>
> from the char-misc tree interacting with commit
>
>   f71933438300 ("configfs: remove old API")
>
> I have reverted the target-updated commit for today.  If there is a
> better resolution (and I assume that there is), please let me know.

I'm going to follow up to this email with a fix that updates stm class
code to the new api, I'm not sure whos branch it should go to, because
it only works with Christoph's configfs patches in the -next.

Regards,
--
Alex

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

* Re: linux-next: build failure after merge of the target-updates tree
  2015-10-07 12:27 ` linux-next: build failure after merge of the target-updates tree Alexander Shishkin
@ 2015-10-07 20:22   ` Stephen Rothwell
  0 siblings, 0 replies; 4+ messages in thread
From: Stephen Rothwell @ 2015-10-07 20:22 UTC (permalink / raw)
  To: Alexander Shishkin
  Cc: Nicholas A. Bellinger, Greg KH, Arnd Bergmann, linux-next,
	linux-kernel, Christoph Hellwig

Hi Alexander,

On Wed, 07 Oct 2015 15:27:17 +0300 Alexander Shishkin <alexander.shishkin@linux.intel.com> wrote:
>
> Stephen Rothwell <sfr@canb.auug.org.au> writes:
> 
> > Caused by commit
> >
> >   7bd1d4093c2f ("stm class: Introduce an abstraction for System Trace Module devices")
> >
> > from the char-misc tree interacting with commit
> >
> >   f71933438300 ("configfs: remove old API")
> >
> > I have reverted the target-updated commit for today.  If there is a
> > better resolution (and I assume that there is), please let me know.
> 
> I'm going to follow up to this email with a fix that updates stm class
> code to the new api, I'm not sure whos branch it should go to, because
> it only works with Christoph's configfs patches in the -next.

Well, I will add it as a merge resolution patch in linux-next (instead
of the current revert) but someone will have to remember to send it to
Linus when the latter of these two trees is merged by him.  Unless one
of these trees can merge the other (or a non rebasing subset) ...
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

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

end of thread, other threads:[~2015-10-07 20:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-07  3:49 linux-next: build failure after merge of the target-updates tree Stephen Rothwell
2015-10-07 12:27 ` [PATCH] stm class: Use per-attribute show and store methods in configfs policy Alexander Shishkin
2015-10-07 12:27 ` linux-next: build failure after merge of the target-updates tree Alexander Shishkin
2015-10-07 20:22   ` Stephen Rothwell

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).