public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* About function __create_file  in debugfs
@ 2012-09-08  9:41 Jianpeng Ma
  2012-09-08 15:25 ` gregkh
  0 siblings, 1 reply; 3+ messages in thread
From: Jianpeng Ma @ 2012-09-08  9:41 UTC (permalink / raw)
  To: gregkh; +Cc: linux-kernel

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="gb2312", Size: 1211 bytes --]

Hi:
	At present,i used blktrace to trace block io.But i always met error, the message like:
>BLKTRACESETUP(2) /dev/sdc failed: 2/No such file or directory
>Thread 0 failed open /sys/kernel/debug/block/(null)/trace0: 2/No such file or directory
>Thread 2 failed open /sys/kernel/debug/block/(null)/trace2: 2/No such file or directory
>Thread 3 failed open /sys/kernel/debug/block/(null)/trace3: 2/No such file or directory

>Thread 1 failed open /sys/kernel/debug/block/(null)/trace1: 2/No such file or directory
>FAILED to start thread on CPU 0: 1/Operation not permitted
>FAILED to start thread on CPU 1: 1/Operation not permitted
>FAILED to start thread on CPU 2: 1/Operation not permitted
>FAILED to start thread on CPU 3: 1/Operation not permitted

But those isn't important. I add some message in kernel and found the reason is inode already existed.
But the function __create_file dosen't return correctly errno.So blktrace tool can't print correctly message.
I think func __create_file should return correctly message(ERR_PTR(error)) not NULL.
ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

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

* Re: About function __create_file  in debugfs
  2012-09-08  9:41 About function __create_file in debugfs Jianpeng Ma
@ 2012-09-08 15:25 ` gregkh
  2012-09-10 11:49   ` Jianpeng Ma
  0 siblings, 1 reply; 3+ messages in thread
From: gregkh @ 2012-09-08 15:25 UTC (permalink / raw)
  To: Jianpeng Ma; +Cc: linux-kernel

On Sat, Sep 08, 2012 at 05:41:05PM +0800, Jianpeng Ma wrote:
> Hi:
> 	At present,i used blktrace to trace block io.But i always met error, the message like:
> >BLKTRACESETUP(2) /dev/sdc failed: 2/No such file or directory
> >Thread 0 failed open /sys/kernel/debug/block/(null)/trace0: 2/No such file or directory
> >Thread 2 failed open /sys/kernel/debug/block/(null)/trace2: 2/No such file or directory
> >Thread 3 failed open /sys/kernel/debug/block/(null)/trace3: 2/No such file or directory
> 
> >Thread 1 failed open /sys/kernel/debug/block/(null)/trace1: 2/No such file or directory
> >FAILED to start thread on CPU 0: 1/Operation not permitted
> >FAILED to start thread on CPU 1: 1/Operation not permitted
> >FAILED to start thread on CPU 2: 1/Operation not permitted
> >FAILED to start thread on CPU 3: 1/Operation not permitted
> 
> But those isn't important. I add some message in kernel and found the reason is inode already existed.
> But the function __create_file dosen't return correctly errno.So blktrace tool can't print correctly message.
> I think func __create_file should return correctly message(ERR_PTR(error)) not NULL.

Patches are always welcome :)

greg k-h

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

* Re: Re: About function __create_file  in debugfs
  2012-09-08 15:25 ` gregkh
@ 2012-09-10 11:49   ` Jianpeng Ma
  0 siblings, 0 replies; 3+ messages in thread
From: Jianpeng Ma @ 2012-09-10 11:49 UTC (permalink / raw)
  To: gregkh; +Cc: linux-kernel

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="gb2312", Size: 3011 bytes --]

On 2012-09-08 23:25 gregkh <gregkh@linuxfoundation.org> Wrote:
>On Sat, Sep 08, 2012 at 05:41:05PM +0800, Jianpeng Ma wrote:
>> Hi:
>> 	At present,i used blktrace to trace block io.But i always met error, the message like:
>> >BLKTRACESETUP(2) /dev/sdc failed: 2/No such file or directory
>> >Thread 0 failed open /sys/kernel/debug/block/(null)/trace0: 2/No such file or directory
>> >Thread 2 failed open /sys/kernel/debug/block/(null)/trace2: 2/No such file or directory
>> >Thread 3 failed open /sys/kernel/debug/block/(null)/trace3: 2/No such file or directory
>> 
>> >Thread 1 failed open /sys/kernel/debug/block/(null)/trace1: 2/No such file or directory
>> >FAILED to start thread on CPU 0: 1/Operation not permitted
>> >FAILED to start thread on CPU 1: 1/Operation not permitted
>> >FAILED to start thread on CPU 2: 1/Operation not permitted
>> >FAILED to start thread on CPU 3: 1/Operation not permitted
>> 
>> But those isn't important. I add some message in kernel and found the reason is inode already existed.
>> But the function __create_file dosen't return correctly errno.So blktrace tool can't print correctly message.
>> I think func __create_file should return correctly message(ERR_PTR(error)) not NULL.
>
>Patches are always welcome :)
>
>greg k-h

Thanks, the patch is:
Func debugfs_create_symlink/debugfs_create_file/debugfs_create_dir,
it only return NULL when error counted. We should correctly error info
instead of.

Signed-off-by: Jianpeng Ma <majianpeng@gmail.com>
---
 fs/debugfs/inode.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
index 4733eab..1e94350 100644
--- a/fs/debugfs/inode.c
+++ b/fs/debugfs/inode.c
@@ -302,8 +302,10 @@ struct dentry *__create_file(const char *name, umode_t mode,
 
 	error = simple_pin_fs(&debug_fs_type, &debugfs_mount,
 			      &debugfs_mount_count);
-	if (error)
+	if (error) {
+		dentry = ERR_PTR(error);
 		goto exit;
+	}
 
 	/* If the parent is not specified, we create it in the root.
 	 * We need the root dentry to do this, which is in the super 
@@ -337,7 +339,7 @@ struct dentry *__create_file(const char *name, umode_t mode,
 	mutex_unlock(&parent->d_inode->i_mutex);
 
 	if (error) {
-		dentry = NULL;
+		dentry = ERR_PTR(error);
 		simple_release_fs(&debugfs_mount, &debugfs_mount_count);
 	}
 exit:
@@ -442,10 +444,10 @@ struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent,
 
 	link = kstrdup(target, GFP_KERNEL);
 	if (!link)
-		return NULL;
+		return ERR_PTR(-ENOMEM);
 
 	result = __create_file(name, S_IFLNK | S_IRWXUGO, parent, link, NULL);
-	if (!result)
+	if (IS_ERR_OR_NULL(result))
 		kfree(link);
 	return result;
 }
-- 
1.7.9.5


But i searched kernel-code and found at-least 100 places used those code.
How about those code? Am i correct those or not?
Thanks!ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

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

end of thread, other threads:[~2012-09-10 11:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-08  9:41 About function __create_file in debugfs Jianpeng Ma
2012-09-08 15:25 ` gregkh
2012-09-10 11:49   ` Jianpeng Ma

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