public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] nbd: new nbd sysfs entries
@ 2011-08-03 23:32 Paul Clements
  2011-08-03 23:50 ` Greg KH
  0 siblings, 1 reply; 2+ messages in thread
From: Paul Clements @ 2011-08-03 23:32 UTC (permalink / raw)
  To: andrew morton; +Cc: kernel list, nbd-general

[-- Attachment #1: Type: text/plain, Size: 216 bytes --]

Description: Add 3 new sysfs entries to nbd.

# cat /sys/block/nbd6/nbd/peer
127.0.0.1
# cat /sys/block/nbd6/nbd/flags
0
# cat /sys/block/nbd6/nbd/xmit_timeout
6

This patch depends on patch nbd-sysfs-framework.diff

[-- Attachment #2: nbd-sysfs-entries.diff --]
[-- Type: text/x-patch, Size: 3230 bytes --]

Description: Add 3 new sysfs entries to nbd.

# cat /sys/block/nbd6/nbd/peer 
127.0.0.1
# cat /sys/block/nbd6/nbd/flags 
0
# cat /sys/block/nbd6/nbd/xmit_timeout 
6

This patch depends on patch nbd-sysfs-framework.diff

From: Paul Clements <paul.clements@steeleye.com>
Signed-off-by: Paul Clements <paul.clements@steeleye.com>
---

 nbd.c |   79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 77 insertions(+), 2 deletions(-)

diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 23f3619..44cd41d 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -136,7 +136,7 @@ static void sock_shutdown(struct nbd_device *lo, int lock)
 		mutex_unlock(&lo->tx_lock);
 }
 
-static void nbd_xmit_timeout(unsigned long arg)
+static void xmit_timeout(unsigned long arg)
 {
 	struct task_struct *task = (struct task_struct *)arg;
 
@@ -183,7 +183,7 @@ static int sock_xmit(struct nbd_device *lo, int send, void *buf, int size,
 
 			if (lo->xmit_timeout) {
 				init_timer(&ti);
-				ti.function = nbd_xmit_timeout;
+				ti.function = xmit_timeout;
 				ti.data = (unsigned long)current;
 				ti.expires = jiffies + lo->xmit_timeout;
 				add_timer(&ti);
@@ -719,16 +719,91 @@ struct nbd_sysfs_entry {
 	ssize_t (*store)(struct nbd_device *, const char *, size_t);
 };
 
+static ssize_t
+peer_show(struct nbd_device *lo, char *page)
+{
+	struct socket *sock = lo->sock;
+	struct sockaddr_storage addr;
+	struct sockaddr *sa = (struct sockaddr *)&addr;
+	struct sockaddr_in *sin = (struct sockaddr_in *)&addr;
+	struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&addr;
+	int err, len;
+
+	if (!sock)
+		goto err;
+
+	err = kernel_getpeername(sock, sa, &len);
+	if (err < 0)
+		goto err;
+
+	if (sa->sa_family == AF_INET6)
+		return sprintf(page, "%pI6\n", &sin6->sin6_addr);
+	else if (sa->sa_family == AF_INET)
+		return sprintf(page, "%pI4\n", &sin->sin_addr);
+err:
+	return 0;
+}
+
 static ssize_t pid_show(struct nbd_device *lo, char *page)
 {
 	return sprintf(page, "%ld\n", (long)lo->pid);
 }
 
+static ssize_t
+flags_show(struct nbd_device *lo, char *page)
+{
+	return sprintf(page, "%x\n", lo->flags);
+}
+
+static ssize_t
+flags_store(struct nbd_device *lo, const char *buf, size_t len)
+{
+	long n;
+
+	if (strict_strtol(buf, 16, &n))
+		return -EINVAL;
+
+	lo->flags = n;
+
+	return len;
+}
+
+static ssize_t
+xmit_timeout_show(struct nbd_device *lo, char *page)
+{
+	return sprintf(page, "%d\n", lo->xmit_timeout / HZ);
+}
+
+static ssize_t
+xmit_timeout_store(struct nbd_device *lo, const char *buf, size_t len)
+{
+	long n;
+
+	if (strict_strtol(buf, 10, &n))
+		return -EINVAL;
+
+	lo->xmit_timeout = n * HZ;
+
+	return len;
+}
+
+static struct nbd_sysfs_entry nbd_peer =
+__ATTR(peer, S_IRUGO, peer_show, NULL);
+
 static struct nbd_sysfs_entry nbd_pid =
 __ATTR(pid, S_IRUGO, pid_show, NULL);
 
+static struct nbd_sysfs_entry nbd_flags =
+__ATTR(flags, S_IRUGO|S_IWUSR, flags_show, flags_store);
+
+static struct nbd_sysfs_entry nbd_xmit_timeout =
+__ATTR(xmit_timeout, S_IRUGO|S_IWUSR, xmit_timeout_show, xmit_timeout_store);
+
 static struct attribute *nbd_default_attrs[] = {
+	&nbd_peer.attr,
 	&nbd_pid.attr,
+	&nbd_flags.attr,
+	&nbd_xmit_timeout.attr,
 	NULL,
 };
 

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

* Re: [PATCH] nbd: new nbd sysfs entries
  2011-08-03 23:32 [PATCH] nbd: new nbd sysfs entries Paul Clements
@ 2011-08-03 23:50 ` Greg KH
  0 siblings, 0 replies; 2+ messages in thread
From: Greg KH @ 2011-08-03 23:50 UTC (permalink / raw)
  To: Paul Clements; +Cc: andrew morton, kernel list, nbd-general

On Wed, Aug 03, 2011 at 07:32:39PM -0400, Paul Clements wrote:
> Description: Add 3 new sysfs entries to nbd.
> 
> # cat /sys/block/nbd6/nbd/peer
> 127.0.0.1
> # cat /sys/block/nbd6/nbd/flags
> 0
> # cat /sys/block/nbd6/nbd/xmit_timeout
> 6

Any new sysfs file (or removal or modification) also requires a matching
Documentation/ABI/ file as well.  Please include it in this patch (if it
ends up surviving...)

> This patch depends on patch nbd-sysfs-framework.diff

I didn't like that one, it was wrong and I also think you caused a
reference count issue by adding a kobject to that structure...



> Description: Add 3 new sysfs entries to nbd.
> 
> # cat /sys/block/nbd6/nbd/peer 
> 127.0.0.1
> # cat /sys/block/nbd6/nbd/flags 
> 0
> # cat /sys/block/nbd6/nbd/xmit_timeout 
> 6
> 
> This patch depends on patch nbd-sysfs-framework.diff
> 
> From: Paul Clements <paul.clements@steeleye.com>
> Signed-off-by: Paul Clements <paul.clements@steeleye.com>
> ---
> 
>  nbd.c |   79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 77 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
> index 23f3619..44cd41d 100644
> --- a/drivers/block/nbd.c
> +++ b/drivers/block/nbd.c
> @@ -136,7 +136,7 @@ static void sock_shutdown(struct nbd_device *lo, int lock)
>  		mutex_unlock(&lo->tx_lock);
>  }
>  
> -static void nbd_xmit_timeout(unsigned long arg)
> +static void xmit_timeout(unsigned long arg)

Why change the name of this function?  You now have a function, field,
and sysfs file with that same name, talk about a way to cause confusion
when reading the code :(

greg k-h

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

end of thread, other threads:[~2011-08-03 23:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-03 23:32 [PATCH] nbd: new nbd sysfs entries Paul Clements
2011-08-03 23:50 ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox