Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DAOS-15682 dfuse: Perform reads in larger chunks. #14212

Merged
merged 27 commits into from
Sep 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
5a2ca11
DAOS-15682 dfuse: Perform reads in larger chunks.
ashleypittman Apr 22, 2024
2fa4c31
Merge branch 'master' into amd/dfuse-chunk-read
ashleypittman Apr 23, 2024
79fda3b
Merge branch 'master' into amd/dfuse-chunk-read
ashleypittman Apr 24, 2024
aae10fd
Merge branch 'master' into amd/dfuse-chunk-read
ashleypittman Apr 25, 2024
11eb551
Merge branch 'master' into amd/dfuse-chunk-read
ashleypittman Apr 26, 2024
5ca6b95
Check the size after read.
ashleypittman Apr 26, 2024
3e98bf3
Set the len to 0.
ashleypittman Apr 26, 2024
be55b28
Fix an issue with position.
ashleypittman Apr 26, 2024
0986e7c
Merge branch 'master' into amd/dfuse-chunk-read
ashleypittman Apr 26, 2024
2a4173a
Log when there is a short read.
ashleypittman Apr 26, 2024
a963751
Merge branch 'master' into amd/dfuse-chunk-read
ashleypittman Apr 26, 2024
1dd78ea
Improve error logging.
ashleypittman Apr 26, 2024
8691c67
Make bucket larger, 64 bit type.
ashleypittman Apr 28, 2024
fa5689f
Turn off debugging again.
ashleypittman Apr 28, 2024
6ada20d
Move test to vm.
ashleypittman Apr 29, 2024
cf31ce9
Reference count the descriptors and free when done.
ashleypittman Apr 29, 2024
d2b9fa9
Merge branch 'master' into amd/dfuse-chunk-read
ashleypittman Apr 29, 2024
f79cb98
Merge branch 'master' into amd/dfuse-chunk-read
ashleypittman Apr 30, 2024
a43df49
Fix formatting.
ashleypittman Apr 30, 2024
fb632ff
Merge branch 'master' into amd/dfuse-chunk-read
ashleypittman May 2, 2024
2bd4256
Fix merge.
ashleypittman May 2, 2024
1810c0a
Merge branch 'master' into amd/dfuse-chunk-read
jolivier23 May 20, 2024
eab66e3
Merge branch 'master' into amd/dfuse-chunk-read
jolivier23 May 30, 2024
b035b8a
Features: dfuse
jolivier23 May 30, 2024
b12800f
Merge branch 'master' into amd/dfuse-chunk-read
jolivier23 May 31, 2024
89822d9
Features: dfuse
jolivier23 May 31, 2024
149b8fc
Merge branch 'master' into amd/dfuse-chunk-read
ashleypittman Sep 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/client/dfuse/dfuse.h
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,7 @@ struct dfuse_event {
union {
struct dfuse_obj_hdl *de_oh;
struct dfuse_inode_entry *de_ie;
struct read_chunk_data *de_cd;
};
off_t de_req_position; /**< The file position requested by fuse */
union {
Expand Down Expand Up @@ -1011,6 +1012,8 @@ struct dfuse_inode_entry {

/* Entry on the evict list */
d_list_t ie_evict_entry;

struct read_chunk_core *ie_chunk;
};

/* Flush write-back cache writes to a inode. It does this by waiting for and then releasing an
Expand Down Expand Up @@ -1108,6 +1111,13 @@ dfuse_compute_inode(struct dfuse_cont *dfs,
void
dfuse_cache_evict_dir(struct dfuse_info *dfuse_info, struct dfuse_inode_entry *ie);

/* Free any read chunk data for an inode.
*
* Returns true if feature was used.
*/
bool
read_chunk_close(struct dfuse_inode_entry *ie);

/* Metadata caching functions. */

/* Mark the cache as up-to-date from now */
Expand Down
7 changes: 6 additions & 1 deletion src/client/dfuse/ops/open.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ dfuse_cb_release(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
struct dfuse_obj_hdl *oh = (struct dfuse_obj_hdl *)fi->fh;
struct dfuse_inode_entry *ie = NULL;
int rc;
uint32_t oc;
uint32_t il_calls;

/* Perform the opposite of what the ioctl call does, always change the open handle count
Expand Down Expand Up @@ -206,7 +207,11 @@ dfuse_cb_release(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi)
if (il_calls != 0) {
atomic_fetch_sub_relaxed(&oh->doh_ie->ie_il_count, 1);
}
atomic_fetch_sub_relaxed(&oh->doh_ie->ie_open_count, 1);
oc = atomic_fetch_sub_relaxed(&oh->doh_ie->ie_open_count, 1);
if (oc == 1) {
if (read_chunk_close(oh->doh_ie))
oh->doh_linear_read = true;
}

if (oh->doh_evict_on_close) {
ie = oh->doh_ie;
Expand Down
Loading
Loading