diff options
author | Jeff Layton <jlayton@kernel.org> | 2022-02-26 06:33:03 -0500 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2023-08-22 09:01:47 +0200 |
commit | 03bc06c7b0bd8d86b9f17f459acaeb1283ba2700 (patch) | |
tree | 4fac68b0dbfa895f1851e00653a8e1a2ca7f217f /fs/ceph/super.h | |
parent | f628d799972799023d32c2542bb2639eb8c4f84e (diff) | |
download | lwn-03bc06c7b0bd8d86b9f17f459acaeb1283ba2700.tar.gz lwn-03bc06c7b0bd8d86b9f17f459acaeb1283ba2700.zip |
ceph: add new mount option to enable sparse reads
Add a new mount option that has the client issue sparse reads instead of
normal ones. The callers now preallocate an sparse extent buffer that
the libceph receive code can populate and hand back after the operation
completes.
After a successful sparse read, we can't use the req->r_result value to
determine the amount of data "read", so instead we set the received
length to be from the end of the last extent in the buffer. Any
interstitial holes will have been filled by the receive code.
[ xiubli: fix a double free on req reported by Ilya ]
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Xiubo Li <xiubli@redhat.com>
Reviewed-and-tested-by: Luís Henriques <lhenriques@suse.de>
Reviewed-by: Milind Changire <mchangir@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph/super.h')
-rw-r--r-- | fs/ceph/super.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 3bfddf34d488..b9cad57ce606 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -42,6 +42,7 @@ #define CEPH_MOUNT_OPT_NOCOPYFROM (1<<14) /* don't use RADOS 'copy-from' op */ #define CEPH_MOUNT_OPT_ASYNC_DIROPS (1<<15) /* allow async directory ops */ #define CEPH_MOUNT_OPT_NOPAGECACHE (1<<16) /* bypass pagecache altogether */ +#define CEPH_MOUNT_OPT_SPARSEREAD (1<<17) /* always do sparse reads */ #define CEPH_MOUNT_OPT_DEFAULT \ (CEPH_MOUNT_OPT_DCACHE | \ |