]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge PR #30416 into master
authorPatrick Donnelly <pdonnell@redhat.com>
Wed, 2 Oct 2019 04:23:57 +0000 (21:23 -0700)
committerPatrick Donnelly <pdonnell@redhat.com>
Wed, 2 Oct 2019 04:23:57 +0000 (21:23 -0700)
* 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>
1  2 
src/client/Client.cc

index ded7a77fa26dc840717e8c01ced5d39e2c841b8d,9240e25c9e15ec7b36deda9603baea3befccedec..1a481826645b07ef71d1c2c5322e3cba62567ca7
@@@ -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) {