* [PATCH v4 0/3] cifs: small clean up series
@ 2014-08-27 13:49 Andy Shevchenko
[not found] ` <1409147384-20389-1-git-send-email-andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2014-08-27 13:49 UTC (permalink / raw)
To: Steve French, linux-cifs-u79uwXL29TY76Z2rM5mHXA,
samba-technical-w/Ol4Ecudpl8XjKLYN78aQ, Jeff Layton,
Alexander Bokovoy
Cc: Andy Shevchenko
This is small clean up series against CIFS kernel module.
Changes since v3:
- rebase on top of recent linux-next
Changes since v2:
- patch 1 got ACK and Reviwed-by tags
- patch 2 incorporates new piece of code similar that it used to have already,
thus tags were dropped for this round
- new patch 3
Andy Shevchenko (3):
cifs: call strtobool instead of custom implementation
cifs: convert to print_hex_dump() instead of custom implementation
cifs: convert printk(LEVEL...) to pr_<level>
fs/cifs/cifs_debug.c | 77 ++++++++++++++++++++++------------------------------
fs/cifs/cifs_debug.h | 7 ++---
fs/cifs/connect.c | 51 ++++++++++++----------------------
fs/cifs/misc.c | 32 ++--------------------
fs/cifs/transport.c | 4 +--
5 files changed, 58 insertions(+), 113 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v4 1/3] cifs: call strtobool instead of custom implementation
[not found] ` <1409147384-20389-1-git-send-email-andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
@ 2014-08-27 13:49 ` Andy Shevchenko
2014-08-27 13:49 ` [PATCH v4 2/3] cifs: convert to print_hex_dump() " Andy Shevchenko
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Andy Shevchenko @ 2014-08-27 13:49 UTC (permalink / raw)
To: Steve French, linux-cifs-u79uwXL29TY76Z2rM5mHXA,
samba-technical-w/Ol4Ecudpl8XjKLYN78aQ, Jeff Layton,
Alexander Bokovoy
Cc: Andy Shevchenko
Meanwhile it cleans up the code, the behaviour is slightly changed. In case of
providing non-boolean value it will fails with corresponding error. In the
original code the attempt of an update was just ignored in such case.
Signed-off-by: Andy Shevchenko <andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Acked-by: Jeff Layton <jlayton-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org>
Reviewed-by: Alexander Bokovoy <ab-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>
---
fs/cifs/cifs_debug.c | 51 +++++++++++++++++++++++++++++----------------------
1 file changed, 29 insertions(+), 22 deletions(-)
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index 44ec726..7c50bfa 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -274,6 +274,7 @@ static ssize_t cifs_stats_proc_write(struct file *file,
const char __user *buffer, size_t count, loff_t *ppos)
{
char c;
+ bool bv;
int rc;
struct list_head *tmp1, *tmp2, *tmp3;
struct TCP_Server_Info *server;
@@ -284,7 +285,7 @@ static ssize_t cifs_stats_proc_write(struct file *file,
if (rc)
return rc;
- if (c == '1' || c == 'y' || c == 'Y' || c == '0') {
+ if (strtobool(&c, &bv) == 0) {
#ifdef CONFIG_CIFS_STATS2
atomic_set(&totBufAllocCount, 0);
atomic_set(&totSmBufAllocCount, 0);
@@ -451,15 +452,14 @@ static ssize_t cifsFYI_proc_write(struct file *file, const char __user *buffer,
size_t count, loff_t *ppos)
{
char c;
+ bool bv;
int rc;
rc = get_user(c, buffer);
if (rc)
return rc;
- if (c == '0' || c == 'n' || c == 'N')
- cifsFYI = 0;
- else if (c == '1' || c == 'y' || c == 'Y')
- cifsFYI = 1;
+ if (strtobool(&c, &bv) == 0)
+ cifsFYI = bv;
else if ((c > '1') && (c <= '9'))
cifsFYI = (int) (c - '0'); /* see cifs_debug.h for meanings */
@@ -490,15 +490,18 @@ static ssize_t cifs_linux_ext_proc_write(struct file *file,
const char __user *buffer, size_t count, loff_t *ppos)
{
char c;
+ bool bv;
int rc;
rc = get_user(c, buffer);
if (rc)
return rc;
- if (c == '0' || c == 'n' || c == 'N')
- linuxExtEnabled = 0;
- else if (c == '1' || c == 'y' || c == 'Y')
- linuxExtEnabled = 1;
+
+ rc = strtobool(&c, &bv);
+ if (rc)
+ return rc;
+
+ linuxExtEnabled = bv;
return count;
}
@@ -527,15 +530,18 @@ static ssize_t cifs_lookup_cache_proc_write(struct file *file,
const char __user *buffer, size_t count, loff_t *ppos)
{
char c;
+ bool bv;
int rc;
rc = get_user(c, buffer);
if (rc)
return rc;
- if (c == '0' || c == 'n' || c == 'N')
- lookupCacheEnabled = 0;
- else if (c == '1' || c == 'y' || c == 'Y')
- lookupCacheEnabled = 1;
+
+ rc = strtobool(&c, &bv);
+ if (rc)
+ return rc;
+
+ lookupCacheEnabled = bv;
return count;
}
@@ -564,15 +570,18 @@ static ssize_t traceSMB_proc_write(struct file *file, const char __user *buffer,
size_t count, loff_t *ppos)
{
char c;
+ bool bv;
int rc;
rc = get_user(c, buffer);
if (rc)
return rc;
- if (c == '0' || c == 'n' || c == 'N')
- traceSMB = 0;
- else if (c == '1' || c == 'y' || c == 'Y')
- traceSMB = 1;
+
+ rc = strtobool(&c, &bv);
+ if (rc)
+ return rc;
+
+ traceSMB = bv;
return count;
}
@@ -630,6 +639,7 @@ static ssize_t cifs_security_flags_proc_write(struct file *file,
unsigned int flags;
char flags_string[12];
char c;
+ bool bv;
if ((count < 1) || (count > 11))
return -EINVAL;
@@ -642,11 +652,8 @@ static ssize_t cifs_security_flags_proc_write(struct file *file,
if (count < 3) {
/* single char or single char followed by null */
c = flags_string[0];
- if (c == '0' || c == 'n' || c == 'N') {
- global_secflags = CIFSSEC_DEF; /* default */
- return count;
- } else if (c == '1' || c == 'y' || c == 'Y') {
- global_secflags = CIFSSEC_MAX;
+ if (strtobool(&c, &bv) == 0) {
+ global_secflags = bv ? CIFSSEC_MAX : CIFSSEC_DEF;
return count;
} else if (!isdigit(c)) {
cifs_dbg(VFS, "Invalid SecurityFlags: %s\n",
--
2.1.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v4 2/3] cifs: convert to print_hex_dump() instead of custom implementation
[not found] ` <1409147384-20389-1-git-send-email-andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-08-27 13:49 ` [PATCH v4 1/3] cifs: call strtobool instead of custom implementation Andy Shevchenko
@ 2014-08-27 13:49 ` Andy Shevchenko
2014-09-17 19:07 ` Steve French
2014-08-27 13:49 ` [PATCH v4 3/3] cifs: convert printk(LEVEL...) to pr_<level> Andy Shevchenko
2014-10-22 14:03 ` [PATCH v4 0/3] cifs: small clean up series Andy Shevchenko
3 siblings, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2014-08-27 13:49 UTC (permalink / raw)
To: Steve French, linux-cifs-u79uwXL29TY76Z2rM5mHXA,
samba-technical-w/Ol4Ecudpl8XjKLYN78aQ, Jeff Layton,
Alexander Bokovoy
Cc: Andy Shevchenko
This patch converts custom dumper to use native print_hex_dump() instead. The
cifs_dump_mem() will have an offsets per each line which differs it from the
original code.
In the dump_smb() we may use native print_hex_dump() as well. It will show
slightly different output in ASCII part when character is unprintable,
otherwise it keeps same structure.
Signed-off-by: Andy Shevchenko <andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
---
fs/cifs/cifs_debug.c | 21 ++-------------------
fs/cifs/misc.c | 32 ++------------------------------
2 files changed, 4 insertions(+), 49 deletions(-)
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index 7c50bfa..14e082f 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -34,27 +34,10 @@
void
cifs_dump_mem(char *label, void *data, int length)
{
- int i, j;
- int *intptr = data;
- char *charptr = data;
- char buf[10], line[80];
-
printk(KERN_DEBUG "%s: dump of %d bytes of data at 0x%p\n",
label, length, data);
- for (i = 0; i < length; i += 16) {
- line[0] = 0;
- for (j = 0; (j < 4) && (i + j * 4 < length); j++) {
- sprintf(buf, " %08x", intptr[i / 4 + j]);
- strcat(line, buf);
- }
- buf[0] = ' ';
- buf[2] = 0;
- for (j = 0; (j < 16) && (i + j < length); j++) {
- buf[1] = isprint(charptr[i + j]) ? charptr[i + j] : '.';
- strcat(line, buf);
- }
- printk(KERN_DEBUG "%s\n", line);
- }
+ print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 16, 4,
+ data, length, true);
}
#ifdef CONFIG_CIFS_DEBUG
diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
index b7415d5..3379463 100644
--- a/fs/cifs/misc.c
+++ b/fs/cifs/misc.c
@@ -513,39 +513,11 @@ is_valid_oplock_break(char *buffer, struct TCP_Server_Info *srv)
void
dump_smb(void *buf, int smb_buf_length)
{
- int i, j;
- char debug_line[17];
- unsigned char *buffer = buf;
-
if (traceSMB == 0)
return;
- for (i = 0, j = 0; i < smb_buf_length; i++, j++) {
- if (i % 8 == 0) {
- /* have reached the beginning of line */
- printk(KERN_DEBUG "| ");
- j = 0;
- }
- printk("%0#4x ", buffer[i]);
- debug_line[2 * j] = ' ';
- if (isprint(buffer[i]))
- debug_line[1 + (2 * j)] = buffer[i];
- else
- debug_line[1 + (2 * j)] = '_';
-
- if (i % 8 == 7) {
- /* reached end of line, time to print ascii */
- debug_line[16] = 0;
- printk(" | %s\n", debug_line);
- }
- }
- for (; j < 8; j++) {
- printk(" ");
- debug_line[2 * j] = ' ';
- debug_line[1 + (2 * j)] = ' ';
- }
- printk(" | %s\n", debug_line);
- return;
+ print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_NONE, 8, 2, buf,
+ smb_buf_length, true);
}
void
--
2.1.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v4 3/3] cifs: convert printk(LEVEL...) to pr_<level>
[not found] ` <1409147384-20389-1-git-send-email-andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-08-27 13:49 ` [PATCH v4 1/3] cifs: call strtobool instead of custom implementation Andy Shevchenko
2014-08-27 13:49 ` [PATCH v4 2/3] cifs: convert to print_hex_dump() " Andy Shevchenko
@ 2014-08-27 13:49 ` Andy Shevchenko
2014-10-22 14:03 ` [PATCH v4 0/3] cifs: small clean up series Andy Shevchenko
3 siblings, 0 replies; 8+ messages in thread
From: Andy Shevchenko @ 2014-08-27 13:49 UTC (permalink / raw)
To: Steve French, linux-cifs-u79uwXL29TY76Z2rM5mHXA,
samba-technical-w/Ol4Ecudpl8XjKLYN78aQ, Jeff Layton,
Alexander Bokovoy
Cc: Andy Shevchenko
The useful macros embed message level in the name. Thus, it cleans up the code
a bit. In cases when it was plain printk() the conversion was done to info
level.
Signed-off-by: Andy Shevchenko <andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
---
fs/cifs/cifs_debug.c | 5 ++---
fs/cifs/cifs_debug.h | 7 +++----
fs/cifs/connect.c | 51 ++++++++++++++++++---------------------------------
fs/cifs/transport.c | 4 ++--
4 files changed, 25 insertions(+), 42 deletions(-)
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index 14e082f..9c56ef7 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -34,8 +34,7 @@
void
cifs_dump_mem(char *label, void *data, int length)
{
- printk(KERN_DEBUG "%s: dump of %d bytes of data at 0x%p\n",
- label, length, data);
+ pr_debug("%s: dump of %d bytes of data at 0x%p\n", label, length, data);
print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 16, 4,
data, length, true);
}
@@ -51,7 +50,7 @@ void cifs_vfs_err(const char *fmt, ...)
vaf.fmt = fmt;
vaf.va = &args;
- printk(KERN_ERR "CIFS VFS: %pV", &vaf);
+ pr_err("CIFS VFS: %pV", &vaf);
va_end(args);
}
diff --git a/fs/cifs/cifs_debug.h b/fs/cifs/cifs_debug.h
index c99b40f..f40fbac 100644
--- a/fs/cifs/cifs_debug.h
+++ b/fs/cifs/cifs_debug.h
@@ -53,13 +53,12 @@ __printf(1, 2) void cifs_vfs_err(const char *fmt, ...);
do { \
if (type == FYI) { \
if (cifsFYI & CIFS_INFO) { \
- printk(KERN_DEBUG "%s: " fmt, \
- __FILE__, ##__VA_ARGS__); \
+ pr_debug("%s: " fmt, __FILE__, ##__VA_ARGS__); \
} \
} else if (type == VFS) { \
cifs_vfs_err(fmt, ##__VA_ARGS__); \
} else if (type == NOISY && type != 0) { \
- printk(KERN_DEBUG fmt, ##__VA_ARGS__); \
+ pr_debug(fmt, ##__VA_ARGS__); \
} \
} while (0)
@@ -71,7 +70,7 @@ do { \
#define cifs_dbg(type, fmt, ...) \
do { \
if (0) \
- printk(KERN_DEBUG fmt, ##__VA_ARGS__); \
+ pr_debug(fmt, ##__VA_ARGS__); \
} while (0)
#endif
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 8a9fded..bd4d5e5 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -1434,9 +1434,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
vol->seal = 1;
break;
case Opt_noac:
- printk(KERN_WARNING "CIFS: Mount option noac not "
- "supported. Instead set "
- "/proc/fs/cifs/LookupCacheEnabled to 0\n");
+ pr_warn("CIFS: Mount option noac not supported. Instead set /proc/fs/cifs/LookupCacheEnabled to 0\n");
break;
case Opt_fsc:
#ifndef CONFIG_CIFS_FSCACHE
@@ -1566,7 +1564,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
if (strnlen(string, CIFS_MAX_USERNAME_LEN) >
CIFS_MAX_USERNAME_LEN) {
- printk(KERN_WARNING "CIFS: username too long\n");
+ pr_warn("CIFS: username too long\n");
goto cifs_parse_mount_err;
}
vol->username = kstrdup(string, GFP_KERNEL);
@@ -1630,8 +1628,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
temp_len = strlen(value);
vol->password = kzalloc(temp_len+1, GFP_KERNEL);
if (vol->password == NULL) {
- printk(KERN_WARNING "CIFS: no memory "
- "for password\n");
+ pr_warn("CIFS: no memory for password\n");
goto cifs_parse_mount_err;
}
@@ -1655,8 +1652,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
if (!cifs_convert_address(dstaddr, string,
strlen(string))) {
- printk(KERN_ERR "CIFS: bad ip= option (%s).\n",
- string);
+ pr_err("CIFS: bad ip= option (%s).\n", string);
goto cifs_parse_mount_err;
}
got_ip = true;
@@ -1668,15 +1664,13 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
if (strnlen(string, CIFS_MAX_DOMAINNAME_LEN)
== CIFS_MAX_DOMAINNAME_LEN) {
- printk(KERN_WARNING "CIFS: domain name too"
- " long\n");
+ pr_warn("CIFS: domain name too long\n");
goto cifs_parse_mount_err;
}
vol->domainname = kstrdup(string, GFP_KERNEL);
if (!vol->domainname) {
- printk(KERN_WARNING "CIFS: no memory "
- "for domainname\n");
+ pr_warn("CIFS: no memory for domainname\n");
goto cifs_parse_mount_err;
}
cifs_dbg(FYI, "Domain name set\n");
@@ -1689,8 +1683,8 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
if (!cifs_convert_address(
(struct sockaddr *)&vol->srcaddr,
string, strlen(string))) {
- printk(KERN_WARNING "CIFS: Could not parse"
- " srcaddr: %s\n", string);
+ pr_warn("CIFS: Could not parse srcaddr: %s\n",
+ string);
goto cifs_parse_mount_err;
}
break;
@@ -1700,8 +1694,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
goto out_nomem;
if (strnlen(string, 1024) >= 65) {
- printk(KERN_WARNING "CIFS: iocharset name "
- "too long.\n");
+ pr_warn("CIFS: iocharset name too long.\n");
goto cifs_parse_mount_err;
}
@@ -1709,8 +1702,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
vol->iocharset = kstrdup(string,
GFP_KERNEL);
if (!vol->iocharset) {
- printk(KERN_WARNING "CIFS: no memory"
- "for charset\n");
+ pr_warn("CIFS: no memory for charset\n");
goto cifs_parse_mount_err;
}
}
@@ -1741,9 +1733,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
* set at top of the function
*/
if (i == RFC1001_NAME_LEN && string[i] != 0)
- printk(KERN_WARNING "CIFS: netbiosname"
- " longer than 15 truncated.\n");
-
+ pr_warn("CIFS: netbiosname longer than 15 truncated.\n");
break;
case Opt_servern:
/* servernetbiosname specified override *SMBSERVER */
@@ -1769,8 +1759,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
/* The string has 16th byte zero still from
set at top of the function */
if (i == RFC1001_NAME_LEN && string[i] != 0)
- printk(KERN_WARNING "CIFS: server net"
- "biosname longer than 15 truncated.\n");
+ pr_warn("CIFS: server netbiosname longer than 15 truncated.\n");
break;
case Opt_ver:
string = match_strdup(args);
@@ -1782,8 +1771,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
break;
}
/* For all other value, error */
- printk(KERN_WARNING "CIFS: Invalid version"
- " specified\n");
+ pr_warn("CIFS: Invalid version specified\n");
goto cifs_parse_mount_err;
case Opt_vers:
string = match_strdup(args);
@@ -1824,7 +1812,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
}
if (!sloppy && invalid) {
- printk(KERN_ERR "CIFS: Unknown mount option \"%s\"\n", invalid);
+ pr_err("CIFS: Unknown mount option \"%s\"\n", invalid);
goto cifs_parse_mount_err;
}
@@ -1850,8 +1838,7 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
/* No ip= option specified? Try to get it from UNC */
if (!cifs_convert_address(dstaddr, &vol->UNC[2],
strlen(&vol->UNC[2]))) {
- printk(KERN_ERR "Unable to determine destination "
- "address.\n");
+ pr_err("Unable to determine destination address.\n");
goto cifs_parse_mount_err;
}
}
@@ -1862,20 +1849,18 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
if (uid_specified)
vol->override_uid = override_uid;
else if (override_uid == 1)
- printk(KERN_NOTICE "CIFS: ignoring forceuid mount option "
- "specified with no uid= option.\n");
+ pr_notice("CIFS: ignoring forceuid mount option specified with no uid= option.\n");
if (gid_specified)
vol->override_gid = override_gid;
else if (override_gid == 1)
- printk(KERN_NOTICE "CIFS: ignoring forcegid mount option "
- "specified with no gid= option.\n");
+ pr_notice("CIFS: ignoring forcegid mount option specified with no gid= option.\n");
kfree(mountdata_copy);
return 0;
out_nomem:
- printk(KERN_WARNING "Could not allocate temporary buffer\n");
+ pr_warn("Could not allocate temporary buffer\n");
cifs_parse_mount_err:
kfree(string);
kfree(mountdata_copy);
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
index 9d087f4..126f46b 100644
--- a/fs/cifs/transport.c
+++ b/fs/cifs/transport.c
@@ -99,9 +99,9 @@ DeleteMidQEntry(struct mid_q_entry *midEntry)
something is wrong, unless it is quite a slow link or server */
if ((now - midEntry->when_alloc) > HZ) {
if ((cifsFYI & CIFS_TIMER) && (midEntry->command != command)) {
- printk(KERN_DEBUG " CIFS slow rsp: cmd %d mid %llu",
+ pr_debug(" CIFS slow rsp: cmd %d mid %llu",
midEntry->command, midEntry->mid);
- printk(" A: 0x%lx S: 0x%lx R: 0x%lx\n",
+ pr_info(" A: 0x%lx S: 0x%lx R: 0x%lx\n",
now - midEntry->when_alloc,
now - midEntry->when_sent,
now - midEntry->when_received);
--
2.1.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v4 2/3] cifs: convert to print_hex_dump() instead of custom implementation
2014-08-27 13:49 ` [PATCH v4 2/3] cifs: convert to print_hex_dump() " Andy Shevchenko
@ 2014-09-17 19:07 ` Steve French
[not found] ` <CAH2r5muAtFu9YT8etmTvoFs-SJpeANGLLUtdRQaoj3FN+yxozw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Steve French @ 2014-09-17 19:07 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Steve French, linux-cifs, Jeff Layton, Alexander Bokovoy,
samba-technical
Do you have a sample for what the output change looks like?
On Wed, Aug 27, 2014 at 8:49 AM, Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
> This patch converts custom dumper to use native print_hex_dump() instead. The
> cifs_dump_mem() will have an offsets per each line which differs it from the
> original code.
>
> In the dump_smb() we may use native print_hex_dump() as well. It will show
> slightly different output in ASCII part when character is unprintable,
> otherwise it keeps same structure.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> fs/cifs/cifs_debug.c | 21 ++-------------------
> fs/cifs/misc.c | 32 ++------------------------------
> 2 files changed, 4 insertions(+), 49 deletions(-)
>
> diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
> index 7c50bfa..14e082f 100644
> --- a/fs/cifs/cifs_debug.c
> +++ b/fs/cifs/cifs_debug.c
> @@ -34,27 +34,10 @@
> void
> cifs_dump_mem(char *label, void *data, int length)
> {
> - int i, j;
> - int *intptr = data;
> - char *charptr = data;
> - char buf[10], line[80];
> -
> printk(KERN_DEBUG "%s: dump of %d bytes of data at 0x%p\n",
> label, length, data);
> - for (i = 0; i < length; i += 16) {
> - line[0] = 0;
> - for (j = 0; (j < 4) && (i + j * 4 < length); j++) {
> - sprintf(buf, " %08x", intptr[i / 4 + j]);
> - strcat(line, buf);
> - }
> - buf[0] = ' ';
> - buf[2] = 0;
> - for (j = 0; (j < 16) && (i + j < length); j++) {
> - buf[1] = isprint(charptr[i + j]) ? charptr[i + j] : '.';
> - strcat(line, buf);
> - }
> - printk(KERN_DEBUG "%s\n", line);
> - }
> + print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 16, 4,
> + data, length, true);
> }
>
> #ifdef CONFIG_CIFS_DEBUG
> diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
> index b7415d5..3379463 100644
> --- a/fs/cifs/misc.c
> +++ b/fs/cifs/misc.c
> @@ -513,39 +513,11 @@ is_valid_oplock_break(char *buffer, struct TCP_Server_Info *srv)
> void
> dump_smb(void *buf, int smb_buf_length)
> {
> - int i, j;
> - char debug_line[17];
> - unsigned char *buffer = buf;
> -
> if (traceSMB == 0)
> return;
>
> - for (i = 0, j = 0; i < smb_buf_length; i++, j++) {
> - if (i % 8 == 0) {
> - /* have reached the beginning of line */
> - printk(KERN_DEBUG "| ");
> - j = 0;
> - }
> - printk("%0#4x ", buffer[i]);
> - debug_line[2 * j] = ' ';
> - if (isprint(buffer[i]))
> - debug_line[1 + (2 * j)] = buffer[i];
> - else
> - debug_line[1 + (2 * j)] = '_';
> -
> - if (i % 8 == 7) {
> - /* reached end of line, time to print ascii */
> - debug_line[16] = 0;
> - printk(" | %s\n", debug_line);
> - }
> - }
> - for (; j < 8; j++) {
> - printk(" ");
> - debug_line[2 * j] = ' ';
> - debug_line[1 + (2 * j)] = ' ';
> - }
> - printk(" | %s\n", debug_line);
> - return;
> + print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_NONE, 8, 2, buf,
> + smb_buf_length, true);
> }
>
> void
> --
> 2.1.0
>
--
Thanks,
Steve
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v4 2/3] cifs: convert to print_hex_dump() instead of custom implementation
[not found] ` <CAH2r5muAtFu9YT8etmTvoFs-SJpeANGLLUtdRQaoj3FN+yxozw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
@ 2014-09-18 11:06 ` Andy Shevchenko
0 siblings, 0 replies; 8+ messages in thread
From: Andy Shevchenko @ 2014-09-18 11:06 UTC (permalink / raw)
To: Steve French
Cc: Steve French, linux-cifs-u79uwXL29TY76Z2rM5mHXA, samba-technical,
Jeff Layton, Alexander Bokovoy
On Wed, 2014-09-17 at 14:07 -0500, Steve French wrote:
> Do you have a sample for what the output change looks like?
>
Just for some random data (only dumps) on x86_64.
cifs_dump_mem():
[ 13.842342] 00000000: a0000222 ffffffff a0000282 ffffffff "...............
[ 13.850140] 00000010: 00000001 00000000 a000028f ffffffff ................
[ 13.857930] 00000020: 00000009 00000000 a00002a2 ffffffff ................
[ 13.865726] 00000030: 00000021 00000000 00000000 00000000 !...............
dump_smb():
[ 14.859103] 0222 a000 ffff ffff 0282 a000 ffff ffff "...............
[ 14.866313] 0001 0000 0000 0000 028f a000 ffff ffff ................
[ 14.873528] 0009 0000 0000 0000 02a2 a000 ffff ffff ................
[ 14.880736] 0021 0000 0000 0000 0000 0000 0000 0000 !...............
> On Wed, Aug 27, 2014 at 8:49 AM, Andy Shevchenko
> <andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> wrote:
> > This patch converts custom dumper to use native print_hex_dump() instead. The
> > cifs_dump_mem() will have an offsets per each line which differs it from the
> > original code.
> >
> > In the dump_smb() we may use native print_hex_dump() as well. It will show
> > slightly different output in ASCII part when character is unprintable,
> > otherwise it keeps same structure.
> >
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
> > ---
> > fs/cifs/cifs_debug.c | 21 ++-------------------
> > fs/cifs/misc.c | 32 ++------------------------------
> > 2 files changed, 4 insertions(+), 49 deletions(-)
> >
> > diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
> > index 7c50bfa..14e082f 100644
> > --- a/fs/cifs/cifs_debug.c
> > +++ b/fs/cifs/cifs_debug.c
> > @@ -34,27 +34,10 @@
> > void
> > cifs_dump_mem(char *label, void *data, int length)
> > {
> > - int i, j;
> > - int *intptr = data;
> > - char *charptr = data;
> > - char buf[10], line[80];
> > -
> > printk(KERN_DEBUG "%s: dump of %d bytes of data at 0x%p\n",
> > label, length, data);
> > - for (i = 0; i < length; i += 16) {
> > - line[0] = 0;
> > - for (j = 0; (j < 4) && (i + j * 4 < length); j++) {
> > - sprintf(buf, " %08x", intptr[i / 4 + j]);
> > - strcat(line, buf);
> > - }
> > - buf[0] = ' ';
> > - buf[2] = 0;
> > - for (j = 0; (j < 16) && (i + j < length); j++) {
> > - buf[1] = isprint(charptr[i + j]) ? charptr[i + j] : '.';
> > - strcat(line, buf);
> > - }
> > - printk(KERN_DEBUG "%s\n", line);
> > - }
> > + print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 16, 4,
> > + data, length, true);
> > }
> >
> > #ifdef CONFIG_CIFS_DEBUG
> > diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
> > index b7415d5..3379463 100644
> > --- a/fs/cifs/misc.c
> > +++ b/fs/cifs/misc.c
> > @@ -513,39 +513,11 @@ is_valid_oplock_break(char *buffer, struct TCP_Server_Info *srv)
> > void
> > dump_smb(void *buf, int smb_buf_length)
> > {
> > - int i, j;
> > - char debug_line[17];
> > - unsigned char *buffer = buf;
> > -
> > if (traceSMB == 0)
> > return;
> >
> > - for (i = 0, j = 0; i < smb_buf_length; i++, j++) {
> > - if (i % 8 == 0) {
> > - /* have reached the beginning of line */
> > - printk(KERN_DEBUG "| ");
> > - j = 0;
> > - }
> > - printk("%0#4x ", buffer[i]);
> > - debug_line[2 * j] = ' ';
> > - if (isprint(buffer[i]))
> > - debug_line[1 + (2 * j)] = buffer[i];
> > - else
> > - debug_line[1 + (2 * j)] = '_';
> > -
> > - if (i % 8 == 7) {
> > - /* reached end of line, time to print ascii */
> > - debug_line[16] = 0;
> > - printk(" | %s\n", debug_line);
> > - }
> > - }
> > - for (; j < 8; j++) {
> > - printk(" ");
> > - debug_line[2 * j] = ' ';
> > - debug_line[1 + (2 * j)] = ' ';
> > - }
> > - printk(" | %s\n", debug_line);
> > - return;
> > + print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_NONE, 8, 2, buf,
> > + smb_buf_length, true);
> > }
> >
> > void
> > --
> > 2.1.0
> >
>
>
>
--
Andy Shevchenko <andriy.shevchenko-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Intel Finland Oy
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v4 0/3] cifs: small clean up series
[not found] ` <1409147384-20389-1-git-send-email-andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
` (2 preceding siblings ...)
2014-08-27 13:49 ` [PATCH v4 3/3] cifs: convert printk(LEVEL...) to pr_<level> Andy Shevchenko
@ 2014-10-22 14:03 ` Andy Shevchenko
[not found] ` <1413986632.2396.38.camel-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
3 siblings, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2014-10-22 14:03 UTC (permalink / raw)
To: Steve French
Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA,
samba-technical-w/Ol4Ecudpl8XjKLYN78aQ, Jeff Layton,
Alexander Bokovoy
On Wed, 2014-08-27 at 16:49 +0300, Andy Shevchenko wrote:
> This is small clean up series against CIFS kernel module.
>
Ping? Is there any comments?
> Changes since v3:
> - rebase on top of recent linux-next
>
> Changes since v2:
> - patch 1 got ACK and Reviwed-by tags
> - patch 2 incorporates new piece of code similar that it used to have already,
> thus tags were dropped for this round
> - new patch 3
>
> Andy Shevchenko (3):
> cifs: call strtobool instead of custom implementation
> cifs: convert to print_hex_dump() instead of custom implementation
> cifs: convert printk(LEVEL...) to pr_<level>
>
> fs/cifs/cifs_debug.c | 77 ++++++++++++++++++++++------------------------------
> fs/cifs/cifs_debug.h | 7 ++---
> fs/cifs/connect.c | 51 ++++++++++++----------------------
> fs/cifs/misc.c | 32 ++--------------------
> fs/cifs/transport.c | 4 +--
> 5 files changed, 58 insertions(+), 113 deletions(-)
>
--
Andy Shevchenko <andriy.shevchenko-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Intel Finland Oy
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v4 0/3] cifs: small clean up series
[not found] ` <1413986632.2396.38.camel-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
@ 2014-12-08 5:35 ` Steve French
0 siblings, 0 replies; 8+ messages in thread
From: Steve French @ 2014-12-08 5:35 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Steve French, linux-cifs-u79uwXL29TY76Z2rM5mHXA, samba-technical,
Jeff Layton, Alexander Bokovoy
series merged into cifs-2.6.git
On Wed, Oct 22, 2014 at 9:03 AM, Andy Shevchenko
<andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> wrote:
> On Wed, 2014-08-27 at 16:49 +0300, Andy Shevchenko wrote:
>> This is small clean up series against CIFS kernel module.
>>
>
> Ping? Is there any comments?
>
>> Changes since v3:
>> - rebase on top of recent linux-next
>>
>> Changes since v2:
>> - patch 1 got ACK and Reviwed-by tags
>> - patch 2 incorporates new piece of code similar that it used to have already,
>> thus tags were dropped for this round
>> - new patch 3
>>
>> Andy Shevchenko (3):
>> cifs: call strtobool instead of custom implementation
>> cifs: convert to print_hex_dump() instead of custom implementation
>> cifs: convert printk(LEVEL...) to pr_<level>
>>
>> fs/cifs/cifs_debug.c | 77 ++++++++++++++++++++++------------------------------
>> fs/cifs/cifs_debug.h | 7 ++---
>> fs/cifs/connect.c | 51 ++++++++++++----------------------
>> fs/cifs/misc.c | 32 ++--------------------
>> fs/cifs/transport.c | 4 +--
>> 5 files changed, 58 insertions(+), 113 deletions(-)
>>
>
>
> --
> Andy Shevchenko <andriy.shevchenko-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> Intel Finland Oy
>
--
Thanks,
Steve
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-12-08 5:35 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-27 13:49 [PATCH v4 0/3] cifs: small clean up series Andy Shevchenko
[not found] ` <1409147384-20389-1-git-send-email-andriy.shevchenko-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-08-27 13:49 ` [PATCH v4 1/3] cifs: call strtobool instead of custom implementation Andy Shevchenko
2014-08-27 13:49 ` [PATCH v4 2/3] cifs: convert to print_hex_dump() " Andy Shevchenko
2014-09-17 19:07 ` Steve French
[not found] ` <CAH2r5muAtFu9YT8etmTvoFs-SJpeANGLLUtdRQaoj3FN+yxozw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-09-18 11:06 ` Andy Shevchenko
2014-08-27 13:49 ` [PATCH v4 3/3] cifs: convert printk(LEVEL...) to pr_<level> Andy Shevchenko
2014-10-22 14:03 ` [PATCH v4 0/3] cifs: small clean up series Andy Shevchenko
[not found] ` <1413986632.2396.38.camel-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-12-08 5:35 ` Steve French
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.