ceph: update the time stamps and try to drop the suid/sgid
[platform/kernel/linux-rpi.git] / fs / ceph / file.c
index b5cff85..dc39a4b 100644 (file)
@@ -2102,6 +2102,9 @@ static long ceph_fallocate(struct file *file, int mode,
        loff_t endoff = 0;
        loff_t size;
 
+       dout("%s %p %llx.%llx mode %x, offset %llu length %llu\n", __func__,
+            inode, ceph_vinop(inode), mode, offset, length);
+
        if (mode != (FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE))
                return -EOPNOTSUPP;
 
@@ -2136,6 +2139,10 @@ static long ceph_fallocate(struct file *file, int mode,
        if (ret < 0)
                goto unlock;
 
+       ret = file_modified(file);
+       if (ret)
+               goto put_caps;
+
        filemap_invalidate_lock(inode->i_mapping);
        ceph_fscache_invalidate(inode, false);
        ceph_zero_pagecache_range(inode, offset, length);
@@ -2151,6 +2158,7 @@ static long ceph_fallocate(struct file *file, int mode,
        }
        filemap_invalidate_unlock(inode->i_mapping);
 
+put_caps:
        ceph_put_cap_refs(ci, got);
 unlock:
        inode_unlock(inode);