From: relan Date: Sat, 24 Dec 2016 08:10:10 +0000 (+0300) Subject: Generic I/O for directories: do not update times. X-Git-Tag: android-x86-9.0-r1~62 X-Git-Url: http://git.osdn.net/view?p=android-x86%2Fexternal-exfat.git;a=commitdiff_plain;h=b130283df8b8597f0ee4e31eb17b4e5d82f12256;hp=13f2af30a74201d3ced2bba2ef6feebeed09c962 Generic I/O for directories: do not update times. --- diff --git a/libexfat/io.c b/libexfat/io.c index d0594be..7d80822 100644 --- a/libexfat/io.c +++ b/libexfat/io.c @@ -316,7 +316,7 @@ ssize_t exfat_generic_pread(const struct exfat* ef, struct exfat_node* node, remainder -= lsize; cluster = exfat_next_cluster(ef, node, cluster); } - if (!ef->ro && !ef->noatime) + if (!(node->attrib & EXFAT_ATTRIB_DIR) && !ef->ro && !ef->noatime) exfat_update_atime(node); return MIN(size, node->size - offset) - remainder; } @@ -372,6 +372,9 @@ ssize_t exfat_generic_pwrite(struct exfat* ef, struct exfat_node* node, remainder -= lsize; cluster = exfat_next_cluster(ef, node, cluster); } - exfat_update_mtime(node); + if (!(node->attrib & EXFAT_ATTRIB_DIR)) + /* directory's mtime should be updated by the caller only when it + creates or removes something in this directory */ + exfat_update_mtime(node); return size - remainder; }