xlist: implement copy constructor

...so that I can have a std::map of them.

Signed-off-by: John Spray <john.spray@redhat.com>
mds: keep per-client revoking caps list

...to avoid doing an O(caps) scan to find out
which clients are responsible for any late-revoking
caps during health checks.

Signed-off-by: John Spray <john.spray@redhat.com>
mds: limit number of caps inspected in caps_tick

This is to avoid hitting an O(caps) loop in the worst
cast scenario.  This mechanism is a little crude but
should be superceded at some point by admin socket
functionality to inspect session caps so that we
don't need to spit out this level of detail in logs.

Signed-off-by: John Spray <john.spray@redhat.com>
mds: collapse numerous client warnings into one

...to avoid sending O(N_clients) sized beacons.

Fixes: #9375

Signed-off-by: John Spray <john.spray@redhat.com>
messages: add cephfs client metadata to MClientSession

Signed-off-by: John Spray <john.spray@redhat.com>
mds: store client metadata on Session

Signed-off-by: John Spray <john.spray@redhat.com>
mds: include client metadata in `session ls`

Signed-off-by: John Spray <john.spray@redhat.com>
ceph_fuse: refactor init to make mount_point accessible

...so that we can read out the mount point between init
and start() in order to feed it to Client before it connects
to the MDS.

Signed-off-by: John Spray <john.spray@redhat.com>
client: send hostname in client metadata

Signed-off-by: John Spray <john.spray@redhat.com>
client: support inserting extra metadata fields

Signed-off-by: John Spray <john.spray@redhat.com>
ceph_fuse: include mount point in client metadata

Signed-off-by: John Spray <john.spray@redhat.com>
mds: generate friendly name for client sessions

...from the client metadata, for use in health messages.

Signed-off-by: John Spray <john.spray@redhat.com>
messages: make new ClientSession send version 1

...when there is no metadata to be sent.  This allows
Client instances to send the new version with metadata
in it, while Server will send the old version, which
is needed by the kernel client, because the kernel
client does not tolerate any trailing data.

Signed-off-by: John Spray <john.spray@redhat.com>