return -EBADF;
#endif
bufferlist bl;
- /* We can't return bytes written larger than INT_MAX, clamp size to that */
+#if defined(__linux__)
+ /* We can't return bytes written larger than INT_MAX, clamp size to
+ * that or FSCRYPT_MAXIO_SIZE*/
+ Inode *in = f->inode.get();
+ if (in->is_fscrypt_enabled()) {
+ size = std::min(size, (loff_t)FSCRYPT_MAXIO_SIZE);
+ } else {
+ size = std::min(size, (loff_t)INT_MAX);
+ }
+#else
size = std::min(size, (loff_t)INT_MAX);
+#endif
int r = _read(f, offset, size, &bl);
ldout(cct, 3) << "read(" << fd << ", " << (void*)buf << ", " << size << ", " << offset << ") = " << r << dendl;
if (r >= 0) {
if (fh->flags & O_PATH)
return -EBADF;
#endif
- /* We can't return bytes written larger than INT_MAX, clamp size to that */
+#if defined(__linux__)
+ /* We can't return bytes written larger than INT_MAX, clamp size to
+ * that or FSCRYPT_MAXIO_SIZE*/
+ Inode *in = fh->inode.get();
+ if (in->is_fscrypt_enabled()) {
+ size = std::min(size, (loff_t)FSCRYPT_MAXIO_SIZE);
+ } else {
+ size = std::min(size, (loff_t)INT_MAX);
+ }
+#else
size = std::min(size, (loff_t)INT_MAX);
+#endif
bufferlist bl;
bl.append(buf, size);
int r = _write(fh, offset, size, std::move(bl));
*/
bufferlist data;
if (clamp_to_int) {
+#if defined(__linux__)
+ /* We can't return bytes written larger than INT_MAX, clamp size to
+ * that or FSCRYPT_MAXIO_SIZE*/
+ Inode *in = fh->inode.get();
+ if (in->is_fscrypt_enabled()) {
+ totallen = std::min(totallen, (size_t)FSCRYPT_MAXIO_SIZE);
+ } else {
+ totallen = std::min(totallen, (size_t)INT_MAX);
+ }
+#else
totallen = std::min(totallen, (size_t)INT_MAX);
+#endif
size_t total_appended = 0;
for (int i = 0; i < iovcnt; i++) {
if (iov[i].iov_len > 0) {
return -ENOTCONN;
}
+#if defined(__linux__)
+ /* We can't return bytes written larger than INT_MAX, clamp size to
+ * that or FSCRYPT_MAXIO_SIZE*/
+ Inode *in = fh->inode.get();
+ if (in->is_fscrypt_enabled()) {
+ len = std::min(len, (loff_t)FSCRYPT_MAXIO_SIZE);
+ } else {
/* We can't return bytes written larger than INT_MAX, clamp len to that */
+ len = std::min(len, (loff_t)INT_MAX);
+ }
+#else
len = std::min(len, (loff_t)INT_MAX);
-
+#endif
std::scoped_lock lock(client_lock);
if (fh == NULL || !_ll_fh_exists(fh)) {
ldout(cct, 3) << "(fh)" << fh << " is invalid" << dendl;
return -ENOTCONN;
}
- /* We can't return bytes written larger than INT_MAX, clamp len to that */
+#if defined(__linux__)
+ /* We can't return bytes written larger than INT_MAX, clamp size to
+ * that or FSCRYPT_MAXIO_SIZE*/
+ Inode *in = fh->inode.get();
+ if (in->is_fscrypt_enabled()) {
+ len = std::min(len, (loff_t)FSCRYPT_MAXIO_SIZE);
+ } else {
+ len = std::min(len, (loff_t)INT_MAX);
+ }
+#else
len = std::min(len, (loff_t)INT_MAX);
-
+#endif
std::scoped_lock lock(client_lock);
if (fh == NULL || !_ll_fh_exists(fh)) {
ldout(cct, 3) << "(fh)" << fh << " is invalid" << dendl;