On 4/21/22 10:17 PM, David Howells wrote: > Jeffle Xu <jefflexu@xxxxxxxxxxxxxxxxx> wrote: > >> + if (IS_ENABLED(CONFIG_CACHEFILES_ONDEMAND) && >> + !strcmp(args, "ondemand")) { >> + set_bit(CACHEFILES_ONDEMAND_MODE, &cache->flags); >> + } else if (*args) { >> + pr_err("'bind' command doesn't take an argument\n"); > > The error message isn't true if CONFIG_CACHEFILES_ONDEMAND=y. It would be > better to say "Invalid argument to the 'bind' command". Right. Or users may gets confused then. Will be fixed in the next version. > >> -retry: >> /* If the caller asked us to seek for data before doing the read, then >> * we should do that now. If we find a gap, we fill it with zeros. >> */ >> @@ -120,16 +119,6 @@ static int cachefiles_read(struct netfs_cache_resources *cres, >> if (read_hole == NETFS_READ_HOLE_FAIL) >> goto presubmission_error; >> >> - if (read_hole == NETFS_READ_HOLE_ONDEMAND) { >> - ret = cachefiles_ondemand_read(object, off, len); >> - if (ret) >> - goto presubmission_error; >> - >> - /* fail the read if no progress achieved */ >> - read_hole = NETFS_READ_HOLE_FAIL; >> - goto retry; >> - } >> - > Sorry, it's my mistake when doing "git rebase". The previous version (v8) actually calls cachefiles_ondemand_read() in cachefiles_read(). However as explained in the commit message of patch 5 ("cachefiles: implement on-demand read"), fscache_read() can only detect if the requested file range is fully cache miss, whilst it can't detect if it is partial cache miss, i.e. there's a hole inside the requested file range. Thus in this patchset (v9), we move the entry of calling cachefiles_ondemand_read() from cachefiles_read() to cachefiles_prepare_read(). The above "deletion of newly added code" is actually reverting the previous change to cachefiles_read(). It was mistakenly merged to this patch when I was doing "git rebase"... Actually it should be merged to patch 5 ("cachefiles: implement on-demand read"), which initially introduce the change to cachefiles_read(). Apologize for the careless mistake... -- Thanks, Jeffle