fstrim.c: use open(O_DIRECTORY) instead of stat

open(O_DIRECTORY) returns an error if the open attempt
is against anything other than a directory. This basically
duplicates the check that the stat() call was trying to do.
Eliminate the unnecessary stat() call and use O_DIRECTORY
instead.

Change-Id: I1821abbed325f29a7214fdc41ed27cd9e26817d0
diff --git a/fstrim.c b/fstrim.c
index 2769643..2c24fc9 100644
--- a/fstrim.c
+++ b/fstrim.c
@@ -62,7 +62,6 @@
     int fd;
     int ret = 0;
     struct fstrim_range range = { 0 };
-    struct stat sb;
     extern struct fstab *fstab;
     int deep_trim = !!thread_arg;
 
@@ -90,18 +89,7 @@
             continue; /* Should we trim fat32 filesystems? */
         }
 
-        if (stat(fstab->recs[i].mount_point, &sb) == -1) {
-            SLOGE("Cannot stat mount point %s\n", fstab->recs[i].mount_point);
-            ret = -1;
-            continue;
-        }
-        if (!S_ISDIR(sb.st_mode)) {
-            SLOGE("%s is not a directory\n", fstab->recs[i].mount_point);
-            ret = -1;
-            continue;
-        }
-
-        fd = open(fstab->recs[i].mount_point, O_RDONLY);
+        fd = open(fstab->recs[i].mount_point, O_RDONLY | O_DIRECTORY | O_CLOEXEC | O_NOFOLLOW);
         if (fd < 0) {
             SLOGE("Cannot open %s for FITRIM\n", fstab->recs[i].mount_point);
             ret = -1;