summaryrefslogtreecommitdiff
path: root/media/java/android/mtp/MtpDatabase.java
diff options
context:
space:
mode:
authorJerry Zhang <zhangjerry@google.com>2018-05-14 12:19:08 -0700
committerJerry Zhang <zhangjerry@google.com>2018-05-15 12:29:13 -0700
commitd470a1eca6ec47fe09513e40788e0abea3d12c1f (patch)
tree4204f045ecbbe3bbf06acd12b16451ee68cb52dd /media/java/android/mtp/MtpDatabase.java
parent14de2930ba6a9d23a746e354b41bd9ede544eee7 (diff)
Call access(2) on all files/dirs modified by Mtp
External sdcards are accessed through /mnt/media_rw, so access() each touched file for sdcardfs to update its metadata. Java handles single object renames directly so that is the only place where it is needed. Bug: 77849654 Test: use mtp with emulated sdcard Change-Id: Ie460398010f1fe74d8084808a6333b121674362c
Diffstat (limited to 'media/java/android/mtp/MtpDatabase.java')
-rwxr-xr-xmedia/java/android/mtp/MtpDatabase.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java
index 7976f67c64a8..e568ef79b4cc 100755
--- a/media/java/android/mtp/MtpDatabase.java
+++ b/media/java/android/mtp/MtpDatabase.java
@@ -35,6 +35,9 @@ import android.provider.MediaStore;
import android.provider.MediaStore.Audio;
import android.provider.MediaStore.Files;
import android.provider.MediaStore.MediaColumns;
+import android.system.ErrnoException;
+import android.system.Os;
+import android.system.OsConstants;
import android.util.Log;
import android.view.Display;
import android.view.WindowManager;
@@ -560,6 +563,13 @@ public class MtpDatabase implements AutoCloseable {
return MtpConstants.RESPONSE_GENERAL_ERROR;
Path newPath = obj.getPath();
boolean success = oldPath.toFile().renameTo(newPath.toFile());
+ try {
+ Os.access(oldPath.toString(), OsConstants.F_OK);
+ Os.access(newPath.toString(), OsConstants.F_OK);
+ } catch (ErrnoException e) {
+ // Ignore. Could fail if the metadata was already updated.
+ }
+
if (!mManager.endRenameObject(obj, oldPath.getFileName().toString(), success)) {
Log.e(TAG, "Failed to end rename object");
}