History

ceph: add flag to designate that a request is asynchronous

...and ensure that such requests are never queued. The MDS has need to know that a request is asynchronous so add flags and proper infrastructure for that. Also, delegated inode numbers and directory caps are associated with the session, so ensure that async requests are always transmitted on the first attempt and are never queued to wait for session reestablishment. If it does end up looking like we'll need to queue the request, then have it return -EJUKEBOX so the caller can reattempt with a synchronous request.

Jeff Layton committed 6 years ago

Commit 3bb48b41 parent c7e4f854 files · +20 −2Browse files

Showing the changes to include/linux (1 of 4 files). Show all

Unified · Split

include/linux/ceph/ceph_fs.h+3−2
@@ -444,8 +444,9 @@ union ceph_mds_request_args { · 443 unmodified lines
444 } __attribute__ ((packed)) lookupino;444 } __attribute__ ((packed)) lookupino;
445} __attribute__ ((packed));445} __attribute__ ((packed));
446 446
447#define CEPH_MDS_FLAG_REPLAY 1 /* this is a replayed op */447#define CEPH_MDS_FLAG_REPLAY 1 /* this is a replayed op */
448#define CEPH_MDS_FLAG_WANT_DENTRY 2 /* want dentry in reply */448#define CEPH_MDS_FLAG_WANT_DENTRY 2 /* want dentry in reply */
449#define CEPH_MDS_FLAG_ASYNC 4 /* request is asynchronous */
449 450
450struct ceph_mds_request_head {451struct ceph_mds_request_head {
451 __le64 oldest_client_tid;452 __le64 oldest_client_tid;