* refs/pull/30416/head:
client: add procession of SEEK_HOLE and SEEK_DATA in lseek.
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
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) {