From: Patrick Donnelly Date: Wed, 2 Oct 2019 04:23:57 +0000 (-0700) Subject: Merge PR #30416 into master X-Git-Tag: v15.1.0~1352 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3ec16fee44ec5e87fb2e8fab9ddb759323a2abdc;p=ceph.git Merge PR #30416 into master * refs/pull/30416/head: client: add procession of SEEK_HOLE and SEEK_DATA in lseek. Reviewed-by: Jeff Layton Reviewed-by: Patrick Donnelly --- 3ec16fee44ec5e87fb2e8fab9ddb759323a2abdc diff --cc src/client/Client.cc index ded7a77fa26,9240e25c9e1..1a481826645 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@@ -8911,12 -8926,25 +8918,26 @@@ loff_t Client::_lseek(Fh *f, loff_t off pos = in->size + offset; break; + case SEEK_DATA: + if (offset < 0 || offset >= in->size) { + r = -ENXIO; + return offset; + } + pos = offset; + break; + + case SEEK_HOLE: + if (offset < 0 || offset >= in->size) { + r = -ENXIO; + pos = offset; + } else { + pos = in->size; + } + break; + default: - ceph_abort(); + ldout(cct, 1) << __func__ << ": invalid whence value " << whence << dendl; + return -EINVAL; } if (pos < 0) {