diff -Nurp a/src/client/Client.cc b/src/client/Client.cc --- a/src/client/Client.cc 2021-03-31 11:30:56.249817026 +0100 +++ b/src/client/Client.cc 2021-03-31 11:35:17.928535423 +0100 @@ -8987,8 +8987,27 @@ loff_t Client::_lseek(Fh *f, loff_t offs { Inode *in = f->inode.get(); loff_t pos = -1; + bool whence_check = false; - if (whence == SEEK_END || whence == SEEK_DATA || whence == SEEK_HOLE) { + switch (whence) { + case SEEK_END: + whence_check = true; + break; + +#ifdef SEEK_DATA + case SEEK_DATA: + whence_check = true; + break; +#endif + +#ifdef SEEK_HOLE + case SEEK_HOLE: + whence_check = true; + break; +#endif + } + + if (whence_check) { int r = _getattr(in, CEPH_STAT_CAP_SIZE, f->actor_perms); if (r < 0) return r; @@ -9007,17 +9026,21 @@ loff_t Client::_lseek(Fh *f, loff_t offs pos = in->size + offset; break; +#ifdef SEEK_DATA case SEEK_DATA: if (offset < 0 || offset >= in->size) return -ENXIO; pos = offset; break; +#endif +#ifdef SEEK_HOLE case SEEK_HOLE: if (offset < 0 || offset >= in->size) return -ENXIO; pos = in->size; break; +#endif default: ldout(cct, 1) << __func__ << ": invalid whence value " << whence << dendl;