OSDN Git Service

Generic I/O for directories: do not update times.
authorrelan <relan@users.noreply.github.com>
Sat, 24 Dec 2016 08:10:10 +0000 (11:10 +0300)
committerrelan <relan@users.noreply.github.com>
Mon, 16 Jan 2017 06:29:08 +0000 (09:29 +0300)
libexfat/io.c

index d0594be..7d80822 100644 (file)
@@ -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;
 }