Merge tag 'nfsd-5.3' of git://linux-nfs.org/~bfields/linux
Pull nfsd updates from Bruce Fields:
"Highlights:
- Add a new /proc/fs/nfsd/clients/ directory which exposes some
long-requested information about NFSv4 clients (like open files)
and allows forced revocation of client state.
- Replace the global duplicate reply cache by a cache per network
namespace; previously, a request in one network namespace could
incorrectly match an entry from another, though we haven't seen
this in production. This is the last remaining container bug that
I'm aware of; at this point you should be able to run separate
nfsd's in each network namespace, each with their own set of
exports, and everything should work.
- Cleanup and modify lock code to show the pid of lockd as the owner
of NLM locks. This is the correct version of the bugfix originally
attempted in b8eee0e90f
("lockd: Show pid of lockd for remote
locks")"
* tag 'nfsd-5.3' of git://linux-nfs.org/~bfields/linux: (34 commits)
nfsd: Make __get_nfsdfs_client() static
nfsd: Make two functions static
nfsd: Fix misuse of strlcpy
sunrpc/cache: remove the exporting of cache_seq_next
nfsd: decode implementation id
nfsd: create xdr_netobj_dup helper
nfsd: allow forced expiration of NFSv4 clients
nfsd: create get_nfsdfs_clp helper
nfsd4: show layout stateids
nfsd: show lock and deleg stateids
nfsd4: add file to display list of client's opens
nfsd: add more information to client info file
nfsd: escape high characters in binary data
nfsd: copy client's address including port number to cl_addr
nfsd4: add a client info file
nfsd: make client/ directory names small ints
nfsd: add nfsd/clients directory
nfsd4: use reference count to free client
nfsd: rename cl_refcount
nfsd: persist nfsd filesystem across mounts
...
This commit is contained in:
@@ -540,6 +540,25 @@ int string_escape_mem(const char *src, size_t isz, char *dst, size_t osz,
|
||||
}
|
||||
EXPORT_SYMBOL(string_escape_mem);
|
||||
|
||||
int string_escape_mem_ascii(const char *src, size_t isz, char *dst,
|
||||
size_t osz)
|
||||
{
|
||||
char *p = dst;
|
||||
char *end = p + osz;
|
||||
|
||||
while (isz--) {
|
||||
unsigned char c = *src++;
|
||||
|
||||
if (!isprint(c) || !isascii(c) || c == '"' || c == '\\')
|
||||
escape_hex(c, &p, end);
|
||||
else
|
||||
escape_passthrough(c, &p, end);
|
||||
}
|
||||
|
||||
return p - dst;
|
||||
}
|
||||
EXPORT_SYMBOL(string_escape_mem_ascii);
|
||||
|
||||
/*
|
||||
* Return an allocated string that has been escaped of special characters
|
||||
* and double quotes, making it safe to log in quotes.
|
||||
|
Reference in New Issue
Block a user