<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/exfat/dir.c, branch linux-5.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2021-07-04T00:33:00Z</updated>
<entry>
<title>exfat: handle wrong stream entry size in exfat_readdir()</title>
<updated>2021-07-04T00:33:00Z</updated>
<author>
<name>Namjae Jeon</name>
</author>
<published>2021-06-11T00:40:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1e5654de0f51890f88abd409ebf4867782431e81'/>
<id>urn:sha1:1e5654de0f51890f88abd409ebf4867782431e81</id>
<content type='text'>
The compatibility issue between linux exfat and exfat of some camera
company was reported from Florian. In their exfat, if the number of files
exceeds any limit, the DataLength in stream entry of the directory is
no longer updated. So some files created from camera does not show in
linux exfat. because linux exfat doesn't allow that cpos becomes larger
than DataLength of stream entry. This patch check DataLength in stream
entry only if the type is ALLOC_NO_FAT_CHAIN and add the check ensure
that dentry offset does not exceed max dentries size(256 MB) to avoid
the circular FAT chain issue.

Fixes: ca06197382bd ("exfat: add directory operations")
Cc: stable@vger.kernel.org # v5.9
Reported-by: Florian Cramer &lt;flrncrmr@gmail.com&gt;
Reviewed-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Tested-by: Chris Down &lt;chris@chrisdown.name&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: speed up iterate/lookup by fixing start point of traversing cluster chain</title>
<updated>2021-04-27T11:45:07Z</updated>
<author>
<name>Hyeongseok Kim</name>
</author>
<published>2021-03-22T03:53:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c6e2f52e3051e8d898d38840104638ca8bbcdec2'/>
<id>urn:sha1:c6e2f52e3051e8d898d38840104638ca8bbcdec2</id>
<content type='text'>
When directory iterate and lookup is called, there's a buggy rewinding
of start point for traversing cluster chain to the parent directory
entry's first cluster. This caused repeated cluster chain traversing
from the first entry of the parent directory that would show worse
performance if huge amounts of files exist under the parent directory.
Fix not to rewind, make continue from currently referenced cluster and
dir entry.

Tested with 50,000 files under single directory / 256GB sdcard,
with command "time ls -l &gt; /dev/null",
Before :     0m08.69s real     0m00.27s user     0m05.91s system
After  :     0m07.01s real     0m00.25s user     0m04.34s system

Signed-off-by: Hyeongseok Kim &lt;hyeongseok@gmail.com&gt;
Reviewed-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: improve write performance when dirsync enabled</title>
<updated>2021-04-27T11:45:06Z</updated>
<author>
<name>Hyeongseok Kim</name>
</author>
<published>2021-03-15T04:12:55Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=23befe490ba885bdf757d40b2489134315fef690'/>
<id>urn:sha1:23befe490ba885bdf757d40b2489134315fef690</id>
<content type='text'>
Degradation of write speed caused by frequent disk access for cluster
bitmap update on every cluster allocation could be improved by
selective syncing bitmap buffer. Change to flush bitmap buffer only
for the directory related operations.

Signed-off-by: Hyeongseok Kim &lt;hyeongseok@gmail.com&gt;
Acked-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: add support ioctl and FITRIM function</title>
<updated>2021-04-27T11:45:06Z</updated>
<author>
<name>Hyeongseok Kim</name>
</author>
<published>2021-03-04T00:20:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=654762df2ec7d61b05acc788afbffaba52d658fe'/>
<id>urn:sha1:654762df2ec7d61b05acc788afbffaba52d658fe</id>
<content type='text'>
Add FITRIM ioctl to enable discarding unused blocks while mounted.
As current exFAT doesn't have generic ioctl handler, add empty ioctl
function first, and add FITRIM handler.

Signed-off-by: Hyeongseok Kim &lt;hyeongseok@gmail.com&gt;
Reviewed-by: Chaitanya Kulkarni &lt;chaitanya.kulkarni@wdc.com&gt;
Acked-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: remove 'rwoffset' in exfat_inode_info</title>
<updated>2020-10-21T23:29:11Z</updated>
<author>
<name>Tetsuhiro Kohada</name>
</author>
<published>2020-09-17T01:39:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=04cee52fb8bdbdb0506460f191ed6fd9e6faf00b'/>
<id>urn:sha1:04cee52fb8bdbdb0506460f191ed6fd9e6faf00b</id>
<content type='text'>
Remove 'rwoffset' in exfat_inode_info and replace it with the parameter of
exfat_readdir().
Since rwoffset is referenced only by exfat_readdir(), it is not necessary
a exfat_inode_info's member.
Also, change cpos to point to the next of entry-set, and return the index
of dir-entry via dir_entry-&gt;entry.

Signed-off-by: Tetsuhiro Kohada &lt;kohada.t2@gmail.com&gt;
Acked-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: replace memcpy with structure assignment</title>
<updated>2020-10-21T23:29:11Z</updated>
<author>
<name>Tetsuhiro Kohada</name>
</author>
<published>2020-09-11T04:45:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a7a241686c8f8142afafbd5fa5b9b9b6ea1aa173'/>
<id>urn:sha1:a7a241686c8f8142afafbd5fa5b9b9b6ea1aa173</id>
<content type='text'>
Use structure assignment instead of memcpy.

Signed-off-by: Tetsuhiro Kohada &lt;kohada.t2@gmail.com&gt;
Acked-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: eliminate dead code in exfat_find()</title>
<updated>2020-10-21T23:29:11Z</updated>
<author>
<name>Tetsuhiro Kohada</name>
</author>
<published>2020-09-02T07:53:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=188df41f212c9282f6cb05b832383ffca3c66893'/>
<id>urn:sha1:188df41f212c9282f6cb05b832383ffca3c66893</id>
<content type='text'>
The exfat_find_dir_entry() called by exfat_find() doesn't return -EEXIST.
Therefore, the root-dir information setting is never executed.

Signed-off-by: Tetsuhiro Kohada &lt;kohada.t2@gmail.com&gt;
Acked-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: add error check when updating dir-entries</title>
<updated>2020-08-11T23:31:12Z</updated>
<author>
<name>Tetsuhiro Kohada</name>
</author>
<published>2020-06-24T00:54:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8b0c471773819c8201dc0b0123e1580639ee1570'/>
<id>urn:sha1:8b0c471773819c8201dc0b0123e1580639ee1570</id>
<content type='text'>
Add error check when synchronously updating dir-entries.

Suggested-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Tetsuhiro Kohada &lt;kohada.t2@gmail.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: write multiple sectors at once</title>
<updated>2020-08-11T23:31:11Z</updated>
<author>
<name>Tetsuhiro Kohada</name>
</author>
<published>2020-06-23T06:22:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3db3c3fb840ed4a6c7666d1464959edd40fe54f1'/>
<id>urn:sha1:3db3c3fb840ed4a6c7666d1464959edd40fe54f1</id>
<content type='text'>
Write multiple sectors at once when updating dir-entries.
Add exfat_update_bhs() for that. It wait for write completion once
instead of sector by sector.
It's only effective if sync enabled.

Signed-off-by: Tetsuhiro Kohada &lt;kohada.t2@gmail.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
<entry>
<title>exfat: remove EXFAT_SB_DIRTY flag</title>
<updated>2020-08-11T23:31:10Z</updated>
<author>
<name>Tetsuhiro Kohada</name>
</author>
<published>2020-06-16T02:18:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2c7f8937ef91520a8a4bd700d5817b5e9c99803c'/>
<id>urn:sha1:2c7f8937ef91520a8a4bd700d5817b5e9c99803c</id>
<content type='text'>
This flag is set/reset in exfat_put_super()/exfat_sync_fs()
to avoid sync_blockdev().
- exfat_put_super():
Before calling this, the VFS has already called sync_filesystem(),
so sync is never performed here.
- exfat_sync_fs():
After calling this, the VFS calls sync_blockdev(), so, it is meaningless
to check EXFAT_SB_DIRTY or to bypass sync_blockdev() here.

Remove the EXFAT_SB_DIRTY check to ensure synchronization.
And remove the code related to the flag.

Signed-off-by: Tetsuhiro Kohada &lt;kohada.t2@gmail.com&gt;
Reviewed-by: Sungjong Seo &lt;sj1557.seo@samsung.com&gt;
Signed-off-by: Namjae Jeon &lt;namjae.jeon@samsung.com&gt;
</content>
</entry>
</feed>
