diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php
index a94840ead59a4b1156429873defa32b471de9d14..80b44a4cbdf93a0296f97d430248ad6f1cbc38e6 100644
--- a/apps/files_external/lib/smb.php
+++ b/apps/files_external/lib/smb.php
@@ -33,6 +33,7 @@ use Icewind\SMB\Exception\Exception;
 use Icewind\SMB\Exception\NotFoundException;
 use Icewind\SMB\NativeServer;
 use Icewind\SMB\Server;
+use Icewind\Streams\CallbackWrapper;
 use Icewind\Streams\IteratorDirectory;
 use OC\Files\Filesystem;
 
@@ -189,7 +190,10 @@ class SMB extends Common {
 					return $this->share->read($fullPath);
 				case 'w':
 				case 'wb':
-					return $this->share->write($fullPath);
+					$source = $this->share->write($fullPath);
+					return CallBackWrapper::wrap($source, null, null, function () use ($fullPath) {
+						unset($this->statCache[$fullPath]);
+					});
 				case 'a':
 				case 'ab':
 				case 'r+':
@@ -219,7 +223,8 @@ class SMB extends Common {
 					}
 					$source = fopen($tmpFile, $mode);
 					$share = $this->share;
-					return CallBackWrapper::wrap($source, null, null, function () use ($tmpFile, $fullPath, $share) {
+					return CallbackWrapper::wrap($source, null, null, function () use ($tmpFile, $fullPath, $share) {
+						unset($this->statCache[$fullPath]);
 						$share->put($tmpFile, $fullPath);
 						unlink($tmpFile);
 					});
diff --git a/tests/lib/files/storage/storage.php b/tests/lib/files/storage/storage.php
index d381b4cdf403ccc0438f80c38fe1cae1dabb90e3..95dd70bfdacb8bc906e41a851dbad99a6ee4e6b9 100644
--- a/tests/lib/files/storage/storage.php
+++ b/tests/lib/files/storage/storage.php
@@ -598,4 +598,17 @@ abstract class Storage extends \Test\TestCase {
 		$this->instance->mkdir('source');
 		$this->assertTrue($this->instance->isSharable('source'));
 	}
+
+	public function testStatAfterWrite() {
+		$this->instance->file_put_contents('foo.txt', 'bar');
+		$stat = $this->instance->stat('foo.txt');
+		$this->assertEquals(3, $stat['size']);
+
+		$fh = $this->instance->fopen('foo.txt', 'w');
+		fwrite($fh, 'qwerty');
+		fclose($fh);
+
+		$stat = $this->instance->stat('foo.txt');
+		$this->assertEquals(6, $stat['size']);
+	}
 }