diff -NurpP --minimal linux-2.6.36-vs2.3.0.36.33/fs/namei.c linux-2.6.36-vs2.3.0.36.34/fs/namei.c --- linux-2.6.36-vs2.3.0.36.33/fs/namei.c 2010-10-21 14:45:53.000000000 +0200 +++ linux-2.6.36-vs2.3.0.36.34/fs/namei.c 2010-10-21 17:45:49.000000000 +0200 @@ -848,7 +848,8 @@ done: return 0; hidden: - vxwprintk_task(1, "did lookup hidden %s:%p[#%d,%lu] »%s/%.*s«.", + vxwprintk_task(1, + "did lookup hidden %s:%p[#%d,%lu] " VS_Q("%s/%.*s") ".", inode->i_sb->s_id, inode, inode->i_tag, inode->i_ino, vxd_path(&nd->path), name->len, name->name); dput(dentry); @@ -2968,7 +2969,8 @@ struct dentry *cow_break_link(const char char *to, *path, pad='\251'; loff_t size; - vxdprintk(VXD_CBIT(misc, 1), "cow_break_link(»%s«)", pathname); + vxdprintk(VXD_CBIT(misc, 1), + "cow_break_link(" VS_Q("%s") ")", pathname); path = kmalloc(PATH_MAX, GFP_KERNEL); ret = -ENOMEM; if (!path) @@ -2985,7 +2987,8 @@ struct dentry *cow_break_link(const char to = d_path(&old_path, path, PATH_MAX-2); pathlen = strlen(to); - vxdprintk(VXD_CBIT(misc, 2), "old path »%s« [»%.*s«:%d]", to, + vxdprintk(VXD_CBIT(misc, 2), + "old path " VS_Q("%s") " [" VS_Q("%.*s") ":%d]", to, old_path.dentry->d_name.len, old_path.dentry->d_name.name, old_path.dentry->d_name.len); @@ -2996,7 +2999,7 @@ retry: if (pad <= '\240') goto out_rel_old; - vxdprintk(VXD_CBIT(misc, 1), "temp copy »%s«", to); + vxdprintk(VXD_CBIT(misc, 1), "temp copy " VS_Q("%s"), to); /* dir_nd will have refs to dentry and mnt */ ret = path_lookup(to, LOOKUP_PARENT | LOOKUP_OPEN | LOOKUP_CREATE, &dir_nd); @@ -3015,7 +3018,8 @@ retry: goto retry; } vxdprintk(VXD_CBIT(misc, 2), - "lookup_create(new): %p [»%.*s«:%d]", new_path.dentry, + "lookup_create(new): %p [" VS_Q("%.*s") ":%d]", + new_path.dentry, new_path.dentry->d_name.len, new_path.dentry->d_name.name, new_path.dentry->d_name.len); dir = dir_nd.path.dentry; @@ -3091,7 +3095,7 @@ retry: goto out_unlock; vxdprintk(VXD_CBIT(misc, 2), - "vfs_rename: [»%*s«:%d] -> [»%*s«:%d]", + "vfs_rename: [" VS_Q("%*s") ":%d] -> [" VS_Q("%*s") ":%d]", new_path.dentry->d_name.len, new_path.dentry->d_name.name, new_path.dentry->d_name.len, old_path.dentry->d_name.len, old_path.dentry->d_name.name, @@ -3136,7 +3140,8 @@ out_redo: new_path.dentry = old_nd.path.dentry; vxdprintk(VXD_CBIT(misc, 2), - "path_lookup(redo): %p [»%.*s«:%d]", new_path.dentry, + "path_lookup(redo): %p [" VS_Q("%.*s") ":%d]", + new_path.dentry, new_path.dentry->d_name.len, new_path.dentry->d_name.name, new_path.dentry->d_name.len); dget(new_path.dentry); diff -NurpP --minimal linux-2.6.36-vs2.3.0.36.33/include/linux/vserver/debug.h linux-2.6.36-vs2.3.0.36.34/include/linux/vserver/debug.h --- linux-2.6.36-vs2.3.0.36.33/include/linux/vserver/debug.h 2010-10-21 13:09:36.000000000 +0200 +++ linux-2.6.36-vs2.3.0.36.34/include/linux/vserver/debug.h 2010-10-21 18:35:25.000000000 +0200 @@ -10,6 +10,19 @@ imajor((d)->bd_inode), iminor((d)->bd_inode) #define VXF_DEV "%p[%lu,%d:%d]" +#if defined(CONFIG_QUOTES_UTF8) +#define VS_Q_LQM "\xc2\xbb" +#define VS_Q_RQM "\xc2\xab" +#elif defined(CONFIG_QUOTES_ASCII) +#define VS_Q_LQM "\x27" +#define VS_Q_RQM "\x27" +#else +#define VS_Q_LQM "\xbb" +#define VS_Q_RQM "\xab" +#endif + +#define VS_Q(f) VS_Q_LQM f VS_Q_RQM + #define vxd_path(p) \ ({ static char _buffer[PATH_MAX]; \ @@ -86,7 +99,7 @@ void dump_vx_info_inactive(int); #ifdef CONFIG_VSERVER_WARN #define VX_WARNLEVEL KERN_WARNING "vxW: " -#define VX_WARN_TASK "[»%s«,%u:#%u|%u|%u] " +#define VX_WARN_TASK "[" VS_Q("%s") ",%u:#%u|%u|%u] " #define VX_WARN_XID "[xid #%u] " #define VX_WARN_NID "[nid #%u] " #define VX_WARN_TAG "[tag #%u] " diff -NurpP --minimal linux-2.6.36-vs2.3.0.36.33/include/linux/vs_inet.h linux-2.6.36-vs2.3.0.36.34/include/linux/vs_inet.h --- linux-2.6.36-vs2.3.0.36.33/include/linux/vs_inet.h 2010-10-21 14:48:51.000000000 +0200 +++ linux-2.6.36-vs2.3.0.36.34/include/linux/vs_inet.h 2010-10-21 17:41:35.000000000 +0200 @@ -188,7 +188,8 @@ int __v4_addr_match_socket(const struct static inline int nx_dev_visible(struct nx_info *nxi, struct net_device *dev) { - vxdprintk(VXD_CBIT(net, 1), "nx_dev_visible(%p[#%u],%p »%s«) %d", + vxdprintk(VXD_CBIT(net, 1), + "nx_dev_visible(%p[#%u],%p " VS_Q("%s") ") %d", nxi, nxi ? nxi->nx_id : 0, dev, dev->name, nxi ? dev_in_nx_info(dev, nxi) : 0); diff -NurpP --minimal linux-2.6.36-vs2.3.0.36.33/kernel/vserver/inode.c linux-2.6.36-vs2.3.0.36.34/kernel/vserver/inode.c --- linux-2.6.36-vs2.3.0.36.33/kernel/vserver/inode.c 2010-10-21 14:46:31.000000000 +0200 +++ linux-2.6.36-vs2.3.0.36.34/kernel/vserver/inode.c 2010-10-21 17:40:44.000000000 +0200 @@ -358,7 +358,7 @@ int dx_parse_tag(char *string, tag_t *ta token = match_token(p, tokens, args); vxdprintk(VXD_CBIT(tag, 7), - "dx_parse_tag(»%s«): %d:#%d", + "dx_parse_tag(" VS_Q("%s") "): %d:#%d", p, token, option); switch (token) { diff -NurpP --minimal linux-2.6.36-vs2.3.0.36.33/kernel/vserver/Kconfig linux-2.6.36-vs2.3.0.36.34/kernel/vserver/Kconfig --- linux-2.6.36-vs2.3.0.36.33/kernel/vserver/Kconfig 2010-10-21 13:09:36.000000000 +0200 +++ linux-2.6.36-vs2.3.0.36.34/kernel/vserver/Kconfig 2010-10-21 18:34:45.000000000 +0200 @@ -239,6 +239,29 @@ config VSERVER_LEGACY_MEM older tools happy in the face of memory cgroups +choice + prompt "Quotes used in debug and warn messages" + default QUOTES_ISO8859 + +config QUOTES_ISO8859 + bool "Extended ASCII (ISO 8859) angle quotes" + help + This uses the extended ASCII characters \xbb + and \xab for quoting file and process names. + +config QUOTES_UTF8 + bool "UTF-8 angle quotes" + help + This uses the the UTF-8 sequences for angle + quotes to quote file and process names. + +config QUOTES_ASCII + bool "ASCII single quotes" + help + This uses the ASCII single quote character + (\x27) to quote file and process names. + +endchoice endmenu