f2fs: fix to detect temporary name of multimedia file
authorChao Yu <yuchao0@huawei.com>
Mon, 5 Sep 2016 04:28:27 +0000 (12:28 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 8 Sep 2016 01:53:49 +0000 (18:53 -0700)
Some applications may create multimeida file with temporary name like
'*.jpg.tmp' or '*.mp4.tmp', then rename to '*.jpg' or '*.mp4'.

Now, f2fs can only detect multimedia filename with specified format:
"filename + '.' + extension", so it will make f2fs missing to detect
multimedia file with special temporary name, result in failing to set
cold flag on file.

This patch enhances detection flow for enabling lookup extension in the
middle of temporary filename.

Reported-by: Xue Liu <liuxueliu.liu@huawei.com>
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/namei.c

index 73fa356f8fbb0da2cc6782a310026d6fba3dbdeb..bfcd9da9c2eb22ed39168aee106aea7c3f853fc9 100644 (file)
@@ -91,18 +91,23 @@ static int is_multimedia_file(const unsigned char *s, const char *sub)
 {
        size_t slen = strlen(s);
        size_t sublen = strlen(sub);
+       int i;
 
        /*
         * filename format of multimedia file should be defined as:
-        * "filename + '.' + extension".
+        * "filename + '.' + extension + (optional: '.' + temp extension)".
         */
        if (slen < sublen + 2)
                return 0;
 
-       if (s[slen - sublen - 1] != '.')
-               return 0;
+       for (i = 1; i < slen - sublen; i++) {
+               if (s[i] != '.')
+                       continue;
+               if (!strncasecmp(s + i + 1, sub, sublen))
+                       return 1;
+       }
 
-       return !strncasecmp(s + slen - sublen, sub, sublen);
+       return 0;
 }
 
 /*
This page took 0.025073 seconds and 5 git commands to generate.