From: Jeff Layton Date: Mon, 24 Oct 2016 14:03:00 +0000 (-0400) Subject: client: plumb a "lazy" arg into _readdir_cache_cb and readdir_r_cb X-Git-Tag: v11.1.0~383^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=57fe4da2a72b923346c7e845661520c015fa1078;p=ceph.git client: plumb a "lazy" arg into _readdir_cache_cb and readdir_r_cb ...that defaults to true since that's what most of the callers want. Signed-off-by: Jeff Layton --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 340f88696e8c..78504dffc4bb 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -7324,7 +7324,7 @@ struct dentry_off_lt { } }; -int Client::_readdir_cache_cb(dir_result_t *dirp, add_dirent_cb_t cb, void *p) +int Client::_readdir_cache_cb(dir_result_t *dirp, add_dirent_cb_t cb, void *p, bool lazy) { assert(client_lock.is_locked()); ldout(cct, 10) << "_readdir_cache_cb " << dirp << " on " << dirp->inode->ino @@ -7397,7 +7397,7 @@ int Client::_readdir_cache_cb(dir_result_t *dirp, add_dirent_cb_t cb, void *p) return 0; } -int Client::readdir_r_cb(dir_result_t *d, add_dirent_cb_t cb, void *p) +int Client::readdir_r_cb(dir_result_t *d, add_dirent_cb_t cb, void *p, bool lazy) { Mutex::Locker lock(client_lock); @@ -7467,7 +7467,7 @@ int Client::readdir_r_cb(dir_result_t *d, add_dirent_cb_t cb, void *p) if (dirp->inode->snapid != CEPH_SNAPDIR && dirp->inode->is_complete_and_ordered() && dirp->inode->caps_issued_mask(CEPH_CAP_FILE_SHARED)) { - int err = _readdir_cache_cb(dirp, cb, p); + int err = _readdir_cache_cb(dirp, cb, p, lazy); if (err != -EAGAIN) return err; } diff --git a/src/client/Client.h b/src/client/Client.h index c3e6ffdfc077..b19f41434bd2 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -727,7 +727,7 @@ private: void _readdir_next_frag(dir_result_t *dirp); void _readdir_rechoose_frag(dir_result_t *dirp); int _readdir_get_frag(dir_result_t *dirp); - int _readdir_cache_cb(dir_result_t *dirp, add_dirent_cb_t cb, void *p); + int _readdir_cache_cb(dir_result_t *dirp, add_dirent_cb_t cb, void *p, bool lazy); void _closedir(dir_result_t *dirp); // other helpers @@ -952,7 +952,7 @@ public: * Returns 0 if it reached the end of the directory. * If @a cb returns a negative error code, stop and return that. */ - int readdir_r_cb(dir_result_t *dirp, add_dirent_cb_t cb, void *p); + int readdir_r_cb(dir_result_t *dirp, add_dirent_cb_t cb, void *p, bool lazy=true); struct dirent * readdir(dir_result_t *d); int readdir_r(dir_result_t *dirp, struct dirent *de);